DeepHarmony

From vjmedia

Go Back to Main Project Menu

Deepharmony-screenshot.png

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:

Deepharmony-sxample-output.png

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:
    • numpy and matplotlib, for numerical computation and graphical plotting.
    • music21, for processing music data
    • tqdm, for nice progress bars
    • Keras, a deep learning library. We recommend installing it with the Theano backend, but the code should work with the TensorFlow backend as well.
  • 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