Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
MIDI timecode
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Short description|SMPTE timecode as MIDI messages}} {{More citations needed|date=November 2024}} {{Use British English|date=December 2024}} '''MIDI time code''' ('''MTC''') embeds the same timing information as standard [[SMPTE timecode]] as a series of small 'quarter-frame' [[MIDI]] messages. There is no provision for the user bits in the standard MIDI time code messages, and [[:en:SysEx#System Exclusive messages|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. <ref>{{Cite web |title=SMPTE & MTC (MIDI Time Code) |url=https://www.soundonsound.com/techniques/smpte-mtc-midi-time-code |access-date=2024-11-29 |website=www.soundonsound.com}}</ref> 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 [[Frame rate|film work]]) * 25 frame/s (standard rate for [[PAL]] video) * 29.97 frame/s (drop-frame timecode for [[NTSC]] video) * 30 frame/s (non-drop timecode for NTSC video) <ref>{{Cite web |title=MIDI Time Code and MIDI Clock Explained |url=https://www.dummies.com/article/technology/software/music-recording-software/general-music-recording-software/midi-time-code-and-midi-clock-explained-179973/ |access-date=2024-11-29 |website=dummies |language=en}}</ref> 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. <ref>{{Cite web |last=SchΓΌtte |first=Benjamin |last2=Bachmann |first2=Cristina |title=Timecode Standards |url=https://archive.steinberg.help/nuendo/v10/en/cubase_nuendo/topics/synchronization/synchronization_timecode_standards_c.html |access-date=2024-11-29 |website=archive.steinberg.help |language=en-US}}</ref> MTC allows the synchronisation of a [[MIDI sequencer|sequencer]] or [[Digital audio workstation|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 require 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]], it encodes only time of day, repeating each 24 hours. Time is given in units of hours, minutes, seconds, and [[Film frame|frame]]s. 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]]. Each component is assigned one byte: ; Byte 0 : <code>0rrhhhhh</code>: Rate (0β3) and hour (0β23). :* <code>rr = 00</code>: 24 frames/s :* <code>rr = 01</code>: 25 frames/s :* <code>rr = 10</code>: 29.97 frames/s (SMPTE [[drop-frame timecode]]) :* <code>rr = 11</code>: 30 frames/s ; Byte 1 : <code>00mmmmmm</code>: Minute (0β59) ; Byte 2 : <code>00ssssss</code>: Second (0β59) ; Byte 3 : <code>000fffff</code>: Frame (0β29, or less at lower [[frame rate]]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: : <code>F0 7F 7F 01 01 hh mm ss ff F7</code> The manufacturer ID of <code>7F</code> indicates a real-time universal message, the channel of <code>7F</code> indicates it is a global broadcast. The following ID of <code>01</code> identifies this is a time code type message, and the second <code>01</code> 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 <code>F7</code> "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 message 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: {|class="wikitable" |+MIDI time code pieces ! Piece # || Data byte || Significance |- ! 0 | <code>0000 ffff</code> || Frame number lsbits |- ! 1 | <code>0001 000f</code> || Frame number msbit |- ! 2 | <code>0010 ssss</code> || Second lsbits |- ! 3 | <code>0011 00ss</code> || Second msbits |- ! 4 | <code>0100 mmmm</code> || Minute lsbits |- ! 5 | <code>0101 00mm</code> || Minute msbits |- ! 6 | <code>0110 hhhh</code> || Hour lsbits |- ! 7 | <code>0111 0rrh</code> || Rate and hour msbit |} ==See also== *[[AES-EBU embedded timecode]] *[[Burnt-in timecode]] *[[CTL timecode]] *[[DIN sync]] *[[Linear timecode]] *[[MIDI beat clock]] *[[Rewritable consumer timecode]] *[[Vertical interval timecode]] ==References== {{reflist}} ==External links== * [https://web.archive.org/web/20120212181214/http://home.roadrunner.com/~jgglatt/tech/mtc.htm MIDI Time Code information] * [https://web.archive.org/web/20110629053759/http://web.media.mit.edu/~meyers/mcgill/multimedia/senior_project/MTC.html MIDI time code specification] 12 Feb 1987 * [http://www.somascape.org/midi/tech/spec.html#syscommsgs Guide to the MIDI Software Specification] {{DEFAULTSORT:Midi Timecode}} [[Category:MIDI standards]] [[Category:Timecodes]] [[Category:SMPTE standards]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:Cite web
(
edit
)
Template:More citations needed
(
edit
)
Template:Reflist
(
edit
)
Template:Short description
(
edit
)
Template:Use British English
(
edit
)