A test rig for the Rekordbox integration, run entirely in the browser. The question it answers: how few times does a DJ have to do anything for us to import their collection and keep it in sync. Answer: once. One XML export names the folders and the crates; after that the music folder alone carries the audio, the tags and — through file size and modified date — everything needed to spot what changed. No agent to install, and no second export.
Export it once: in Rekordbox, File → Export Collection in xml format. This is the only manual step in the whole flow, and it is a one-off — not something to repeat whenever the library changes. It buys two things: the exact folders your music lives in, which is how step 2 knows what to ask for, and the crates and ratings, which no folder on disk can tell us.
The paths from step 1 appear below — drag that folder in, and from then on this is the only source. The page keeps the handle, fingerprints every file by size and modified date, and Rescan reports exactly what a sync run would touch. No second export, ever.
Skipped step 1? Then pick the folder yourself — the dialog opens in your Music folder. Folders add up rather than replace, so a library split over an internal drive and an SSD just needs each one dropped in turn.
Without the XML, everything known about a track before analysing it comes out of the file's own tags — ID3 in MP3 and AIFF, Vorbis comments in FLAC, atoms in M4A. This coverage is the number that decides the design: it is all the catalogue match has to work with, and it is what says how many files need analysing at all.
The analyser eats 16 kHz mono. So the browser decodes the file, resamples it
(OfflineAudioContext) and encodes Opus (WebCodecs) — which is what would actually go
over the wire. Measured per track: decode time, encode time, bytes out.
Extrapolated from the measurements above. The share already in the catalogue is the biggest lever — those tracks are never uploaded, so the metadata match has to run before any transcoding.
showDirectoryPicker does not exist in Safari or
Firefox, so those fall back to a plain folder chooser that cannot be stored — no rescan, and a re-pick on
every visit. The capability row at the top says what this browser has.Type is inverted between the two Rekordbox sources. In the XML a
NODE of Type=0 is a folder and Type=1 a playlist; in
master.db, djmdPlaylist.Attribute reads 0 = playlist, 1 = folder. An easy way to
build the tree upside down./rekordbox-bridge/ in digdeeper-experiments. No network calls.
Clear site data to make it forget the folder.