Need help with Improvisation?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

131 Stars 16 Forks Other 14 Commits 3 Opened issues


A program that learns music structure of given midi files and able to generate new melodies by judmental of other compositions. E.g. generate melody in style of Armstrong as negatively judged by Eminem and positively by Bach.

Services available


Need anything else?

Contributors list

# 33,856
10 commits

Automating Music Composition and Melody Generation.

Many believe that the epitome of human creativity is the ability to create art regardless of the art form itself. One of the more popular art forms, music, has been viewed as an intellectual exercise and composers such as Bach and Chopin are viewed as geniuses in our modern world. The inherent question to ask was, could software even begin to mimic the creativity of these composers and their compositions.

This project succesfully answers that question.

Although the majority of this project is based on Music generation, the code is completly generic and can be applied to other fields such as auto generation of papers.

Email any questions to [email protected]

You can find the respective paper written at the root directory.

Thank you for reading.

How to use the Test Application

  1. Download the project off of github.
  2. Open the .sln file in visual studio.
  3. Press Ctrl+F5 to launch the sample UI.
  4. First we need to teach our program what is good music and what is bad. To do so, press on Create Neural Net.
  5. Give it "good music" samples by pressing Load Good Midi Files and selecting desired midi files. I have included a folder with different types of music. You can, for example, select all eminem files to be represented as good.
  6. Give it "bad music" samples by pressing Load Okay Midi Files. In the folder included, you could, for example, select ella fitzgerald files as bad.
  7. If your music has a lot chords (such as in classical music), chord recognition will run for a long time,to decrease time allow the chord recognition to run note by note by checking the "Note by Note" checkbox.
  8. Press Begin training.
  9. If wanted, save the file.
  10. Now we need to create our statistical model (Markov graph), you can do so by selecting Create Stat Model.
  11. Load up your musical samples and change the range of the size of the NGrams by shifting the two numbers at the bottom.
  12. Again if your music is complicated, check the "Note by Note" checkbox.
  13. Now everything is ready. Shift the variables to your liking and press "Start Music Generation".
  14. Once the search is done you can play the various melodies by pressing on the items listed in the listbox on the right. General rule is higher on the listbox = higher rated by neural network.

Have Fun :)

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.