What is MIDI Sync?
The solution is to make all your MIDI machines use the same timing source as a reference. One machine is designated as the timing master and that transmits timing information to the other MIDI gear in your network. Other devices are designated as slave devices and set to use an external timing source.
If the timing master knows that it's position in a song is at exactly at 0 hours, 2 minutes, 03 seconds, and 27 frames into the song it will transmit 00:02:03:027 to the other MIDI gear. Your sequencer will usually display this time format indicating the current playback position within the song. So the slave devices can maintain their position within their own stored sequence.
By this method the internal timing of the master device is communicated to all slave devices. Slave devices are set up to use an external timing source instead of their own internal clocks. SMPTE, MTC, MIDI Clock Sync, MMC and SPP are the communications protocols that can be used to do this.
As ever you need to minimize delays due to MIDI chaining. Synchronizing devices should be placed next to the master device in any MIDI chain. If several devices are to use the synchronization code then use a star network layout, rather than daisy chain network. It should be noted that all set ups are not suitable for more than 1 slave device.
Overview of Synchronization
There are 3 main areas of synchronization:
- Real Time Sync
- Musical Time Sync
- Control Sync
Real Time Sync
SMPTE (Society of Motion Pictures and Television Engineers) is a timing sync used in Film and Video. Currently SMPTE code is embedded within digital video so that no sync tracks are required. With analog tape recorders SMPTE was "striped" onto the last track of a multi-track tape recorder. On playback the SMPTE track is transmitted to a sequencer using a standard audio cable to connect to a MIDI interface and so control the sequencer.
MTC (MIDI Time Code) is a timing sync transmitted as a series of MIDI messages that tells MIDI MIDI slave devices exactly what time it is at any given moment in hours, minutes, seconds and frames within the MIDI master device. MTC is effectively SMPTE timecode being transmitted down a MIDI cable using the MIDI message format. It is sent in quarter frame intervals as MIDI system exclusive data.
Musical Time Sync
MIDI Clock is a timing sync similar to MTC. MIDI clock sync was originally used to tell devices when to start, stop, continue and match the tempo of the master device. This is perfect for making synths and samplers synchronize effects, LFOs, and delay time. MIDI clock also passes tempo information which is important when synchronizing time based sound sources such as arpeggiators and drum loops.
SPP (Song Position Pointer) is musical timing optionally transmitted with MIDI clock signals. SPP is based on bars, beats, and subdivisions of beats down to "ticks" (also called clocks). Ticks are the finest MIDI resolution of any MIDI device. SPP is sent every 6 clocks or ticks as System Exclusive Data. For some devices that is all you need and you don't have to use MTC, which is based on hours, minutes, seconds, frames and quarter frames.
MMC (MIDI Machine Control) is a control sync intended for remotely controlling the transport controls on multi-track recorders and sequencers.
If the multi-track is the MMC master, when you press "play" on the multitrack, the sequencer will start. If you make the sequencer the MMC master, pressing "play" will start the multi-track.
MMC only triggers the transport controls and sends a locate point information. No timing information is transmitted. Commands are effectively "Go to", "start", "stop", "rewind", "fast forward". To complete the set up send MTC from the MMC slave to the MMC master device.
The sync features available on any device are pretty varied, and the implementations on specific machines can also vary in adherence to the MIDI standard on early devices. All this means that you will likely have to experiment with the exact MIDI sync set up that will work for you.
Usually MTC is used for synchronizing sequencers and multi-track recorders, and for controlling synths MIDI clocks are used. Many multi-track recorders will not use MIDI clocks, many drum machines won't accept SMPTE, and some devices won't use MMC. Some can be a MMC master but not a slave. Usually, there is one combination that will work, but don't bank on it. Synch mechanisms on some devices does not work at all.
Always confirm your synch needs before you buy any gear that needs to use synchronization in your set up.
Musical time based synchronization is useful for entirely musical systems, but it falls short of suitability for real time applications like film or video.
MIDI Synchronization In More Detail
System Realtime Messages
MIDI clock is a part of a group of messages called "System Realtime" messages:
- F8 Timing ClockA Timing Clock message is a status message sent to sync the timing between machines.
- FA StartStart will cause synchronized machines to begin playback from the start of the song
- FB ContinueContinue signals slave devices to playback from the point the song stopped
- FC StopStop will halt playback in slave devices.
Set "ticks per quarter note" to be the same on both master and slave devices.
As you can see this is a very basic form of MIDI sync, but it is often enhanced using SPP.
Song Position Pointer
SPP is a system common message. An SPP message tells slave devices their current location in the song. SPP are useful when there are loops or jumps within a song sequence. The SPP is stored in terms of the number of MIDI beats from the start of the song, so it relates to musical time, not real time.
SPP uses two data bytes. As the MSB of data bytes must be zero that leaves 14 bits, or 16,384 MIDI beats, to represent the song position.
SPP is often used along with a song select message, F3, to tell devices like drum machine which song/pattern to playback.
Real Time Synchronization
MIDI Time Code
MTC has two functions:
- A way to distribute SMPTE/EBU timecode in a MIDI network
- A way to distribute set-up messages
As mentioned earlier SMPTE/EBU timecode represents time in hours, minutes seconds and frames. There can be up to 24 hours and the number of frames varies according to the video standard that the time code is normally associated.
To transmit this as MIDI it is converted into a standard MIDI data format: status byte, data bytes.
There are two MTC sync message types:
- Quarter-Frame Message - running time code
- Full-Frame Message - one-time time code updates (used in high speed tape spooling)
Quarter-Frame Messages use status byte F1. Ine timecode frame is too much information to be contained in one standard MIDI message, so the dats is split into 8 separate messages.
Full-Frame Messages use Universal Real-Time Messages, part of the System Exclusive message group. In addition to continuous timecode updates one-time general updates where one full frame is transmitted as one ten byte message. Set up messages contain information about locations of cue points, event starts, recording dropins and outs etc. Full Frame
Message format also includes user bits, often used for labelling tapes with information about their origin but can contain anything.
Discuss this article in our Music Forum.
Songstuff Site Crew
Site Crew conduct draw on their experience and contacts to perform interviews, and write quality articles on a variety of subjects. In addition the Songstuff Community members regularly contribute articles and Songstuff has many regular contributors from across the field of music.
Songstuff Site Crew are highly experienced and cover a broad range of music industry roles including label owners, music educators, professional musicans, songwriters, band managers and other music industry professionals.
This article has been written by one of the Songstuff Site Crew.