Unmasking the Unnamed
If you’ve spent any time in the retro scene, you know the drill. You’re browsing through old demos or cracktros, and a killer tune starts playing - the kind that stays stuck in your head for days. But there’s always that nagging question: Who actually composed this?
Historically, these tracks rarely had credits, and in many cases, they never will. As the scene grows and more people try to catalog this digital history, identifying these “anonymous” gems has become a massive headache. It turns out that identifying music is easy when you have high-fidelity studio recordings, but things get much messier when you’re dealing with vintage sound chips.
The Problem with Coarse Frequencies
Most modern audio fingerprinting tools - think Dejavu or similar systems - are designed for the wide, complex frequency spectrum of a standard WAV or MP3. They rely on finding consistent “landmarks” in the audio.
But retro sound chips (like the Yamaha 2149 chip used to create some of the most iconic music of my youth) operate on much coarser frequency scales. The signals are sparse and periodic in a way that trips up traditional algorithms. When you’re trying to match these specific harmonic structures, standard methods just can’t find enough reliable landmarks to make a confident match.
Many attempts have tried to tackle this, but they usually fall short of the precision needed for retro audio.
Our finding: One library could!
We found that audfprint works remarkably well for what we care about: YM (Yamaha FM) music on the Atari ST. While the library is open source and certainly useful for other chips like SID, our specific service caters only to our own retro platform. We encourage others to copy! :D
To speed up matching for our web service, we ported the core signal processing in the library to the GPU. By leveraging CUDA through CuPy and cuSignal, we implemented a highly parallelized Short-Time Fourier Transform (STFT). It turns out that while there’s some overhead in moving data from your CPU to your GPU for tiny clips, once you start dealing with larger audio segments, the performance jump is massive. We’ve seen speedups of 2x or more on long signals just by offloading the STFT calculation. We did this since we expect one usage of the service to be doing live matching on demo show streams.
What’s Next?
We aren’t quite at “set it and forget it” yet. There are still two main hurdles that could need attention:
First, there is the transition from clean digital files to real-world microphone input. Dealing with environmental noise and the weird frequency responses of different recording setups is a whole other level of complexity.
Second, there is the fundamental gap between emulation and reality. Right now, our fingerprints are generated from emulated sound rather than actual physical hardware capture. Bridging that gap - making sure an algorithm can recognize a track whether it’s being played by an emulator or a real piece of Atari ST hardware - would definitely raise the confidence level of matches higher.
You’ll find our service here: Chip ’n Tell
Enjoy.
Greetings:
- The creator of
audfprint, Dan Ellis. - The creator of
psgplay, Fredrik Noring.