There are a number of automatic DJ tools around, which cleverly match the tempo of one song with another and mix the beats. Deej-A.I. is more of a radio DJ than a club DJ and pays more attention to what to play next than to how to play it by matching similar sounding music and not just beats.

Instead of sticking music in categories, I wanted to come up with a continuous way to organize and explore it according to how it sounded. I wanted to be able to use this to generate automatic playlists from my own music library of songs that went well together, as well as to discover new music.

Using data from Spotify, I trained neural networks to come up with two different high-dimensional representations for organizing music either by similar artists or by similar sounding tracks (for example, in terms of energy, mood, rhythm or instrumentation). A “creativity” parameter allows you to mix the two, so called because a higher value is more likely to recommend music by artists you may never have heard of before.

Because the representations are continuous, you can easily create a playlist which smoothly “joins the dots” between one song and another (for example, from Mozart to Motörhead), passing through as many waypoints as you like.

Join the dots

You can see for yourself how well it works with a selection of 320,000 Spotify tracks by visiting my website deej-ai.online. If you have a Spotify account, the playlists can be uploaded directly to your account. Alternatively, you can explore a two-dimensional projection of the representations Track2Vec (creativity = 0) and Mp3ToVec (creativity = 1). Be patient as these are large files that take a long time to load and render.

You will find the notebooks and scripts I used to scrape the data from Spotify, train the neural networks and analyze a library of MP3s here. The source code for the web page can be found here.

This was my Masters in Deep Learning project at MBIT (Madrid Business Intelligence Technology) School. If you want to learn about it works, check out the README. The following videos are in Spanish.