Set tracklist generator

Takes a recording of a DJ mix or live set and identifies the tracks in it.

My role: Product + Engineering

The problem

I couldn’t find a tracklist generator that actually worked well. A lot of them couldn’t identify tracks that had been sped up or slowed down, which is exactly what happens to tracks in a DJ set.

My role

Solo. I scoped it around what I wanted as a listener, and I’m building it end to end. It’s still in progress.

What I built

A small web service: upload a mix (mp3, wav, flac, m4a, or ogg, up to 200 MB) and get back a tracklist with the artist, title, and timestamp for each part of the set.

  • Splits the recording into 30-second segments and sends each one to the AudD music-recognition API
  • Runs those lookups in parallel, but capped, so a 2-hour set (about 240 segments) doesn’t hammer the API
  • Keeps unrecognized segments as placeholders, so the tracklist stays lined up with the recording’s timeline
  • If one segment fails, it becomes “Unknown track” instead of failing the whole tracklist

Built with Python, FastAPI, pydub (on top of ffmpeg), and httpx, with tests in pytest.

Outcome

It works well so far. What I’m working on now is tempo and pitch handling, so tracks that have been sped up or slowed down in a mix still get identified. That’s the problem that started this, so it’s the part that has to work.

All work