{"schema_version":"1","site":"https://decosa.ai","id":"mix-cue-sheet","num":"180","name":"Mix cue sheet","tool_name":"Find the songs in your mix","short":"Mix cue sheet","blurb":"Drop in a DJ mix or any long recording, with the tracklist if you have it and the track files you played if you want exact starts. Every song start appears on the timeline; click one and the player jumps there. You get a timestamped tracklist to paste under your YouTube, Mixcloud or SoundCloud upload, a chaptered .m4a your phone skips song by song, and a signed cue sheet that names the audio it describes. It runs on CPU with no model call, and it only names songs you give it a title or a file for.","status":"live","labels":{"industry":["music","creative-media"],"job":["transcribe"],"input":["files","text"],"deploy":["hosted","selfhost"],"status":"live","output":["data","media"],"data":["confidential"],"hardware":"cpu","licence":"permissive"},"industries":["music","creative-media"],"runs_in":["hosted","selfhost"],"part_of":["studio-music"],"built_from":["song-starts","signed-record"],"models":"No model call: the decosa-cue engine (numpy, Apache-2.0) and a landmark matcher for your own track files, both on CPU","where":"Hosted or self-host","hardware":"Any CPU; no GPU","final_artifact":"A timestamped tracklist (text), a chaptered .m4a with one chapter per song, and a signed cue sheet (JSON, verifiable at /record/verify).","self_host_first":false,"verification":{"receipt_coverage":"none","summary":"Signed cue sheet naming the audio's SHA-256, checkable at /record/verify","manual_qa":{"hosted":{"date":"2026-09-29","result":"pass","p50_ms":6960,"p95_ms":7340,"runs":5,"receipts_per_run":0,"cost_per_run_usd":0},"selfhost":null,"known_limits":["It names only songs you give a title or a file for; there is no catalogue lookup on the hosted tool.","Titles without times or files are placed from the audio alone and marked estimated: 84 of 105 within 10 s on held-out synthetic mixes, but 61 of 190 on real DJ mixes with long blends.","Audio alone, with no titles and no files, finds few starts (19 of 105 within 10 s); it is not offered as a mode on its own.","The learned transition detector is off on the hosted tool (unlicensed training audio)."],"nightly_covers":null},"nightly":"https://api.decosa.ai/verify/status"},"eval_summary":{"metrics":[{"name":"Song starts within 10 s, with your track files","value":"105/105 (92/105 within 5 s, 24/105 within 1 s)","unit":null,"n":105,"split":"test","note":"105 starts predicted. Time per 5-minute mix: p50 4.46 s, p95 6.26 s."},{"name":"Song starts within 10 s, titles only (the hosted default)","value":"84/105 (51/105 within 5 s, 15/105 within 1 s)","unit":null,"n":105,"split":"test","note":"The tracklist without times. Time per 5-minute mix: p50 0.85 s, p95 1.25 s."},{"name":"Song starts within 1 / 5 / 10 s, audio only","value":"3/105 / 10/105 / 19/105","unit":null,"n":105,"split":"test","note":"Only 20 starts predicted: not useful on its own."},{"name":"By join, with your track files (within 5 s / 10 s, of 35 each)","value":"cuts 23 / 31, crossfades 31 / 35, blends 33 / 35","unit":null,"n":105,"split":"test","note":null},{"name":"By join, titles only (within 5 s / 10 s, of 35 each)","value":"cuts 26 / 30, crossfades 11 / 30, blends 14 / 24","unit":null,"n":105,"split":"test","note":null},{"name":"Learned detector on (self-host): within 10 s, titles only / with track files","value":"61/105 / 85/105","unit":null,"n":105,"split":"test","note":"Not better on these short synthetic songs; it helps on real long mixes (dev set)."},{"name":"Starts within 10 / 20 / 30 s, titles only, detector off (hosted setting)","value":"61 / 75 / 86 of 190","unit":null,"n":190,"split":"dev","note":"Within 5 s: 40. No track files and no times: every start is placed from the audio."},{"name":"Starts within 10 / 20 / 30 s, titles only, detector on","value":"57 / 73 / 81 of 190","unit":null,"n":190,"split":"dev","note":null},{"name":"Starts within 10 / 20 / 30 s, audio only, detector off / on","value":"59 / 70 / 81 vs 78 / 104 / 129 of 190","unit":null,"n":190,"split":"dev","note":"With the detector on, 358 starts were predicted for 190 real ones."},{"name":"Starts within 10 / 20 / 30 s with a fingerprint service's identifications, titles and the detector","value":"99 / 123 / 144 of 190","unit":null,"n":190,"split":"dev","note":"Within 1 s: 26; within 5 s: 74; 277 predicted starts. Detector off: 70 / 95 / 146. The identifications came from a fingerprint service that is not part of the product. This setting reproduces the original engine's numbers exactly."}],"dataset":"Held out: 20 synthetic mixes built from 19 of Decosa's own Make a song songs (60 s each, similarity check clear), 105 song starts, 99 minutes of audio; each song played at 0.96-1.04 speed and trimmed 0-6 s; joins are cuts, crossfades (4-12 s) and bass-swap blends (12-24 s), 35 of each. Development: 8 public DJ mixes with 190 song starts from their published timed tracklists (mixes and DJs not named).","held_out":true,"caveats":["The held-out mixes are synthetic, built from 60-second songs, not real DJ mixes.","The same author wrote the mixer and the engine.","Each test song appears in about 5 of the 20 mixes.","Every threshold was frozen on a separate dev split before the test set was built; the test set was run once.","The public-mix numbers are a development set, not held out: the original engine's settings were chosen while looking at them. Real DJ mixes with long blends are harder (61 of 190 within 10 s from titles alone).","DJs' own timestamps disagree by about 9 s, so 10 s is the practical bar.","The runs with identifications used cached results from a fingerprint service that is not part of the product."],"date":"2026-09-29","doc_url":"https://decosa.ai/metrics/evals/mix-cue-sheet"},"stack":{"summary":"Upload a DJ mix or any long recording, with its tracklist if you have one (titles, with or without times) and, if you like, the track files you played. You get every song's start on a timeline you can click through, a timestamped tracklist for a YouTube, Mixcloud or SoundCloud description, a chaptered .m4a (one chapter per song, so the Cue iPhone app and any chapter-aware player skip song by song) and a signed cue sheet that names the audio's SHA-256. Your times are used as written; your track files are found in the mix from the audio; titles with neither are placed at the strongest change in the music and marked estimated. It runs on CPU with no model call, and it never names a song you gave it no title or file for.","tagline":"Drop in a mix and every song start appears: click to jump, paste the tracklist under your upload, and download a file your phone skips song by song.","deployment":"hosted-or-self-host","regulatory_note":"Checked 29 Sep 2026. It marks where songs start in audio you upload; it does not identify, license or clear music. Whether you may publish a mix of other people's recordings depends on your rights and the licences of the platform you post to, which this tool does not check. The optional song lookup on a self-hosted server sends a compressed copy of the mix to AudD (audd.io), a paid third-party service under its own terms, only when you set your own token; it is off by default and never used by the hosted tool. The optional transition detector is off on the hosted tool because its training audio (the DJ Mix Dataset, sourced from YouTube) carries no dataset licence; a self-hosted server can turn it on with its own weights file. Engine licence: Apache-2.0 (decosa-cue, ported from an MIT-licensed original); the track-file matcher is decosa-api code (AGPL-3.0-or-later).","components":[{"id":"cue-engine","role":"Song starts: spectral features and a novelty curve from the audio, a tracklist parser, and a resolver that turns your times, your track-file matches and the audio's change points into one start per song; writes the chapters (no model; CPU)","name":"decosa-cue engine (decosa_api/cue)","hf_repo":null,"license":"Apache-2.0","params":null,"quant":null,"vram_gb":0,"memory_gb_estimate":null,"engine":"Python 3.12 and numpy; ffmpeg decodes the upload and writes the MP4 chapters (AAC audio copied as is, other formats encoded once)","receipt_coverage":"none","in_hosted_demo":null,"tiers":["lite","standard","best"],"alternative_to":null},{"id":"landmarks","role":"Finds each of your own track files in the mix from the audio (landmark pairs, searched across tempo changes of up to 6% and the pitch shift that comes with them) so its song gets an exact start (no model; CPU)","name":"Landmark matcher for your own track files (decosa_api/verticals/clearance fingerprinter)","hf_repo":null,"license":"AGPL-3.0-or-later","params":null,"quant":null,"vram_gb":0,"memory_gb_estimate":null,"engine":"Python 3.12 and numpy (the same fingerprinter the sample clearance pre-check uses)","receipt_coverage":"none","in_hosted_demo":null,"tiers":["standard","best"],"alternative_to":null},{"id":"detector","role":"Transition detector v1: a small dilated 1-D CNN that scores where one track hands over to the next, used in place of the novelty curve (self-host only, off by default)","name":"Transition detector v1 (ONNX)","hf_repo":null,"license":"Weights trained by Decosa, not released; training audio (DJ Mix Dataset, YouTube-sourced) has no dataset licence","params":null,"quant":"ONNX FP32, 846 KB","vram_gb":0,"memory_gb_estimate":null,"engine":"onnxruntime on CPU; DECOSA_CUE_DETECTOR=onnx with your own weights file","receipt_coverage":"none","in_hosted_demo":null,"tiers":["best"],"alternative_to":null}],"tiers":[{"id":"lite","label":"Lite · titles and times only, any CPU","summary":"Your tracklist and the audio's change points: times you give are used as written, other titles are placed at the strongest change and marked estimated. No track files.","components":["cue-engine"],"hardware":"Any CPU","quality_evidence":[{"metric":"Song starts within 1 / 5 / 10 s, titles only (held-out synthetic mixes)","value":"15/105 / 51/105 / 84/105","source":"decosa-api docs/evals/mix-cue-sheet.md, 2026-09-29 (held out: 20 synthetic mixes of Decosa's own songs, 105 song starts, run once with thresholds frozen on a dev split)"},{"metric":"Song starts within 10 / 20 / 30 s, titles only, detector off, 8 real DJ mixes","value":"61 / 75 / 86 of 190 (5 s: 40)","source":"decosa-api docs/evals/mix-cue-sheet.md, 2026-09-29 (8 public DJ mixes, 190 song starts; development numbers, not held out)"}],"latency_note":"measured: seconds for the demo mix with titles only, on our server's CPU.","in_hosted_demo":true,"receipt_coverage":"none","receipt_note":"No model call; the cue sheet is signed by the instance.","hosting":null},{"id":"standard","label":"Standard · adds your own track files (hosted)","summary":"Everything in Lite, plus up to 30 of your own track files found in the mix from the audio, so their songs start where the music does, not where a guess puts them.","components":["cue-engine","landmarks"],"hardware":"Any CPU","quality_evidence":[{"metric":"Song starts within 1 / 5 / 10 s, with your track files (held-out synthetic mixes)","value":"24/105 / 92/105 / 105/105, with 105 starts predicted","source":"decosa-api docs/evals/mix-cue-sheet.md, 2026-09-29 (held out: 20 synthetic mixes of Decosa's own songs, 105 song starts, run once with thresholds frozen on a dev split)"},{"metric":"By join (within 5 s / 10 s, of 35 each), with your track files","value":"cuts 23 / 31, crossfades 31 / 35, blends 33 / 35","source":"decosa-api docs/evals/mix-cue-sheet.md, 2026-09-29 (held out: 20 synthetic mixes of Decosa's own songs, 105 song starts, run once with thresholds frozen on a dev split)"},{"metric":"Time per 5-minute mix with track files (engine, held-out set)","value":"p50 4.46 s, p95 6.26 s","source":"decosa-api docs/evals/mix-cue-sheet.md, 2026-09-29 (held out: 20 synthetic mixes of Decosa's own songs, 105 song starts, run once with thresholds frozen on a dev split)"}],"latency_note":"measured: seconds for the demo mix with its track files, a little longer than titles only, on our server's CPU.","in_hosted_demo":true,"receipt_coverage":"none","receipt_note":"No model call; the cue sheet is signed by the instance.","hosting":null},{"id":"best","label":"Best · adds the learned transition detector (self-host only)","summary":"Everything in Standard, with the transition detector in place of the novelty curve for titles without a time or a file. Off on the hosted tool: its training audio (DJ Mix Dataset, YouTube-sourced) has no dataset licence, so turn it on only with weights you are comfortable using (DECOSA_CUE_DETECTOR=onnx). A licence-clean retrain is planned.","components":["cue-engine","landmarks","detector"],"hardware":"Any CPU","quality_evidence":[{"metric":"Held-out synthetic mixes, detector on: song starts within 10 s, titles only / with track files","value":"61/105 / 85/105 (not better on short synthetic songs)","source":"decosa-api docs/evals/mix-cue-sheet.md, 2026-09-29 (held out: 20 synthetic mixes of Decosa's own songs, 105 song starts, run once with thresholds frozen on a dev split)"},{"metric":"Titles, the detector and a fingerprint service's identifications, 8 real DJ mixes (helps on real long mixes)","value":"99 / 123 / 144 of 190 within 10 / 20 / 30 s (1 s: 26, 5 s: 74; 277 predicted starts); detector off: 70 / 95 / 146","source":"decosa-api docs/evals/mix-cue-sheet.md, 2026-09-29 (8 public DJ mixes, 190 song starts; development numbers, not held out)"},{"metric":"Audio only (no titles), detector on, 8 real DJ mixes","value":"78 / 104 / 129 of 190 within 10 / 20 / 30 s (358 predicted starts)","source":"decosa-api docs/evals/mix-cue-sheet.md, 2026-09-29 (8 public DJ mixes, 190 song starts; development numbers, not held out)"}],"latency_note":"not measured yet","in_hosted_demo":false,"receipt_coverage":"none","receipt_note":"No model call; the cue sheet records that the detector was used.","hosting":null}],"alternates":[],"services":[{"name":"decosa-api","port":8445,"image":"${DECOSA_REGISTRY}/decosa-api:<tag>","purpose":"GET /cue/info and /cue/samples; POST /cue/uploads and PUT /cue/uploads/{id}?offset= (16 MB chunks); POST /cue/mark (SSE or 202 and poll); GET /cue/runs/{id}, /tracklist.txt, /chapters.m4a and /record; DELETE /cue/runs/{id}. Deletes the mix and track files when the run ends; keeps the chaptered .m4a for one hour and the song list and signed cue sheet in memory for 24 hours. Needs ffmpeg (in the image)."}],"tools":[{"name":"ffmpeg","url":"https://ffmpeg.org/","license":"LGPL-2.1+ / GPL-2.0+ (run as a separate program)","purpose":"Decodes the mix and your track files, and writes the chaptered .m4a (the audio is copied as it is when it is already AAC; otherwise it is encoded once to AAC at 160 kbit/s)."},{"name":"AudD (audd.io)","url":"https://audd.io/","license":"Commercial API under its own terms","purpose":"Optional song lookup on a self-hosted server only, when you set your own token (DECOSA_CUE_AUDD_TOKEN). Off by default; never called by the hosted tool."}],"hardware":[{"tier":"Any CPU","fits":true,"notes":"No GPU and no model server. Measured on our server (29 Sep 2026): the 6-minute demo mix took 7.0 s end to end with titles only and 12.0 s with its eight track files, most of it writing the chaptered .m4a (the demo mix is Opus, so it is encoded to AAC once) and matching the track files."}],"latency":[{"lane":"The 6-minute demo mix, titles only (8 songs), hosted settings","typical_ms":6960,"source":"measured on our server 2026-09-29: p50 6.96 s, p95 7.34 s over 5 runs; the engine itself took about 1.6 s, the rest is writing the chaptered .m4a and signing"},{"lane":"The same mix with its 8 track files","typical_ms":12010,"source":"measured on our server 2026-09-29: p50 12.01 s, p95 13.25 s over 5 runs; finding the track files took about 5 s"}],"benchmark":null,"notes":["It only names songs you give it: a title in the tracklist or a track file. There is no catalogue lookup on the hosted tool, so an untitled song in the mix is not named.","Your times always win: a tracklist with times is used as written. Track files are placed from the audio. A title with neither goes to the strongest change in the music near where it should be, and is marked estimated.","On the demo mix (a development example, one mix): with the eight track files, all 7 song changes land within 5 s of the real cut; with titles only, 4 of 7 within 5 s and 6 of 7 within 10 s.","The chaptered .m4a plays in any chapter-aware player (the Cue iPhone app, VLC and others). The tracklist is plain text: 0:00 Title per line, the format YouTube reads as chapters when it starts at 0:00.","The learned transition detector is off on the hosted tool because its training audio has no dataset licence. A licence-clean retrain is planned.","The engine is open source (Apache-2.0) and publishing soon as a separate package."]},"buyer_facts":[{"label":"Data retention","value":"Your mix and track files are deleted when the run ends. The chaptered .m4a is kept for one hour for download, or until you delete it. The song list and the signed cue sheet (no audio) stay in memory for 24 hours."},{"label":"What leaves the box","value":"Nothing. There is no model call and no lookup service on the hosted tool; the audio is processed on Decosa's own server. Self-hosted: nothing, unless you set your own AudD token for song lookup."},{"label":"Limits","value":"A mix up to 150 MB and 2 hours; up to 30 track files of up to 40 MB and 15 minutes each; a tracklist of up to 400 lines."},{"label":"What it can't do","value":"Name a song you gave it no title or file for. Without times or files, starts on long beat-matched blends are rough: they are marked estimated."},{"label":"Output","value":"Every song's start and how it was found; a tracklist (0:00 Title per line); a chaptered .m4a, one chapter per song; and a signed cue sheet naming the audio's SHA-256, checkable at /record/verify."}],"data_handling":{"page":"/data#mix-cue-sheet","self_host":{"level":"confidential","leaves":"nothing","summary":"Runs on your machine; nothing is sent to Decosa or a third party by default."},"hosted":{"level":"operator-processed","demo_only":false,"summary":"TLS to Decosa's server, then decrypted and processed by Decosa's API server, with the open models run by NEAR AI through OpenRouter, with Reka AI as the only fallback under Decosa's account.","gpus":"operator-contracted","third_parties":[],"retention":"Your mix and track files are deleted when the run ends. The chaptered .m4a is kept for one hour for download, or until you delete it. The song list and the signed cue sheet (no audio) stay in memory for 24 hours.","used_for_training":false,"encrypted_while_processed":false},"sealed_tier":{"applies":false,"note":"The sealed tier (raw chat only, never use-case pipelines) is paused at launch (/docs/sealed-tier)."},"external_calls":[{"to":"AudD (audd.io)","route":"selfhost","sends":"content","what":"A compressed copy of the mix, only if you set your own AudD token (DECOSA_CUE_AUDD_TOKEN) on a self-hosted server.","default":"off","off":null}]},"console":{"href":"/tools/media/mix-cue-sheet","input":"runner","lanes":[{"id":"songs","title":"Song starts","kind":"list"},{"id":"files","title":"Tracklist, chaptered .m4a and cue sheet","kind":"markdown"},{"id":"record","title":"Signed cue sheet","kind":"json"}],"samples":[{"n":1,"id":"demo-1","title":"Demo 1","deep_link":"/tools/media/mix-cue-sheet?sample=1&autorun=0"},{"n":2,"id":"demo-1-files","title":"Demo 1 files","deep_link":"/tools/media/mix-cue-sheet?sample=2&autorun=0"}],"deep_link_params":{"sample":"1-based index into samples, or a sample id","autorun":"1 = start the run once the sample is loaded; 0 (default) = only preselect","reduce-motion":"1 = turn off animations"}},"api":{"base":"https://api.decosa.ai","contract":"/api/contract.json","contract_markdown":"/api/contract.md","reference":"/docs/api","keys":"/account/keys"},"prompts":{"hosted":"/prompts/mix-cue-sheet-hosted.md","selfhost":"/prompts/mix-cue-sheet-selfhost.md","assemble":"/prompts/mix-cue-sheet-assemble.md","mac":null},"rehearsal":{"bundle":"/samples/mix-cue-sheet.zip","bundle_url":"https://decosa.ai/samples/mix-cue-sheet.zip","folder":"/samples/mix-cue-sheet/","expected":"/samples/mix-cue-sheet/expected.json","files":["/samples/mix-cue-sheet/expected.json"],"bytes":1330,"checks":["the run finishes","eight songs are found","the first song is Mirrorball Sunday at 0:00","Rapid Orchard starts near 0:36","the cut to Slap Happy is placed near 4:31","Chop Shop Groove starts near 5:17","every song was placed from its own track file","the mix and the track files were deleted when the run ended","the tracklist starts with the first song at 0:00","the signed cue sheet verifies","an edited cue sheet fails","with titles only, eight songs are found in the tracklist's order"],"licence":"All audio is Decosa's own: eight songs generated with Make a song (ACE-Step 1.5, MIT licence; each cleared by the similarity check) and mixed by Decosa. It is served by the API itself (GET /cue/samples/demo-1/audio), so this bundle has no input files.","about":"A 6-minute mix of eight songs made with Decosa Studio's Make a song, joined with cuts, crossfades and bass-swap blends, plus the eight track files that were played. The run must place all eight songs in order, each within 6 s of where it really starts, write a chaptered .m4a and a timestamped tracklist, and end in a signed cue sheet that verifies and fails once edited. The same mix with its tracklist as titles only must also give eight songs in order.","run":{"containers":"docker compose exec api python scripts/rehearse.py mix-cue-sheet","checkout":"python scripts/rehearse.py mix-cue-sheet --bundle mix-cue-sheet.zip --base-url http://127.0.0.1:8445","mac":".venv/bin/python scripts/rehearse.py mix-cue-sheet"},"guidance":"Set up with a coding agent (we recommend Claude Code with Claude Opus 5.5; any capable coding agent works) on mock data only, run the rehearsal until every check passes, then run your own data locally yourself. Never give the agent real data during setup."},"hardware_fit":{"check":"/self-host/hardware?use=mix-cue-sheet","data":"/api/hardware.json","tiers":[{"id":"lite","gpu_gb":0,"basis":null,"unknown":[]},{"id":"standard","gpu_gb":0,"basis":null,"unknown":[]},{"id":"best","gpu_gb":0,"basis":null,"unknown":[]}],"mac":null},"links":{"page":"/tools/media/mix-cue-sheet","json":"/use-cases/mix-cue-sheet.json","metrics":"/metrics/mix-cue-sheet","console":"/tools/media/mix-cue-sheet","console_sample":"/tools/media/mix-cue-sheet?sample=1&autorun=0","stack":"/tools/media/mix-cue-sheet#stack","try_live":"/tools/media/mix-cue-sheet","watch":"/tools/media/mix-cue-sheet","build":"/tools/media/mix-cue-sheet#build","self_host":"/tools/media/mix-cue-sheet#self-host","prompts":{"hosted":"/prompts/mix-cue-sheet-hosted.md","selfhost":"/prompts/mix-cue-sheet-selfhost.md","assemble":"/prompts/mix-cue-sheet-assemble.md","mac":null}}}