The first concept that needs to
be understood is the difference between absolute and relative
time. MIDI Time Code and SMPTE Time Code are representations
of absolute time in that they follow hours, minutes and seconds
just like your watch. Absolute time is always the same and you
cannot speed it up or slow it down. Relative time is a reference
to a musical piece that has an inner tempo. A composition may
take three minutes to perform at a tempo of 80 bpm (beats per
minute), but would take only a minute and a half if the tempo
was increased to 160 bpm. An advanced MIDI sequencer is able to
work with both absolute time and relative time and make adjustments
when there are changes in the relative time of a composition.
In the chart below the upper line represents absolute time
and includes an example of 17 seconds of time. Both MIDI Time
Code and SMPTE Time Code may be used to represent absolute time
which is fixed and may not be moved. Following the absolute time
line are examples of repeated quarter notes at 3 different tempos
(relative time). Notice that 2 measures have passed at 4 seconds
with a tempo of 120 bps, but it would take 8 seconds for the same
two measures at a tempo of 60 bpm and 16 seconds for the same
two measures at a tempo of 30 bpm.
return to the menu
MIDI Timing Clock (MIDI Sync)
is a status byte (F8) that is sent 24 times per quarter note for
note resolution. Advanced sequencers will also subdivided each
MIDI clock twenty times for a resolution of 480 times per quarter
note. Standard - 24 PPQ. Professional - 480 PPQ. If the tempo
changes, the speed of the MIDI Timing Clock will pass at a faster
rate, but the number of status bytes (F8) per quarter note will
stay the same.
An F8 status byte is a system real time message that
is used in a MIDI sequence to connect all the different rhythm
values. The image above is a simple sequence consisting of quarter
notes in the 1st measure, half notes in the 2nd measure, a whole
note in the 3rd measure, followed by eighth-notes and sixteenth
notes in the 4th and 5th measure, and finally a whole note in
the last measure.
To the left is a graph depicting the same information in an
event listing. Notice that the first number represents the measure,
followed by the beat and finally the F8 timing clock resolution.
In the first three measures each note starts exactly on the beat
which corresponds to a timing clock reference of 0. Notice at
the 4th measure that the timing clock has changed to values of
240. Remember that 480 times is the total for each quarter note
and the 240 value is an eight note. In measure 5, the value changes
to 120 which now represents the sixteenth note.
If the tempo of this sequence was changed to a different number,
the numbers and values on these two charts would not change.
What would change is the location of the notes in respect to
absolute time. The value of the new tempo would map out a new
chart for placement along the MIDI Time Code.
Now we will look at what MIDI Time Code and SMPTE Time Code
have in common (absolute time) and how it is used in conjunction
with MIDI Timing Clock (relative time).
A Time Code is an electrical
or digital signal that gives a common timing reference for syncing
MIDI devices with other electronic devices. The evolution of timing
references has changed dramatically since the beginning of MIDI,
from the use of click track, PPQ Clocks, FSK Clocks, to the more
sophisticated use of SMPTE Time Code and MIDI Time Code.
SMPTE Time Code (Society of Motion
Picture and Television Engineers) Was originally developed
by NASA to sync computers together. SMPTE is a digitally encoded
labeling system that strips a tape with an exact timing reference.
It is a 1200 Hz modulated square wave that uses a biphase modulation
to encode the signal on a tape. SMPTE is used to sync video with
music, audio and sound effects. It may be used with a multi-track
tape recorder and a synchronizer to sync a MIDI sequence with
the tape or to sync two multi-track tape recorders. It is important
to remember that a SMPTE Time Code signal is made up of digital
words that contain 80 bits. These bits are used to represent the
type of SMPTE signal, the actual location which includes hours,
minutes, seconds, and frames, as well as user bits for dates and
reel numbers. This digital number is converted to an audio tone
so that it may be recorded on to an analog tape.
There are two different ways to record a SMPTE Time Code on
to a tape. LTC Time Code (Longitudinal Time Code)
is SMPTE Time Code encoded on one of the audio tracks or in-between
the audio tracks of a video tape. This type of time code needs
to be running in order to be read. A window burn is used on
a working copy of a tape with LTC in order to address the code
in slow or paused position. VITC Time Code (Vertical Interval
Time Code) is SMPTE Time Code encoded on the Video signal
in the Interval between frames. This allows for the use of SMPTE
at very slow speeds without the need of a window burn or the loss
of an audio track.
There are four different SMPTE formats in the standard.
Each format refers to the number of frames per second. In film
there are 24 frames which corresponds to the number of
pictures per second. In European film and video the number of
frames per second is 25. In the United States the original
black and white TV programs ran at exactly 30 frames per
second. This changed with the advent of color to run at 29.97
frames per second. In order to compensate for this discrepancy,
there is a SMPTE format called "drop frame" at 30
frames per second. There are exactly 30 frames for every second,
except two frames are dropped at the beginning of every minute,
except at minutes 0, 10, 20, 30, 40 and 50. A total of 108 frames
are dropped for each minute to adjust to the 29.97 frames per
second. The standard that is used for most applications is "30
drop frame" and listed below are some examples.
When MIDI was invented there was
no specific data for synchronizing with SMPTE Time Code. If a
musician was trying to use MIDI sequences to synchronize with
a video tape they needed a sync device. Song Position Pointer
is a System Common status byte F2, that is generated every six
MIDI clocks. It is used as a reference to find a location in a
song by counting the Song Position Pointer total and diving by
16 (4 per quarter note in a 4/4 time signature) to find the measure.
A Tempo Map is used by a sequencer to change tempo at certain
locations in a sequence. In order to synchronize with Song Position
Pointer, a sync device is used to decide tempo and tempo
changes in a song and the amount of measures in a song, using
SPP and tempo map. The sync device can then figure out the amount
of SMPTE time that passes at certain "hits". This was a
very complicated way of synchronizing a MIDI sequence to a video
tape, so in 1987, MIDI Time Code, was added to the MIDI specification
in order to have a direct link of MIDI with SMPTE Time Code.
MIDI Time Code is a digital
conversion of the SMPTE Time Code that allows MIDI devices to
lock to the SMPTE Time Code in real time. Every frame of the SMPTE
Time Code is broken down into 4 frames of MIDI Time Code with
an average of 120 times a second. There are System Common Quarter
- Frame messages which are used when the system is running and
System Exclusive Full Messages to address any location.
MIDI Time Code Quarter Frame Messages (QFM) are used
when a system is running. It takes a total of 8 QFM to address
one SMPTE Frame. That means that SMPTE is updated every two frames.
Each QFM starts with the F1 Status byte, followed by a Data byte
were the first nibble will be 0 through 7 followed by a nibble
that is the actual number.
n= First nibble - 0 - Frame count LS nibble
n= First nibble - 1 - Frame count MS nibble
n= First nibble - 2 - Seconds count LS nibble
n= First nibble - 3 - Seconds count MS nibble
n= First nibble - 4 - Minutes count LS nibble
n= First nibble - 5 - Minutes count MS nibble
n= First nibble - 6 - Hours count LS nibble
n= First nibble - 7 - Hours count MS nibble and SMPTE Type
x= Second nibble - Actual number of the Time Code 0 through
In the example to the right are red arrows pointing
to specific MIDI time code data in a sequencer track. The upper
right arrow is pointing to a specific absolute time number of
1 hour, 3 minutes, 7 seconds and 8 frames. Below this arrow is
an arrow pointing to the music that is being played at this location.
The arrow on the left is pointing to an offset number. Offset
is a way of setting the MTC time at a certain number to begin
a sequence or cue.
Here is an event listing of the notes and the arrows
are pointing to an exact moment in time. In the top arrows the
note D2 is played in measure 39, beat 1, with a MIDI clock resolution
of 70. This note occurs at 1 hour, 1 minute, 22 seconds, 6 frames
and 51 bit resolution.
In the lower arrows the note C2 is played in measure 48, beat
1, with a MIDI clock resolution of 220. The time reference of
this note is 1 hour, 1 minute, 38 seconds, 29 frames, and 34
It is important to remember that if the tempo of the music
changed, the time code numbers would change, but the value and
placement of the notes would stay the same. The next two example
clearly show the relationship of the MIDI time code with the
MIDI timing clock.