Difference between revisions of "DeepHarmony"

From vjmedia
(Tasks)
(Getting Deep Harmony set up on your computer)
 
(7 intermediate revisions by 2 users not shown)
Line 1: Line 1:
#PICTURE HERE#
+
[[:Category:Inquiry_Seminary_in_Music_Technology:_Gaming_and_Multimedia_(3910) |'''Go Back to Main Project Menu''']]
 +
<br/>
  
 
+
[[File:Deepharmony-screenshot.png|400px]]
=Summary=
 
  
 
Deep Harmony is a machine learning project for creating harmonies based on a given melody.
 
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 [http://artsites.ucsc.edu/faculty/cope/ David Cope].
 
Currently, Deep Harmony is learning to mimic the behavior of Bach Chorales created by [http://artsites.ucsc.edu/faculty/cope/ David Cope].
 +
 +
Deep Harmony is written in [https://www.python.org Python 3.5] and uses the [https://keras.io Keras] machine learning library.
 +
 +
Here's an example of the current output:
 +
 +
[[File:Deepharmony-sxample-output.png|400px]]
  
 
=Possible Tasks=
 
=Possible Tasks=
Line 24: Line 30:
 
== Make Deep Harmony predict whole songs ==
 
== 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.
 
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: =====
+
==== Recommended skills: ====
 
* Basic Python programming
 
* Basic Python programming
 
* Familiarity with machine learning
 
* Familiarity with machine learning
Line 37: Line 43:
 
=Getting Deep Harmony set up on your computer=
 
=Getting Deep Harmony set up on your computer=
 
All project files and resources are located in this git repository:
 
All project files and resources are located in this git repository:
 +
[http://solar-10.wpi.edu/ModalObjectLibrary/deepharmony]
 +
 +
There is an older (non-private) version here:
 
[https://github.com/samkhal/deepharmony https://github.com/samkhal/deepharmony]
 
[https://github.com/samkhal/deepharmony https://github.com/samkhal/deepharmony]
  
Line 44: Line 53:
 
* [http://jupyter.org Jupyter Notebook], an interactive programming environment and editor (necessary for using the .ipynb files)
 
* [http://jupyter.org Jupyter Notebook], an interactive programming environment and editor (necessary for using the .ipynb files)
 
* Python 3.5, and the following libraries:
 
* Python 3.5, and the following libraries:
** numpy and matplotlib (they are packaged in [https://www.continuum.io/downloads Anaconda], and we recommend installing it that way)
+
** numpy and matplotlib, for numerical computation and graphical plotting.
 
** [http://web.mit.edu/music21 music21], for processing music data
 
** [http://web.mit.edu/music21 music21], for processing music data
 
** [https://pypi.python.org/pypi/tqdm tqdm], for nice progress bars
 
** [https://pypi.python.org/pypi/tqdm tqdm], for nice progress bars
 
** [https://keras.io Keras], a deep learning library. We recommend installing it with the Theano backend, but the code should work with the TensorFlow backend as well.
 
** [https://keras.io 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
 
* musescore 2+, for allowing music21 to render music as pictures
 +
 +
Jupyter Notebook, Python, Numpy, and Matplotlib are all packaged together in [https://www.continuum.io/downloads Anaconda], and we recommend installing them that way.
  
 
=WPI Student contributors=
 
=WPI Student contributors=

Latest revision as of 18:42, 22 October 2016

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