Expresso takes a musical expression and mutates it. The starting expression is always "X". In each generation, transformation are applied to the components of the expression. The larger the number of generations, the larger and more complex the expression will get. The value of X, to be substituted in the final expression, can be a simple musical motif or the contents of a MIDI file that you specify by providing a URL.

# of generations:
Value of X:
URL (if Value==URL)

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