Music Lego

Interval Research Corporation, 1998

Music Lego (a.k.a. Music Tetris) was built in MediaFlow as an exploration into using constraints and morphing to create songs in a game-like environment that combines assembly and playback. Music Lego lets you assemble songs out of short clips of music stored as digital audio, and play them while they are being assembled.

Each music clip is annotated with metadata that describe the clip's harmony, melody, and tempo. Music Lego uses metadata to help you find clips that fit well together. The metadata describe both the clip itself and desired attributes of any clip that follows it in a song. When you insert a new clip that doesn't "fit" the preceding clip, Music Lego morphs the new clip by transposing it to match the desired harmonic root and speeding up or slowing down the new clip to match the tempo of the song being constructed, with entertaining and sometimes unexpected results.

The MusicLego user interface consists of three areas:

The song area on the left shows the song being constructed, which consists of three clips, each of which has a tab at the bottom whose color indicates the desired harmony of the next clip. Adjacent clips that match harmonically appear to interlock. The song is being played as it is constructed; the black triangles show the current playback time.

The clips area on the upper right shows a list of song clips that can be added to the end of the current song. This list is generated by searching a database of song clips to find all the clips that satisfy the current constraints. The background color of each clip indicates the harmony of the clip. The label also describes the clip's harmony and desired next harmony (e.g., "C->Eb")

The constraints area on the lower right shows the current constraints. For each of three musical properties - tempo, root, and melody - the constraint can be:

  • None - no constraint is in effect regarding this musical property,
  • Match - the next clip must match the last clip regarding this property, or
  • Adjust - the next clip must either directly match or be morphable to match the last clip with regard to this property.