|
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.
![](../musictmp/tmp3392893/www.gif) | ![](/images/cleardot.gif) |
|
After 11 generations the expression "X" became this: | (step(((echo(X,4,6) +transpose((X+X) ,12) ) +(shuffle(arpeggio((X+X) ) ) |((X+transpose((X+transpose(X,7) ) ,7) ) +transpose(X,12) ) ) ) ,12) |(((shuffle(transpose(step((X|(X+X) ) ,12) ,-5) ) +transpose((transpose(((X|X) +X) ,4) +transpose(transpose(((transpose(X,-7) +transpose(X,4) ) +transpose(X,7) ) ,4) ,4) ) ,12) ) +transpose((transpose(X,4) +transpose(((((echo(X,4,6) |X) +step(X,12) ) |(((X+transpose(X,4) ) +transpose(X,7) ) +X) ) |transpose(X,4) ) ,7) ) ,7) ) +(((step(X,12) +transpose(step(step((step(X,12) +X) ,12) ,12) ,7) ) +transpose(((transpose(transpose(arpeggio(shuffle(X) ) ,-5) ,4) +((((((X+X) +transpose((X+transpose(X,7) ) ,4) ) +transpose((arpeggio(X) +transpose(X,7) ) ,7) ) +transpose(((X+transpose(X,12) ) +X) ,4) ) +transpose(arpeggio(X) ,7) ) +transpose(shuffle(step(step(X,12) ,12) ) ,7) ) ) +(((((X+transpose(X,7) ) |arpeggio(X) ) +transpose(transpose(X,-5) ,7) ) +((X+transpose(X,12) ) |transpose(X,4) ) ) +transpose(((((X+transpose(X,4) ) +transpose(X,7) ) |X) +transpose(X,7) ) ,4) ) ) ,12) ) +transpose(transpose((X+transpose((X+transpose(X,12) ) ,4) ) ,-7) ,12) ) ) ) random seed used was 132031641
|
The algorithm for Expresso is written in
KeyKit, and
here's the source code.
| | | |