Part 2: MIDI Beat Clock and the Three Dimensions of Sync

Posted on

Let’s throw in a little information about MIDI, then we’ll get to the hair splitting.  MIDI (Musical Instrument Digital Interface) was created way back in the early 1980’s by a couple of forward thinking engineers named Dave Smith and Ikutaru Kakehashi.  Originally conceived as a way to pass digitally encoded information about a performance between different synthesizers, the protocol quickly expanded to include other music related functions.  Synchronization was, and is, one of those functions.  The MIDI 1.0 Spec includes several important messages that allow communication of synchronization signals over a MIDI connection.  And therein lies the rub: several important messages!

Time for that hair splitting . . . 

MIDI Beat Clock is probably deserving of mention first, and was likely included as a type of system message in the original MIDI spec so that you could get you beat box to play in time with your sequencer or arpeggiator.  MIDI Beat Clock is meant to address the dimension of speed/tempo.  And Beat Clock succeeds in doing that, to the point that if you change speed (tempo) in the master device, the slave devices will follow along in real time and play along at the new speed.  But strictly speaking, Beat Clock only communicates speed.  Much like the long forgotten FSK (Frequency Sync Keying) sync signal, Beat Clock creates something like a digitally encoded square wave that acts like teeth on a gear.  If the gear turns faster, any other gears connected to it turn faster as well.  Beat Clock operates at 24 pulses per quarter note (so it is tied to musical tempo), but aside from possibly having a first pulse and a last (and even that’s not alway true, see the screen shots of Reaktor 5 below), it does not all by itself include a stop or start message.  True, a device that is set to slave to incoming MIDI clock will sit idle until the clock starts streaming in, but that leaves something to be desired in the transport department.  Hence, Beat Clock is what we used to call “dumb sync.”  Speed?  Yes.  But transport and location?  No.

But don’t forget that forward thinking nature that characterized MIDI’s progenitors.  To address this discrepancy, they simply included additional messages capable of supplying these functions within the MIDI Spec.  For start and stop, we have the appropriately named ‘MIDI Start’ and ‘MIDI Stop’ system messages (and ‘MIDI Continue’ as well).  They do pretty much what the names say, with the added detail that ‘Stop’ followed by ‘Start’ takes you back to the beginning, while ‘Stop’ followed by ‘Continue’ picks up from where you left off.  For location instructions, the MIDI Spec includes the system message ‘Song Position Pointer.’  It communicates location points in Bars & Beats form, which makes more sense for a tempo dependent pursuit like music composition than hours/minutes/seconds/frames.

All this functionality was included in the original MIDI 1.0 Spec, the version of MIDI we’re all still using to this day.  Not bad for a thirty year old computer protocol!  It seems to have proven a little more robust than, say, Windows 1.0.  Still want more?  There’s MTC (MIDI Time Code), in case you prefer hours/minutes/seconds/frames over bars and beats.  But that’s a discussion for another time, and anyways it doesn’t help us answer our original question:

“T/F  MIDI Beat Clock is capable of satisfying all three dimensions of sync”

My answer is “False” because the MIDI Beat Clock message can’t do the job all by itself.  However, in combination with MIDI Start/Stop/Continue and Song Position Pointer, we have a blessed trinity of synchronicity.

I will acknowledge that there is a valid counterargument to be made, which makes perfect sense when these messages have to applied in practical usage:  The MIDI Beat Clock function, when enabled in the typical digital audio workstation application, bundles together the relevant Start/Stop/Continue and Song Position Pointer messages so that the system works like you’d expect it to, and with less fuss.  The programmers who code these systems, God bless ‘em, are thinking you’d rather simply enable the ‘Transmit MIDI Beat Clock’ check box in your application’s preferences than having to enable a separate check box for all three MIDI message types.  And hey, only the most insufferably compulsive MIDI literalist (yours truly) is so enamored of, let alone aware of, the minute details of the MIDI Spec that they would actually take time to parse out the differences between the separate MIDI system messages, right?

In summary, when you press play in your Beat Clock enabled DAW, it sends out the messages required to ensure that slave devices not only start, but that they start from the desired position and all play at the same speed.  In short, they all follow the Three Dimensions of Sync, a functionality that is indeed supported by the MIDI Specification.

Addendum:  To illustrate the above argument, I have included some screen captures that display messages generated by several computer based music production tools.  The MIDI output of each DAW was sent to an application called MIDI Monitor, an excellent open source utility that is provided FREE by Snoize (http://www.snoize.com/MIDIMonitor).  MIDI Monitor was used to display the MIDI messages sent when playback was quickly started and stopped in several popular DAW’s:

Pro Tools:

“Enable MIDI Beat Clock for . . . “ for the relevant MIDI port was checked in the MIDI Beat Clock box under the Setup Menu.

Result:  Messages sent begin with Song Position Pointer (0 0), Start, Clock, Stop, and the Song Position Pointer location of the Stop (3 0).

 

MIDI Sources Screenshot

 

Logic:

“Transmit MIDI Clock to . . . “ was checked in the Synchronization/MIDI box under the Settings tab, “Allow to send Song Position Pointer while playing” was checked in the MIDI/Sync box under the Preferences tab.

Result:  Messages sent begin with Song Position Pointer (0 0), Start, Clock, and Stop.

 

MIDI Source Screenshot2

 

Ableton Live:

Sync set to ‘On’ for the relevant MIDI port in the Preferences/MIDI Sync box.

Result:  I actually had to work to coax a Song Position Pointer message out of Live.  It doesn’t appear to send it if the MIDI Clock Type is set to ‘Pattern.’  If set to ‘Song,’ the position message is sent when playback is started by clicking on the timeline in Arrangement mode. Messages sent begin with Song Position Pointer (9 0), Continue, Clock, and Stop (Live dares to be different, as always . . . )

MIDI Sources 3

Native Instruments Reaktor 5:

Output set to ‘On’ for the relevant MIDI port in the Audio and MIDI Settings Box under the File Menu, ‘Send Clock to MIDI Output’ enabled under Settings Menu.

Result:  Interestingly, Reaktor is sending MIDI Beat Clock continuously from the moment the above settings are made.  Song Position Pointer (0 0), Continue, and Stop messages are sent when transport commands are initiated, but act independently of the Beat Clock message transmission.  This is not completely unique!

MIDI Source 4

Acknowledgements:
Synchronization in the Recording Studio, Fred Katz, Omega Recording Studios
MIDI Manufacturer’s Association, Tutorial:  History of MIDI
http://www.midi.org/aboutmidi/tut_history.php

Leave a Reply