Difference between revisions of "DeepHarmony"

From vjmedia
(2016)
(Getting Deep Harmony set up on your computer)
 
(10 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.
Line 8: Line 8:
 
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].
  
=Tasks=
+
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=
 +
 
 +
==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==
 
==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 [http://grrrr.org/research/software/py/ pyext (not actively maintained)] [https://cycling74.com/toolbox/python/#.V_15NjK-JE4 Embedding Jython in Max (probably not what we want)]
 
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 [http://grrrr.org/research/software/py/ pyext (not actively maintained)] [https://cycling74.com/toolbox/python/#.V_15NjK-JE4 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=
 
=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 19: Line 51:
  
 
==Dependencies:==
 
==Dependencies:==
* [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, the programming language Deep Harmony is written in
+
* Python 3.5, and the following libraries:
** numpy and a few other Python libraries (can be installed through [https://www.continuum.io/downloads Anaconda] or pip.
+
** numpy and matplotlib, for numerical computation and graphical plotting.
* [https://keras.io Keras], a machine learning library
+
** [http://web.mit.edu/music21 music21], for processing music data
 +
** [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.
 +
* musescore 2+, for allowing music21 to render music as pictures
  
We recommend that you use Anaconda to install all of the dependencies for the project, except for Keras, which has installation instructions on its website. You can install it through pip.
+
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