I've been lately been learning to DJ&Mixing (very basic techniques), and an important component to smooth transitions is key harmony. Transitioning to songs within a certain key range is easier and sounds better. A quick example (cheat sheet) for knowing which keys are compatible is the Camelot System Wheel (which I can't display because it has a copyright) or
Currently the only means for a DJ to get the key information for his songs are either costly or tedious. Here are the methods I'm most aware of:
- Using commercial software
DJTechTools has a great article on all the different costly software available for attaching key information to your songs
- Looking up the song on Beatport and embedding the information yourself
I actually caught my roommate manually searching every MP3 he owned on Beatport and editing the ID3 tags to get the key information.
First thing comes to mind as a Software Engineer whenever I see such a repetitive task is, "This should be automated immediately".
Originally the idea was to automate the process of browsing Beatport for the song and grabbing the BPM/Key. This proved to be too difficult however because the Beatport API doesn't support searching for a track. Browsing the interwebz for ideas, I then came across Echo Nest.
The Echo Nest is a music intelligence platform that powers smarter music applications. Theirplatform opens up this dynamic music data to any developer through our easy-to-use, real-time API
Within an hour, I was up and running and had a quick sample Python (using WxPython for the GUI) application that uploaded songs to Echo Nest and retrieved their analysis for key and temp information. Few things are missing to turn this into a 100% useable app which I hope to get around to, but for now I am happy with the mockup proving it is possible to get song analysis easily and free.
You can find the source code and app on my Github repository here.
- Add the analysis information into the ID3 comments tag of the Mp3 File
- Allow bulk processing of songs.
- Thread or perform uploading asynchronously of the songs (also provide progress bar).