Harmonia DJ

Story One

tl;dr Harmonia DJ is an experimental toolkit for planning, testing, rendering, and publishing DJ mixes. It combines advanced library analysis with mix automation. Read on for how and why it came about and the workflow it enables - or jump to “What did I do?”.

When I started DJing more seriously in 2004, after joining Spinni, I quickly noticed that beat-matching was no guarantee for tracks sound good together. With a small bag of records though, I was able to try test every combination. As my library grew, this approach became ever more difficult.

Learning about musical keys - and discovering Mixed in Key - I was able to narrow down the search and improve my mixes substantially. But the number of possible combinations still grew exponentially as my collection grew. Testing even only the key compatible combinations manually in Traktor, my tool of choice for two decades, became incredibly time-consuming and tied me to the mixer. Recording a set could be equally frustrating: one mistake or unsatisfying transition might mean starting over and recording the whole thing again (or at least a good chunk of it).

A few years ago, I began building small experimental tools for different parts of this process:

  • A “mixtape planner” that used heuristics to create playlists with compatible consecutive keys.
  • A tool for recording, visualising, reviewing, and replaying MIDI output from a DJ controller or app.
  • A library-analysis tool using Essentia models (especially Discogs-EffNet) to find similar tracks.

When AI coding tools appeared, I needed to come up with problems that would serve as benchmarks. I asked models to build apps that could:

  • Apply DJ-style EQ to a track using recorded MIDI automation.
  • Time-stretch, align, and mix two tracks.

At first, the models failed. Sometimes spectacularly. A few weeks later though, they consistently aced both tasks. This meant I needed new benchmarks and made me wonder how much further I could push the models.

With Spinni’s 30th anniversary approaching, I wanted to create a sequel to my mix for the S20 event ten years earlier. Rather than repeat the old workflow, I set myself a new challenge of creating a mix with: 30 years in 30 tracks and 30 minutes.

Thirty tracks in half an hour is difficult on its own as I'm sure most DJs can agree. Making them work together, while using exactly one track from each of the past 30 years, was an even steeper climb. Yet, perhaps somewhat naively, I set out to do it and started climbing.

What did I do?

From the beginning, I wanted to preserve useful track combinations and transitions for future mixes and live sets. I built a desktop app that enabled me to collect potential iconic tracks into year-based crates, eventually ending up with a few hundred candidates. Then came the real task: finding the combinations that worked.

Harmonia DJ’s Fanouts feature finds key-compatible tracks across crates, beat-matches them, renders short preview clips, and sends them to a web service for rating. It does not replace judgment, but it removes the need to manually record every test and lets me review combinations anywhere, including during a commute. It also surfaced plenty of new, and sometimes surprising, ideas. Two examples from the S30 crate - one that simply works, and one that is... interesting:

Good comboOpen Fun comboOpen

The Fanouts view in the desktop app: pick a track from the crate and every key-compatible mix out of it is beat-matched, rendered, and ready to rate. Click to zoom.

Metadata added another complication: a track's listed release year is not always its original release year. To enforce the one-track-per-year rule, I built an AI agent that searched the Discogs catalogue and the web for original release dates. It updated custom metadata, added tracks to crates, and suggested missing candidates. I still had to verify the results myself, but luckily it produced only a couple of hallucinations. One especially interesting suggestion was Apollo 440’s Ain’t Talkin’ ’Bout Dub, which - for one reason or another - had not even crossed my mind.

Good pairs do not automatically make a good set. A sequence of tracks that work as a journey is needed. The set planner in the application combines Fanout ratings with key and BPM compatibility, plus a set profile such as a desired energy curve and track similarity, to suggest track orders. The playlists provide useful first impressions, but the real test comes when the tracks are mixed.

Rather than repeatedly perform and re-record transitions live, I could define EQ, volume, and other automation curves in the app, removing errors introduced by the ape in the loop, i.e. me. The system can also switch or mute stems such as drums, bass, vocals, and melody when needed, for example to prevent vocal clashes.

Live testing remained essential. I was already planning a Raspberry Pi-based prototype for controlling Pioneer CDJs over the Pro Link DJ network, so I built one and connected it to the desktop app's catalogue. That made it quick to recall combinations, cues, and transitions I had earlier planned. A proper PA and real audience quickly reveal whether a clever trick is simply extra noise, or whether a polished blend works exactly as intended.

After many iterations, the set was nearly ready. Then I realised that YouTube needs video as well as audio. I had made mixtape videos before and knew how much work they required. That was time I did not have, as the S30 event was rapidly approaching.

Seeing AI used to build 3D game engines suggested another route: build a visualisation generator instead of making the video by hand. The generator I built consumes Harmonia DJ's set export, including track metadata and positions, EQ and volume automation, deck actions such as "play pressed", rendered audio data, and other parameters. It then creates a retro-console-themed video like the one I published for this S30 set.

At this point, the workflow may sound like a bit much. But it is not a rocket ride that demands commitment from start to finish; it is a hop-on, hop-off system. You can use only the parts that help: better ways to explore a collection, find promising track combinations, plan a set - or go all the way in search of perfection.

I'll dig deeper into the vision and ideas behind Harmonia DJ and my thoughts on DJing in general in upcoming stories. Please sign up for updates if you'd like to follow along, and use the form below to share any thoughts!

Send your thoughts

Too much? Not enough? Which part would you use first? Every note is read, and it shapes what gets built next.

Keep me posted

Harmonia is not publicly available yet. Leave your email and tick what you'd like: an invite when a spot opens, news about the project, or both.

What to send