MIDI time code (MTC) embeds the same timing information as standard
SMPTE timecode
SMPTE timecode ( or ) is a set of cooperating standards to label individual frames of video or film with a timecode. The system is defined by the Society of Motion Picture and Television Engineers in the SMPTE 12M specification. SMPTE revised t ...
as a series of small 'quarter-frame'
MIDI
MIDI (; Musical Instrument Digital Interface) is a technical standard that describes a communications protocol, digital interface, and electrical connectors that connect a wide variety of electronic musical instruments, computers, an ...
messages. There is no provision for the user bits in the standard MIDI time code messages, and
SysEx messages are used to carry this information instead. The quarter-frame messages are transmitted in a sequence of eight messages, thus a complete timecode value is specified every two frames. If the MIDI data stream is running close to capacity, the MTC data may arrive a little behind schedule which has the effect of introducing a small amount of jitter. In order to avoid this it is ideal to use a completely separate MIDI port for MTC data. Larger full-frame messages, which encapsulate a frame worth of timecode in a single message, are used to locate to a time while timecode is not running.
Unlike standard SMPTE timecode, MIDI timecode's quarter-frame and full-frame messages carry a two-bit flag value that identifies the rate of the timecode, specifying it as either:
* 24 frame/s (standard rate for
film work)
* 25 frame/s (standard rate for
PAL
Phase Alternating Line (PAL) is a colour encoding system for analogue television. It was one of three major analogue colour television standards, the others being NTSC and SECAM. In most countries it was broadcast at 625 lines, 50 fields (25 ...
video)
* 29.97 frame/s (drop-frame timecode for
NTSC
The first American standard for analog television broadcast was developed by National Television System Committee (NTSC)National Television System Committee (1951–1953), Report and Reports of Panel No. 11, 11-A, 12–19, with Some supplement ...
video)
* 30 frame/s (non-drop timecode for NTSC video)
MTC distinguishes between film speed and video speed only by the rate at which timecode advances, not by the information contained in the timecode messages; thus, 29.97 frame/s dropframe is represented as 30 frame/s dropframe at 0.1% pulldown.
MTC allows the synchronisation of a
sequencer or
DAW with other devices that can synchronise to MTC or for these devices to 'slave' to a tape machine that is striped with SMPTE. For this to happen a SMPTE to MTC converter needs to be employed. It is possible for a tape machine to synchronise to an MTC signal (if converted to SMPTE), if the tape machine is able to 'slave' to incoming timecode via motor control, which is a rare feature.
Time code format
The MIDI time code is 32 bits long, of which 24 are used, while 8 bits are unused and always zero. Because the full-time code messages requires that the most significant bits of each byte are zero (valid MIDI data bytes), there are really only 28 available bits and 4 spare bits.
Like most audiovisual timecodes such as
SMPTE time code
SMPTE timecode ( or ) is a set of cooperating standards to label individual frames of video or film with a timecode. The system is defined by the Society of Motion Picture and Television Engineers in the SMPTE 12M specification. SMPTE revised ...
, it encodes only time of day, repeating each 24 hours. Time is given in units of hours, minutes, seconds, and
frames. There may be 24, 25, or 30 frames per second.
Unlike most other timecodes, the components are encoded in straight binary, not
binary-coded decimal
In computing and electronic systems, binary-coded decimal (BCD) is a class of binary encodings of decimal numbers where each digit is represented by a fixed number of bits, usually four or eight. Sometimes, special bit patterns are used fo ...
.
Each component is assigned one byte:
; Byte 0 :
0rrhhhhh
: Rate (0–3) and hour (0–23).
:*
rr = 00
: 24 frames/s
:*
rr = 01
: 25 frames/s
:*
rr = 10
: 29.97 frames/s (SMPTE
drop-frame timecode
SMPTE timecode ( or ) is a set of cooperating standards to label individual frames of video or film with a timecode. The system is defined by the Society of Motion Picture and Television Engineers in the SMPTE 12M specification. SMPTE revised t ...
)
:*
rr = 11
: 30 frames/s
; Byte 1 :
00mmmmmm
: Minute (0–59)
; Byte 2 :
00ssssss
: Second (0–59)
; Byte 3 :
000fffff
: Frame (0–29, or less at lower
frame rate
Frame rate (expressed in or FPS) is the frequency (rate) at which consecutive images ( frames) are captured or displayed. The term applies equally to film and video cameras, computer graphics, and motion capture systems. Frame rate may also ...
s)
Full time code
When there is a jump in the time code, a single full-time code is sent to synchronize attached equipment. This takes the form of a special global system exclusive message:
:
F0 7F 7F 01 01 hh mm ss ff F7
The manufacturer ID of
7F
indicates a real-time universal message, the channel of
7F
indicates it is a global broadcast. The following ID of
01
identifies this is a time code type message, and the second
01
indicates it is a full-time code message. The 4 bytes of time code follow. Although MIDI is generally little-endian, the 4 time code bytes follow in big-endian order, followed by a
F7
"end of exclusive" byte.
After a jump, the time clock stops until the first following quarter-frame message is received.
Quarter-frame messages
When the time is running continuously, the 32-bit time code is broken into 8 4-bit pieces, and one piece is transmitted each quarter frame. I.e. 96—120 times per second, depending on the frame rate. Since it takes eight quarter frames for a complete time code message, the complete SMPTE time is updated every two frames. A quarter-frame messages consists of a status byte of 0xF1, followed by a single 7-bit data value: 3 bits to identify the piece, and 4 bits of partial time code. When time is running forward, the piece numbers increment from 0–7; with the time that piece 0 is transmitted is the coded instant, and the remaining pieces are transmitted later.
If the MIDI data stream is being rewound, the piece numbers count backward. Again, piece 0 is transmitted at the coded moment.
The time code is divided little-endian as follows:
See also
*
AES-EBU embedded timecode
AES3 is a standard for the exchange of digital audio signals between professional audio devices. An AES3 signal can carry two channels of pulse-code-modulated digital audio over several transmission media including balanced lines, unbalanced ...
*
Burnt-in timecode
Burnt-in timecode (often abbreviated to BITC by analogy to VITC) is a human-readable on-screen version of the timecode information for a piece of material superimposed on a video image. BITC is sometimes used in conjunction with "real" machine-r ...
*
CTL timecode
Control track longitudinal timecode, or CTL timecode, developed by JVC in the early 1990s, is a unique technique for embedding, or ''striping'', reference SMPTE timecode onto a videotape.
Similar to the way VITC timecode is embedded in the vert ...
*
DIN sync
DIN sync, also called Sync24, is a synchronization interface for electronic musical instruments. It was introduced in the early 1980s by Roland Corporation and has been superseded by MIDI.
Definition and history
DIN sync was introduced in t ...
*
Linear timecode
Linear (or Longitudinal) Timecode (LTC) is an encoding of SMPTE timecode data in an audio signal, as defined in SMPTE 12M specification. The audio signal is commonly recorded on a VTR track or other storage media. The bits are encoded using the ...
*
MIDI beat clock {{No footnotes, date=January 2020
MIDI beat clock, or simply MIDI clock, is a clock signal that is broadcast via MIDI to ensure that several MIDI-enabled devices such as a synthesizer or music sequencer stay in synchronization. Clock events are sen ...
*
Rewritable consumer timecode The Rewriteable Consumer Timecode (RCTC, RC Timecode, or RC Time Code) is a nearly frame accurate timecode method developed by Sony for 8mm and Hi8 analog tape formats.
*
Vertical interval timecode
Vertical Interval Timecode (VITC, pronounced "vitsee") is a form of SMPTE timecode encoded on one scan line in a video signal. These lines are typically inserted into the vertical blanking interval of the video signal.
With one exception, VITC ...
External links
MIDI Time Code information12 Feb 1987
{{DEFAULTSORT:Midi Timecode
MIDI standards
Timecodes
MIDI
SMPTE standards