I love music and deep learning. Let's combine both.
List of experiments
- Overfitting example with Keras: Overfit a single and simple piece of music with a basic encoder-decoder LSTM
- Overfitting example with PyTorch and Embeddings (or use this link): Overfit a single and simple piece of music with a basic encoder-decoder LSTM. Supports different note lengths
- Overfitting example with Attention: Overfit a single and simple piece of music with a basic encoder-decoder LSTM. This time the decoder uses the attention mechanism. Attetion focus is visualised
Todo
- Support variable note length (ties wihtin the same note)
- Support Ties
- Support chords
- Use and analyse attention (show and plot attetion focus)
-
Perform quantization - Look for more advanced network architectures (RNN's, GAN's...)
Encoding is inspired by Bachbot. Image is from here:
Encoding and decoding is done by encoding.py.
Current encoding: 258 different symbols are used as input
- 128 midi notes: Represent standard notes
- additional 128 midi notes: Represents the same note as the 128 first notes (same pitch), but this time the note is tied to the previous note. This the network can output notes with different lengths (multipple times the same note tied to the previous note).
- 2 additional symbols: START, STOP
Some interesting and relevant links
- http://www.mlsalt.eng.cam.ac.uk/foswiki/pub/Main/ClassOf2016/Feynman_Liang_8224771_assignsubmission_file_LiangFeynmanThesis.pdf
- https://medium.com/artists-and-machine-intelligence/neural-nets-for-generating-music-f46dffac21c0
- https://www.microsoft.com/en-us/research/wp-content/uploads/2017/11/156_Paper.pdf
- https://staff.fnwi.uva.nl/b.bredeweg/pdf/BSc/20152016/Vranken.pdf
- https://www.ini.rub.de/upload/file/1521461530_7126db755dc03bec85b1/dada-bsc.pdf