Automatic composition using recurrent neural networks and metric structure

As part of my Masters in Computer Science at the University of Montreal in 2004-2005, I have treated the subject of automatic music composition. Using machine learning techniques, my algorithm was able to compose new songs in the same style as the songs used to train the algorithm.

For more details on the techniques used, my master thesis is available in PDF (memoire.pdf in french).

You can download a few songs composed by my algorithms. There are three sets of experiments : « Walking bass », « Songs » et « Songs and chords ». Finally, the training sets used for each of the experiments are available for download.

Walking bass

Representation 1 block - 1 cell 2 blocks - 1 cell / block
Local lstm_1_1_local.mid lstm_2_1_local.mid
Shepard lstm_1_1_shep.mid lstm_2_1_shep.mid
Frequency lstm_1_1_freq.mid lstm_2_1_freq.mid
Metric structure - Local lstm_1_1_sm_local.mid lstm_2_1_freq.mid
Metric structure - Shepard lstm_1_1_sm_shep.mid lstm_2_1_sm_shep.mid
Metric structure - Frequency lstm_1_1_sm_freq.mid lstm_2_1_sm_freq.mid

Songs

Model Representation Download
LSTM 2 blocks - 2 cells / block
0 hidden unit
Local (with metric structure) lstm_meter_local_b2c2h0.mid
lstm_meter_local_b2c2h0.mp3
LSTM 2 blocks - 2 cells / block
16 hidden units
Shepard (with metric structure) lstm_meter_shep_b2c2h16.mid
lstm_meter_shep_b2c2h16.mp3

Songs and chords

Model Representation Download
LSTM 2 blocks - 2 cells / block
16 hidden units
Local (with metric structure) lstm_meterlocal_b2c2h16.mid
lstm_meterlocal_b2c2h16.mp3
LSTM 2 blocks - 2 cells / block
0 hidden unit
Frequency (with metric structure) lstm_meterfreq_b2c2h0.mid
lstm_meterfreq_b2c2h0.mp3

Training sets

Model Download
Walking bass train_wb.tar.gz
Songs thesession.tar.gz
Songs and chords nottingham.tar.gz