Convert Engine OS playlists to Rekordbox XML - locally, for free.
A weekend vibecode project done with AI Loops. Not a product. Not advice on how to build software. Just a utility that serves me and hopefully other DJs.
Reads an Engine OS 5.0.0 SQLite library (m.db) and writes Rekordbox 7.2.16-compatible XML with track metadata, cues, and playlist order.
I'm a musician and DJ. There's no one-size-fits-all setup for DJing - the field has strong players, and each one wants your library locked to their ecosystem. Moving between them is painful.
I've used Engine OS for years. In clubs, the standard is AlphaTheta and Rekordbox - great hardware, rough software. I was paying ~$10/month for a playlist converter and thought that was ridiculous.
Around the same time, two ideas clicked: SaaS feels increasingly replaceable by AI tooling, and AI loop-driven development was starting to look real. I wanted to try it myself - not as a vibecoder, but as someone who normally prefers supervised, human-crafted coding with AI as a helper.
AI is excellent for prototyping, validating ideas, and replicating existing software behavior. That's exactly what this project is: take library A, produce library B, and let the loops reverse-engineer how.
- Fable - bootstrapped the AI loop workflow (
ai/), collected context, set up the spec and backlog. - Codex - planned the converter logic and business rules; asked clarifying questions along the way.
- Opus 4.8 - reviewed the plan and verified everything was ready for loop runs.
- Fable - reverse-engineered the core conversion for the first playlists against a golden reference.
- OpenCode - polished the remaining playlists that didn't convert cleanly.
- Composer 2.5 - built the simple UI on top.
The loop protocol lives in ai/LOOP.md. The target behavior is in ai/SPEC.md.
Validated against a golden reference exported by one of the paid converters for two playlists. Built on Node.js with better-sqlite3, fast-xml-parser, and xmlbuilder2.
Feel free to shoot a prompt to compile Windows version. It should be fairly easy.
CLI
node convert.jsOutput goes to output/rekordbox.xml.
Tests
npm testUI (optional - React + local server)
npm install
npm run devOpens the UI at http://localhost:8787.
Desktop app (macOS)
npm run electron:dev- Personal project, built for my own library paths and playlists.
- Replicates paid conversion behavior for a specific fixture - not a general-purpose Engine → Rekordbox tool.
- Beat-grid
TEMPOdata is not emitted (seeai/SPEC.mdfor why). - Use at your own risk. Back up your library before importing anything into Rekordbox.
Private / personal use. No warranty.