# concatenativish music tracker

## Brent Kerby — 2001-04-29 02:47:44

    Hi, all concatenative people... Manfred, Billy, John, and others who may be

    lurking... I know I haven't posted anything here for quite awhile, but I'm

    still here and have been reading most of the posts.

    I'm really happy to see ye all working on the new system.

    Anyway, I just wanted to let you know about a project I'm starting work on:

    a music tracker. You may have heard of trackers such Impulse Tracker or Buzz

    Tracker. These are cool, but they're quite tedious to write music for. The

    goal of this project is ultimately, I hope, to produce a tracker that is so

    speedy and easy to write with that live improvision is even practical.

    Here are some ideas of how to achieve that goal:

    - allow patterns to trigger other patterns, just like patterns trigger

    samples. Thus patterns could be reused without resort to tedious

    cut-and-paste.

    - encourage a style in which patterns are simple, defined usually in a

    single line, a la FORTH. thus there should not be mostly blank volume,

    instrument, and effects columns and blank rows wasting space.

    If patterns are going to be written in a single line, we need a compact

    notation. Here's an idea...

    We use the letters "a" through "y" to start notes (this is a two octave

    span, if we're using the chromatic scale). But before you can play a note,

    you must have a number on the stack telling which instrument (or pattern) to

    use.

    Wait, why have a stack of instrument numbers, instead of just a single

    current instrument?

    Well, a stack is useful so that we can write a pattern that may be played

    several times

    using different instruments. In order to use such a pattern, one would have

    to have two items on the stack: the number of real instrument making the

    sound, and on top of that, the number of the generic pattern. Also, one

    could conceivably make generic patterns taking two instruments; then, one

    would probably need combinators to fiddle with them: "swap", "dup", "zap",

    etc. (i propose "zap" as a cooler name for "drop" or "pop")

    What about rhythm? we do not want blank spaces everywhere. so we do this:

    have all notes by default take up note beat before moving to the next (at

    which point the previous note is cut off, or terminated gracefully). So we

    introduce some symbols:

    "." holds a note for an extra beat (may be used repeated times, for real

    long notes)

    ";" cuts the length of a beat in half, for making eighth notes.

    "," cuts the length of a beat in three, for making triplets.

    "'" cuts the length of a beat in four, for sixteenth notes.

    "-" doubles the length of a beat, for restoring a beat that was cut in half,

    or if many long notes are coming.

    "=" triples the length of a beat.

    "/" quadruples the length of a beat.

    Except for ".", all of these cause a permanent change in the tempo. Here's

    how the melody of Twinkle Twinkle would look (by convention, "m" is used as

    the tonic note, i.e., the main note that the song would like to resolve to):

        mmttvvt.rrqqoom.ttrrqqo.ttrrqqo.mmttvvt.rrqqoom.

    Too bad its so simple that we didn't have to use any of the special rhythm

    devices. Okay, how about the Alphabet song, based on the same melody (hope

    you're reading with a fixed width font):

             mmttvvt. rrqq;oooo-m. ttr.qqo. ;ttt.-r.qqo.  (...)

    lyrics:  abcdefg  hijk lmno p  qrs tuv   w    x y&z

    Well, i've probably bored you all to death, if you're not musically

    oriented. but if you happen to have suggestions or questions, feel free...

    there is some slightly working source code, available at

    http://www.tunes.org/~iepos/kt-0.0.tar.gz, but it's not very good and needs

    to be rewritten.

    there is no real working volume control or combinators yet. also, to play

    two notes or patterns simultaneously, enclose them in "[]"s... but i doubt

    this is the most elegant way this could be done.

    cheers.

    - Brent Kerby