Music generation from public MIDI datasets using Markov chains, LSTM language models + sampling, beam search inference.
src/:
- sequence: class for dealing with MIDI and converting to useful representation used by models
- monte_carlo: class for markov-chain model
- basic_rnn, bidirectional_rnn, sequence_rnn, stacked_rnn: various model classes
- evaluation: utilities for computing basic statistics on generate sequences
runner.py: Runs scripts for training, inference from saved checkpoints:
Training:
python3 runner.py -m trnn -i ../data/BachChorales/ -o models/sequence_rnn_BachChorales_128/ --lr 0.0005 --epochOffset 0 --inputLen 1 --layerSize 128 --nepochs 50
Generation:
python3 tester.py -m grnn -i models/sequence_rnn_BachChorales_128/epoch_60/checkpoint.ckpt -o ../outputs/sequence_RNN_BachChorales/sequence_rnn_128_60.mid --inputLen 1 --layerSize 128 --lr 0
See our write-ups for more information.
- Akash Mahajan - Masters, Management Science and Engineering
- Suraj Heereguppe - Masters, Institute for Computational and Mathematical Engineering
- Nathan Dalal - Undergraduate, Computer Science