Music Generation

Chromat is just one application built on Tone Unit's algorithmic music software engine.

The music software engine works by analyzing the rhythms, melodies and harmonies in a musical piece.

The software identifies these building blocks, and can manipulate them to produce musical variations and hybrids.


Replayer (Max for Live Device): Functional prototype for Chromat

Four MIDI clips are assigned to a different corner of a square. On play, the device generates a stream of melody from these sources.  The melody morphs between the four melodies in real time as the user moves the pointer around on the square. Points very close to a particular corner will produce a melody almost exactly like the MIDI clip assigned to that corner. Dragging the pointer from one corner to another will gradually morph the generated melody between the input melodies.


Each pointer location triggers a stochastic process which outputs a stream of musical notes.Transition tables store probabilities for each subsequent note based on the currently playing note. The probabilities range across musical transformations of the input melodies. This enables likelihoods to be calculated for all possible note sequences, maintaining a bias toward sequences more closely related to the input melodies.

In contrast to the Max-for-Live device Recomposer, this device does not require a separate Smalltalk server and network connection. The music analysis and algorithms are encapsulated in the ObjC++ based Max external object contained in the device. This device was in turn based on an earlier prototype developed in Smalltalk (Squeak and Pharo).

Practical restrictions on the input melodies used by the device (duple meter, diatonic, monophonic, etc) preclude making the device downloadable in its current form. Queries are welcome from those interested in experimenting/testing given the existing constraints.