Skip to content

mo3moha/relay

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

relay

DJ library bridge. Convert between Rekordbox, Traktor, and M3U from the command line.

$ relay convert library.xml --from rekordbox --to traktor -o collection.nml
Reading rekordbox...
Converting rekordbox → traktor...
✓ 847 tracks converted
✓ 12 playlists

Output: collection.nml

Why

Switching DJ software shouldn't mean losing your library. Lexicon charges $15/month. DJCU is Mac-only. dj-data-converter requires Clojure. relay is free, runs everywhere Node runs, and does one thing well.

Install

npm i -g @mo3moha/relay

Commands

# Convert between formats
relay convert library.xml --from rekordbox --to traktor -o collection.nml
relay convert collection.nml --from traktor --to rekordbox -o library.xml
relay convert library.xml --from rekordbox --to m3u -o ./playlists/

# Inspect a library
relay inspect library.xml --from rekordbox

# Library statistics
relay stats library.xml --from rekordbox

# Export to JSON (for scripting / AI tools)
relay export library.xml --from rekordbox -o library.json

Supported Formats

Format Read Write Extension
Rekordbox XML yes yes .xml
Traktor NML yes yes .nml
M3U / M3U8 yes yes .m3u .m3u8
relay JSON yes yes .json

What Gets Converted

Data Rekordbox ↔ Traktor → M3U
Track metadata (artist, title, album, genre) yes title + artist
BPM yes no
Musical key (Camelot) yes no
Cue points yes no
Hot cues (A-H) yes no
Loops yes no
Playlists (with folders) yes yes
Rating yes no
Play count yes no
Comments yes no

What Doesn't Convert (Yet)

  • Beat grids / tempo maps
  • Serato crates (binary format)
  • Rekordbox 6+ database (encrypted SQLite)
  • CDJ USB export (PDB/ANLZ)
  • Waveform data

JSON Export

The export command outputs a universal JSON format that's easy to script or pipe to AI tools:

{
  "format": "relay",
  "version": "1.0.0",
  "tracks": [
    {
      "location": "/music/track.mp3",
      "title": "Lost Code",
      "artist": "Hagan",
      "bpm": 128.0,
      "key": "9A",
      "duration": 253,
      "cues": [{ "position": 32.5, "type": "cue", "hotcue": 0 }],
      "loops": []
    }
  ],
  "playlists": [...]
}

Technical Notes

  • Cue point positions: Traktor stores in milliseconds, Rekordbox in seconds. relay handles the conversion.
  • Hot cue indexing: Traktor uses 1-8, Rekordbox uses 0-7. relay normalizes to 0-7.
  • Musical keys: Normalized to Camelot notation (1A-12B) as intermediate.
  • File paths: URI encoding/decoding handled automatically.
  • Traktor directory format (:colon: separated) converted to standard paths.

License

MIT


Built by moha — DJ Cherry Boy

About

DJ library bridge. Convert between Rekordbox, Traktor, and M3U from the command line. TypeScript CLI. MIT.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors