Finding where songs start inside a DJ mix
The product question behind Cue is simple: where does each song start inside a mix? Answering it well turned out to be a measurement problem first. There is no ground truth, only the timestamps DJs publish, and even humans disagree by about nine seconds.
- Data
- 8 public mixes · 190 DJ-published boundaries
- Method
- Fingerprints + transition detector + preview alignment
- Code
- cue-engine, open source, CPU only
What I found
Against 190 DJ-published boundaries in eight public mixes, the full system placed 99 within 10 seconds and 144 within 30; fingerprints alone placed 62 within 10.
Cut-style mixes hit a 3-second median error on hardstyle and 6 seconds on dancehall; peak-time house sat at a 39-second median.
With no fingerprint service, preview alignment plus the page’s titles scored 20 of 24 within 20 seconds on the dancehall mix.
Multimodal language models placed boundaries no better than a novelty curve; beat-grid snapping changed nothing; three times more minute-resolution labels gave no clear gain.
The central idea
Report accuracy by genre and by tolerance window, against the labels people actually publish. A single number would have hidden that cut-style mixes are solved and beat-matched blends are not.
- 01Read the tracklist
- 02Fingerprint the mix
- 03Align preview clips
- 04Place the cut
- 05Score against DJ timestamps
Contents
The label is a human guess too
DJ mixes have no canonical boundaries. A beat-matched blend can run thirty seconds with two songs audible; the DJ who typed the tracklist picked one moment. Published inter-annotator disagreement on DJ-mix boundaries is about 9 seconds, so any score within that band is at the level of a person, and precision beyond it is not measurable with these labels.
That shaped the evaluation: boundaries scored within 10, 20 and 30 seconds of the DJ’s timestamp, per mix and per genre, with the fingerprint-only baseline reported beside the full system on the same mixes.
Three anchors that know different things
Fingerprinting identifies which song is playing and roughly when it was first heard, but its offsets are late and jittery inside a blend. A small transition detector, trained on the public DJ Mix Dataset, does not know which song is which but is good at where the cut is; placed just before the fingerprint’s first sighting it gives the exact start. Free 30-second preview clips of the tracklist’s titles, aligned into the mix with tempo-tolerant chroma DTW, anchor songs with no fingerprint service at all; published tracklists name remixes correctly and set the song count when nothing fingerprints.
A resolver combines them with a fixed order of trust: a DJ-typed timestamp beats everything, then fingerprint plus detector, then alignment, then the detector alone.
Per-genre results
Boundaries within each window, per mix, against the DJ’s published timestamps. The last column is what fingerprint offsets alone achieve within 10 seconds on the same mix.
| Mix (genre) | Songs | Within 10 s | Within 20 s | Within 30 s | Median error | Fingerprints alone, within 10 s |
|---|---|---|---|---|---|---|
| Dancehall | 24 | 20 | 21 | 23 | 6 s | 17 |
| Ragga jungle | 19 | 10 | 16 | 17 | 10 s | 6 |
| Peak-time house | 21 | 4 | 7 | 7 | 39 s | 4 |
| Live set, 2.5 h melodic house | 28 | 9 | 11 | 19 | 24 s | 9 |
| Melodic house live set | 18 | 10 | 12 | 14 | 10 s | 6 |
| B2B progressive live set | 18 | 7 | 9 | 11 | 22 s | 3 |
| Berlin house and techno | 13 | 5 | 7 | 9 | 19 s | 2 |
| Euphoric hardstyle, 50 tracks | 49 | 34 | 40 | 44 | 3 s | 15 |
| All | 190 | 99 | 123 | 144 | 62 |
How to read that table
Cut-style mixes are solved to the limit of the labels: hardstyle at a 3-second median, dancehall at 6. Long beat-matched house blends are not: a 39-second median on peak-time house means the engine is in the right neighbourhood and no better, and the fingerprint baseline is nearly as good there because the blend itself is the ambiguity. Reporting one aggregate, 99 of 190 within 10 seconds, would have hidden both facts.
Without any fingerprint service, preview alignment plus the page’s titles scores 20 of 24 within 20 seconds on the dancehall mix, and is weak on remixes, where the preview clip is a different recording. The detector alone, with no catalogue, is well behind fingerprints on catalogue songs and is the fallback of last resort.
What did not help, measured
Three ideas were tried and recorded as negative results rather than dropped quietly:
- Multimodal language models listening to the audio placed boundaries no better than a novelty curve, and invented song titles.
- Snapping boundaries to a beat grid changed nothing against DJ-typed timestamps.
- Retraining the transition detector on three times more minute-resolution labels gave no clear gain. Label precision, not data volume, is the limit.
What the measurement changed in the product
The player treats a detected start as a draft: marks can be corrected by hand while listening, and a pasted tracklist or embedded chapters always override detection. The engine writes ordinary MP4 chapters so that nothing about the mix file is proprietary, and the right long-term source of truth is the DJ publishing a cue sheet, not a better detector.
The fingerprint provider is a boundary I keep explicit: one service is licensed for application use, the unofficial client is personal-use only and stays out of any distributed build. Being precise about that is part of publishing the engine at all.
Questions about this note? Get in touch.
sipratt@gmail.com