Russell Hanson, who wanted more badass fugues!!
Fugues are pieces of music that follow a certain set of rules and a number of voices come in, like a "round", and end up in somewhat different places than where they start out, all the while following a fairly strict and established form.
Many composers find it very difficult to write fugues, and computers are good at doing difficult "programmatic" things, like follow strict rules, and write fugues to midi files. Thus was born Fugueomatic!!
Fugueomatic: http://russellhanson.com/web/Fugueomatic.html
Fugueomatic writes automatic fugues! You press the Fugueomatic button, and the fugues come out.
jMusic, info on the web about fugues
http://www.youtube.com/watch?v=idhHq1mn1XA
http://www.classicalmidiconnection.com/cgibin/x.cgi/mid/bach/bwv548b.mid
http://www.classicalmidiconnection.com/cmc/bach.html
http://www.ibm.com/developerworks/java/library/j-camusic/ - Cellular automata and music
// Russell Hanson@Music Hack Day Boston 11/22/09 // http://musichackdayboston.pbworks.com/Fugueomatic // Step 1: make a fugue out of the Daisy motif // Step 2: manufacture new motifs and make fugues out of them // File: Daisy.java import jm.JMC; import jm.music.data.*; import jm.music.tools.*; import jm.util.*; public class Daisy implements JMC { public static void main(String[] args){ new Daisy(); } public Daisy() { int[] pitches = { C5, A4, F4, C4, D4, E4, F4, D4, F4, C4 }; double[] rhythmValues = { DOTTED_HALF_NOTE, DOTTED_HALF_NOTE, DOTTED_HALF_NOTE, DOTTED_HALF_NOTE, QUARTER_NOTE, QUARTER_NOTE, QUARTER_NOTE, HALF_NOTE, QUARTER_NOTE, 2 * DOTTED_HALF_NOTE }; Note[] notes = new Note[pitches.length]; for (int i = 0; i < notes.length; i++) { // A note is made up of a pitch and duration notes[i] = new Note(pitches[i], rhythmValues[i]); } // A phrase is made up of notes Phrase phrase = new Phrase(notes); Part pianoPart = new Part("Piano", PIANO); // A part is made up of phrases pianoPart.add(phrase); // A score is made up of part(s) int tempo = 180; Score daisy = new Score("A Bicycle Built For Two", tempo, pianoPart); // In key of F: 1 flat daisy.setKeySignature(-1); // In 3/4 time daisy.setNumerator(3); daisy.setDenominator(4); // Display score in standard musical notation View.notate(daisy); // Write out score to MIDI file Write.midi(daisy, "/Users/russell/Fugueomatic/daisy.mid"); } }