Click here to download MusicCreator 1.0 as a ZIP archive. To run, unzip the archive to a directory on your hard drive. Double-click on the MusicCreator.jar file, or run it from the command-line with the command java -jar "MusicCreator.jar"
.
Description
MusicCreator began as an Independent Studies project at the University of Nebraska at Omaha. For this project, we wanted to accomplish the following goals:
- Generate music that is random but within constraints. That is, the music is completely computer generated, but it uses the rules of Western Music Theory as a guide. Our guide for what constitutes music theory are Elementary Harmony, Theory and Practice and Advanced Harmony, Theory and Practice, both by Robert W. Ottman.
- MusicCreator uses the following method to generate music:
- Define available chords. (For example, I (tonic), iii (mediant), etc.) Click here to see more about the music theory used by MusicCreator.
- Place chords into equivalency groups. (For example, V and V7 are in a single group.) This is done to simplify the complicated "chord tree" of possible progressions.
- Define chord progression tree. Basically for each chord equivalency group, we define what groups may preceed that group. For example, the V/V7 group can preceed the I group. The I group can preceed any other group. We can also define preceeding "chains" of chord groups. For example, a possible preceeding chain for I is vi-ii-V.
- Choose a number of measures, a time-signature, and a key.
- Randomly the chosen number of measures of rhythm. Count how many chords are needed. (Click here for more on the rhythm-generation algorithm.)
- Start with I (tonic) as the last chord.
- Find a chord-group or chain that can preceed I and add it to the front of the list.
- Find a chord-group or chain that can preceed the chord just added; add it to the front of the list. Repeat this step until the list is complete.
- Go through the list in reverse order from the order it was created, writing it to the output file (MusicXML format).
- MusicCreator currently allows the following options to be selected by the user:
- Time signature
- Key
- Tempo
- Length (in measures)
- Use any chord, or restrict to only diatonic chords (chords "in the key".
About the samples
At this stage, MusicCreator has the following limitations:
- Only Major keys are currently supported. However, this may be corrected by simply using a different chord file.
- All note-lengths are eighth-notes or multiples thereof.
- A very simplified music theory is used - many more "advanced" chords are not supported at this time. However, they may be added fairly easily.
- The music generated by MusicCreator is not optimized for printing.
- The song tempo is not saved properly when saving as a MIDI file.
About the software project
- Language: Java
- IDE: NetBeans 5.0
- Environment: GUI
- Output formats: MusicXML, MIDI
- Additional software: Xenoage MusicXML Player (free Java-based software that converts MusicXML to MIDI)
Future plans
- Done! Add support for MIDI. Currently music generated by MusicCreator cannot be played in MusicCreator - a third-party player is required. Support for MIDI will correct this deficiency.
- Done!Add support for loading alternate definition files. Currently the definition file is "hard-coded" into the program.
- Add validating XML parser to allow others to more easily create their own definition files.
- Add support for more complicated rhythm structures. Earlier releases supported "arpegiation" of chords, but I didn't write this feature into the Java version.
- Done!Convert MusicCreator to a Java Applet to allow web viewing.
Participants
- Student: Steve Roach, a Senior at UNO majoring in Computer Science.
- Dr. Bill Mahoney, faculty advisor