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

  1. 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.

  2. 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.

  3. With no fingerprint service, preview alignment plus the page’s titles scored 20 of 24 within 20 seconds on the dancehall mix.

  4. 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.

  1. 01Read the tracklist
  2. 02Fingerprint the mix
  3. 03Align preview clips
  4. 04Place the cut
  5. 05Score against DJ timestamps
The resolver’s order of evidence · a published timestamp always wins over a detector
Contents
  1. What I found
  2. The label is a human guess too
  3. Three anchors that know different things
  4. Per-genre results
  5. How to read that table
  6. What did not help, measured
  7. What the measurement changed in the product
  8. Sources & scope

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.

Blind scores against DJ-published timestamps · eight public mixes · from the app README, September 2026
Mix (genre)SongsWithin 10 sWithin 20 sWithin 30 sMedian errorFingerprints alone, within 10 s
Dancehall242021236 s17
Ragga jungle1910161710 s6
Peak-time house2147739 s4
Live set, 2.5 h melodic house289111924 s9
Melodic house live set1810121410 s6
B2B progressive live set18791122 s3
Berlin house and techno1357919 s2
Euphoric hardstyle, 50 tracks493440443 s15
All1909912314462

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