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: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Phrase for X: Basic 1 - c,e,gBasic 2 - c,g,e,b-Basic 3 - c,gBasic 4 - cBasic 5 - co3,co4,co3,co2Chord 1 - c e gChord 2 - c e- gChord 3 - c e- g b-Chord 4 - c f gFile 1 - bachinv1.midFile 2 - bachinv2.midFile 3 - bachinv3.midFile 4 - bachinv4.midFile 5 - bachinv5.midFile 6 - bachinv6.midFile 7 - bachinv7.midFile 8 - bachinv8.mid # of Tracks: 1234 Randomize patches: noyes Results may not appear for a few seconds.Be patient!
 Do you like this result? Do you want to let other people listen to it? Save this one in theTune Trove! See what's alreadyin the Tune Trove!

 After 12 generations the expression "X" became this: (transpose((echo(shuffle(X) ,4,6) |((transpose(X,4) +transpose(transpose(((X+transpose(X,4) ) +transpose(X,7) ) ,-7) ,-5) ) |(((transpose(X,4) |transpose(shuffle((X|X) ) ,-7) ) +transpose(transpose((transpose(shuffle(X) ,-5) +transpose(transpose(X,4) ,12) ) ,4) ,4) ) +transpose((((((X+transpose(X,4) ) +transpose(X,7) ) |(X|X) ) |((X+X) |(X|X) ) ) +transpose(arpeggio(((step(X,12) +transpose(transpose(transpose(X,4) ,-5) ,4) ) +transpose(shuffle((X+X) ) ,7) ) ) ,12) ) ,7) ) ) ) ,-7) +shuffle((((transpose(X,-5) +transpose(transpose(transpose((X+transpose(X,7) ) ,4) ,-7) ,12) ) |transpose(X,-5) ) +transpose((transpose(((X|X) +X) ,4) +(X+transpose((shuffle(X) +transpose(X,12) ) ,12) ) ) ,7) ) ) ) random seed used was 243590416 EXPR = (transpose(transpose(transpose(transpose(shuffle(transpose(X,-7) ) ,-7) ,4) ,4) ,4) +((((((((X|X) +transpose((X+transpose(echo(X,4,6) ,12) ) ,7) ) +transpose(X,7) ) |transpose((X|transpose(transpose(X,-5) ,4) ) ,-7) ) +transpose(shuffle(echo(transpose((X+transpose(X,7) ) ,-5) ,4,6) ) ,4) ) +transpose((step(((((X+transpose(X,7) ) +transpose(X,-5) ) +transpose((X+X) ,4) ) +transpose(((X|X) +transpose(transpose(X,4) ,7) ) ,7) ) ,12) +transpose((transpose(((X+transpose(X,4) ) +transpose(X,7) ) ,4) |((transpose(X,4) +transpose(echo(X,4,6) ,7) ) +transpose((X|X) ,12) ) ) ,12) ) ,7) ) +transpose(echo((((transpose(X,-5) +transpose(transpose(X,-5) ,7) ) +transpose(X,12) ) +transpose((((arpeggio(X) +transpose((X+(X+transpose(X,7) ) ) ,12) ) +transpose(transpose(X,4) ,4) ) +transpose(echo(transpose(X,4) ,4,6) ,7) ) ,7) ) ,4,6) ,7) ) +transpose((transpose((((transpose(X,-5) +transpose(shuffle((X+transpose(X,7) ) ) ,12) ) +transpose(transpose((X|X) ,4) ,4) ) +transpose(transpose((X+(X+transpose(X,12) ) ) ,4) ,7) ) ,-5) +transpose(transpose((step(transpose(X,-5) ,12) |shuffle((transpose(X,4) +X) ) ) ,4) ,12) ) ,12) ) ) random seed used was 0

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