The first Quarter Frame message contains the low nybble (bits 0 to 3) of the Frame count. The second Quarter Frame message contains the high nybble (bits 4 to 7) of the Frame count. The third and fourth messages contain the low and high nybbles of the Seconds count. The fifth and sixth messages contain the low and high nybbles of the Minutes count. The seventh and eighth messages contain the low and high nybbles of the Hours count. The eighth message (Hours high-nybble) also contains the timecode frames-rate information (24, 25, 30 drop, or 30 fps).
To recap, if we take the Quarter Frame message to be of the generic form,
0nnn dddd
Remember, in the MIDI standard, all data bytes always start with a zero and the Quarter Frame data byte is no exception. The value of nnn denotes the following
0nnn xyyd
Ideally, eight Quarter Frame messages should be sent per frame in order to piece together the whole timecode value. However this would mean 8 x 25 = 200 messages per second, or 3200 baud. Representing, as this does, about 10 percent of the available MIDI bandwidth, this was considered too high an overhead, and - instead - only four Quarter Frame messages are sent per frame: hence the name! This has the obvious disadvantage that MTC is only accurate to two-frames. From a practical point of view, because it takes eight Quarter Frames messages to reconstruct the current timecode value, when a piece of equipment does finally piece the time-value together, it is actually two frames behind the real current time. So, for display purposes, the slave should always add two frames to the current time.
F0 7F cc 01 01 hr mn sc fr F7
cc is the SysEx channel (0 to 127). It is suggested that a device default to using its Manufacturer's SysEx ID number for this channel, giving the musician the option of changing it. Channel number 0x7F is used to indicate that all devices on the daisy-chain should recognize this Full Frame message. The hr, mn, sc, and fr are the hours, minutes, seconds, and frames of the current SMPTE time. The hours byte also contains the SMPTE Type as per the Quarter Frame's Hours High Nibble message.
The Full Frame simply cues a slave to a particular SMPTE time. The slave doesn't actually start running until it starts receiving Quarter Frame messages. (Which implies that a slave is stopped whenever it is not receiving Quarter Frame messages). The master should pause after sending a Full Frame, and before sending a Quarter Frame, in order to give the slave time to cue to the desired SMPTE time. During fast forward or rewind (ie, shuttle) modes, the master should not continuously send Quarter Frame messages, but rather, send Full Frame messages at regular intervals. Quarter-frame messages and Full Frame messages can be sent in forward or reverse order so that MIDI devices can remain in sync with tape machines running forwards or backwards.
Back to home page
Address all mail to richard@richardbrice.net