DeepHarmony
Deep Harmony is a machine learning project for creating harmonies based on a given melody.
Currently, Deep Harmony is learning to mimic the behavior of Bach Chorales created by David Cope.
Deep Harmony is written in Python 3.5 and uses the Keras machine learning library.
Here's an example of the current output:
Possible Tasks
Change out learning dataset
Deep Harmony currently tries to emulate David Cope's machine generated 5000 Bach Chorales. You could change the style of music it learns from.
Recommended skills:
- Some Python programming
- It would be nice to have some familiarity with machine learning before hand
Improving Deep Harmony's note prediction capabilities
Deep Harmony's neural network is fairly basic and not capable of predicting many of the complexities of music. You could improve the performance of Deep Harmony by changing the structure and layers used in the deep neural network.
Recommended skills:
- Basic Python programming
- Some familiarity with machine learning
Make Deep Harmony predict whole songs
Deep Harmony currently creates the next note corresponding to a melody line, this is great for generating accompaniment, but you could make it generate entire songs.
Recommended skills:
- Basic Python programming
- Familiarity with machine learning
Integrating Deep Harmony into a Max Patch
Deep Harmony could be used to create real-time music in Max/MSP. Other people have already created ways to run Python code in Max/MSP pyext (not actively maintained) Embedding Jython in Max (probably not what we want)
Recommended skills:
- Basic Python programming
- Familiarity with Max/MSP
- Patience for figuring out installation/configuration issues
Getting Deep Harmony set up on your computer
All project files and resources are located in this git repository: [1]
There is an older (non-private) version here: https://github.com/samkhal/deepharmony
It can be downloaded as a .zip file or cloned as a repository.
Dependencies:
- Jupyter Notebook, an interactive programming environment and editor (necessary for using the .ipynb files)
- Python 3.5, and the following libraries:
- musescore 2+, for allowing music21 to render music as pictures
Jupyter Notebook, Python, Numpy, and Matplotlib are all packaged together in Anaconda, and we recommend installing them that way.
WPI Student contributors
2016
Sam Khalandovsky
Ezra Davis