[LAU] MIDI clock & sync

Gabriel M. Beddingfield gabriel at teuton.org
Sat Aug 1 20:04:18 EDT 2009


Hi Julien,

I don't know enough about MTC to answer your other questions... but I can 
answer your MIDI Clock questions and explain a bit how it works (so you 
know its limitations).[1]

On Sun, 2 Aug 2009, Julien Claassen wrote:
> 1. Is MIDI clock realtime? If so, it could still be used for simple alignment
> purposes.

Yes, and Yes.  When they say that MIDI Clock is "realtime" it means that 
the commands are a single byte that can be sent anytime, anywhere (even 
in the middle of a SysEx dump).  So, they are given priority on the MIDI 
bus.

MIDI Clock works like this:  The messages are START, STOP, CONTINUE, TICK.

START:  Start playing from the beginning of the piece on the _next_ TICK.
STOP: Stop playing now.
CONTINUE:  Start playing where we left off, on the _next_ TICK.
TICK:  1/24th of a beat.

TICKs have to be evenly spaced in time... and they indicate the tempo. 
The faster the ticks come, the faster the tempo is.

So, if we abbreviate TICK with a dot (.), a typically performance would 
look like this:

START
. . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .
. . . .
STOP

CONTINUE
         . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .
STOP

Thus, the machines stay synchronized... but if there are any errors there 
is no means of recovery or indicating "In case you forgot or have lost 
count... the next TICK is the DOWN-BEAT."  Nor is there any way to say 
"Position to bar 99, beat 3."[2]

There's a little more to MIDI Clock usage (like song position pointers)... 
but this is the basic capability (and IN-capability).

Peace,
Gabriel

[1] FWIW, my favorite MIDI reference is here:
     http://www.blitter.com/~russtopia/MIDI/~jglatt/
     http://www.blitter.com/~russtopia/MIDI/~jglatt/tech/midispec.htm

[2] With song position pointers, you can (sort of) specify the number
     of beats from the start of the song.  But you can't say "bar 99,
     beat 3."  You have to know the number of beats in measures 1-98,
     add 3 (for the 3rd beat), and then multiply the sum by 4.  That's
     the number that you send.



More information about the Linux-audio-user mailing list