Roman Klinger bio photo

Roman Klinger

Natural Language Processor and Machine Learner

E-Mail Twitter Facebook Google+ Github Bitbucket Google Scholar Skype


MusiComp is an implementation for automatic composition of music based on a genetic algorithm with learned evaluation functions.

You can download the system here. A documentation is not available in the moment. The source code is available, please send me a mail if you are interested.

If you use the system for academic work please cite as
AUTHOR = {Roman Klinger and G\"unter Rudolph},
TITLE = {Automatic Composition of Music with Methods of Computational Intelligence},
JOURNAL = {Transactions in Information Science and Applications},
YEAR = {2007},
VOLUME = {4},
PAGES = {508--515},
NUMBER = {3},
MONTH = {March}

The program "MusiComp" was developed in my diploma thesis (master thesis). The name of the thesis is

"Komposition von Musik mit Methoden der Computational Intelligence".
("Composition of Music with Methods of Computational Intelligence")

Download the thesis

Quick Start:
  1. Extract the MusiComp.tgz (under linux: tar xzf MusiComp.tgz)
  2. Start: java -jar MusiComp.jar
    • If you get an exception, be sure you have a soundbank in the correct path (look at the error message)
    • In config.xml you can specify other methods for sound generation
    • Perhaps you have to stop every program that uses sound. Under gnome: Turn the mixer on or off.
  3. Generate a simple Genetic Algorithm:
    • Menu "GA" - Press "New Genetic Algorithm"
    • In the dialog just press "OK"
  4. Back in the main window press the Button "Init". Now you should see some individuals in the list. The first number is the fitness (initialised with negative infinity), the next numbers are the represenation of the melody in the array. Read my paper for understanding it.
  5. Select one individual and press the "Play" Button (the green one on the right)
  6. You should hear something now. On the right you see the feature values for the individual.
  7. If you press "Evolve" now the genetic algorithm starts with interactive evaluation. You can specify another evaluation function in the drop down menu. You can use the ones defined using the entries in the menu "Evaluation". The training set for Neural Networks and Decision Trees is not included, but I can send it to you.
  8. There are of course more sophisticated initialisation methods then the one you used in this short quick start tutorial. For these you can specify markov chains and patterns in the "GA" menu. Then edit the selected GA and select the methods in the "Initialisation"-Tab.
  9. Have a look on the config files in the folder config.