Home : Tune Toys : Expresso 
  Expresso takes a simple musical expression (literally "X") and mutates it. In each generation, transformations are applied to components of the expression. This is a fractal technique known as an L-system. The more generations there are, the larger and more complex the expression gets (and the longer it can take to compute). The output varies wildly, from boring to fascinating. Press "Mutate" a few times till you get something that looks interesting, then click on the image to play it. See Composer's Quarry for examples of output.

Transformations:
Seed:
Randomize seed:
Generations:
Phrase for X:
# of Tracks:
Randomize patches:
 

Results may not appear for a few seconds.
Be patient!

Something went wrong - your music was not generated

The output from KeyKit, possibly showing the error, is:
key: Can't open midifile for reading - /htdocs/music/expresso.bachinv7.mid (No such file or directory) 
while executing near line 77 in file /usr/local/key/key66b/lib/../lib/read1.k
Function traceback:
midifile("/htdocs/music/expresso.bachinv7...),
readmf("/htdocs/music/expresso.bachinv7...,),
webexpresso(3,2,"yes",1,"/htdocs/music/expresso.bachinv7...,"File 7 - bachinv7.mid","A=A+A","A=A|A","A=transpose(A,4)","A=transpose(A,-5)","A=transpose(A,-7)","A=A+transpose(A,12)","A=A+transpose(A,7)","A=A+transpose(A,4)+transpose(A,...,"A=echo(A,4,6)","A=step(A,12)","A=arpeggio(A)","A=shuffle(A)")
 

The algorithm for Expresso is written in KeyKit, and here's the source code.