This project is a Java-based implementation of a genetic algorithm used to compose short MIDI piano pieces. MusicComposer was completed under the auspices of Prof. Claire Cardie and Kamal Aboul-Hosn of CS 473, Fall 2004 and is being submitted for BOOM 2005.
Our project uses a very from-scratch approach to music composition, in which we had to hand-code all of our criteria for a phrase of music: modules for melody, harmony, consonance, rhythm, etc. This approach is very open-ended, however the trade-off is that it will not produce anything approaching a masterpiece anytime soon, due to the immense complexity that goes into even a simple "good" piece of music, as well as any arguable "human element" that is impossible to render in Java, at least. Readers interested in automated composition techniques that use machine-learning methods to generate music directly imitative of real (even dead) human beings may wish to check out David Cope's Experiments in Musical Intelligence which provides an exposition of his very successful machine-learning techniques, as well as audio files of some of the results. This is especially useful as a counterpoint demonstrating what our project is not: despite the inexorable matters of taste encoded by our personal programming, our genetic MusicComposer is not an imitative program.
You may view our Final Report, which includes an overview of our methods and evaluative results.
As for the program itself, it is available for download as a ZIP file, within which you will find our README, sample input files, and the program itself as a Java JAR file. Note: The program requires version 1.5 of the Java JDK, sometimes listed as J2SE 5.0 on the Sun website.
Questions or concerns, e-mail either of us at the addresses below. Enjoy!
Project Staff:
Yash Parghi
Andrew Dailey