Difference between revisions of "DeepHarmony"
(→Tasks) |
(→Getting Deep Harmony set up on your computer) |
||
(7 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
− | + | [[:Category:Inquiry_Seminary_in_Music_Technology:_Gaming_and_Multimedia_(3910) |'''Go Back to Main Project Menu''']] | |
+ | <br/> | ||
− | + | [[File:Deepharmony-screenshot.png|400px]] | |
− | |||
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 | + | ** 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
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