Playlist generation

The program is designed to take an entire directory of songs as an input, and output a single mixed song. To do this, the input directory is analysed, and a playlist is generated, which is an ordered list of songs created from the input directory.

Mixability Classification

With such great variation in style across dance music, it is impossible to produce a system that can accurately mix all input songs. When songs are not mixed correctly, beat 'clash' together, which sounds very bad to a listener, and must therefore be rigorously avoided.

The program therefore contains a machine-learning method, which uses features extracted from the tempo detection process in order to classify a song as 'mixable', or 'unmixable'. Any songs classified as 'unmixable' are rejected from the playlist.

Playlist Ordering

The remaining songs in the input directory are now analysed to generate an appropriate ordering, simulating the actions of a DJ. The method orders songs by increasing tempo and thickening texture, by extracting a feature termed 'flux' (a measure of local spectral change). This acts a descriptor of texture [1].

The songs are now ordered using a combination of increasing tempo, and increasing flux. This creates the playlist, and the songs are now mixed together in this order.

The final output of the mixing process is timescaled such that it increases steadily from the tempo of the minimum song to the tempo of the maximum song - once more imitating the common actions of a DJ.