This is a DJing tool I made in order to build a catalog of tracks and mix them together.
It can guess which other tracks would be closer to a given track based on its key frequency and tempo.
It takes into account the fact that the key of each song will change when shifting the tempo.
It can also take into account the fact that a single track can have several different tempos and keys within it.
Here is an example of xml catalog file, I filled it with random tunes I like.
It can generate html maps of the songs (horizontal axis = tempo, vertical axis = key/tempo) such as this one.
It can also generate graphviz files of how tracks could follow each other, this is an example of a resulting picture.
You can restrict the conditions for a track to be displayed in the graph in order to get smaller graphs (for instance using only tracks within a certain range of BPM).
The "checkCheckedTool.jar" applet is a tool that compares the catalog with a Traktor playlist file and outputs which tracks are in both files or only in the Traktor one.
As usual, I primarily made that tool for myself and it may be difficult for anybody to understand how it works, but I'm still improving it from time to time.