<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.sarg.dev/index.php?action=history&amp;feed=atom&amp;title=MIDI_timecode</id>
	<title>MIDI timecode - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.sarg.dev/index.php?action=history&amp;feed=atom&amp;title=MIDI_timecode"/>
	<link rel="alternate" type="text/html" href="https://wiki.sarg.dev/index.php?title=MIDI_timecode&amp;action=history"/>
	<updated>2026-06-25T21:23:29Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://wiki.sarg.dev/index.php?title=MIDI_timecode&amp;diff=13234&amp;oldid=prev</id>
		<title>imported&gt;Kvng: tag engvar</title>
		<link rel="alternate" type="text/html" href="https://wiki.sarg.dev/index.php?title=MIDI_timecode&amp;diff=13234&amp;oldid=prev"/>
		<updated>2024-12-26T17:51:56Z</updated>

		<summary type="html">&lt;p&gt;tag engvar&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Short description|SMPTE timecode as MIDI messages}}&lt;br /&gt;
{{More citations needed|date=November 2024}}&lt;br /&gt;
{{Use British English|date=December 2024}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;MIDI time code&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;&amp;#039;MTC&amp;#039;&amp;#039;&amp;#039;) embeds the same timing information as standard [[SMPTE timecode]] as a series of small &amp;#039;quarter-frame&amp;#039; [[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. &amp;lt;ref&amp;gt;{{Cite web |title=SMPTE &amp;amp; MTC (MIDI Time Code) |url=https://www.soundonsound.com/techniques/smpte-mtc-midi-time-code |access-date=2024-11-29 |website=www.soundonsound.com}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Unlike standard SMPTE timecode, MIDI timecode&amp;#039;s quarter-frame, and full-frame messages carry a two-bit flag value that identifies the rate of the timecode, specifying it as either:&lt;br /&gt;
* 24 frame/s (standard rate for [[Frame rate|film work]]) &lt;br /&gt;
* 25 frame/s (standard rate for [[PAL]] video)&lt;br /&gt;
* 29.97 frame/s (drop-frame timecode for [[NTSC]] video)&lt;br /&gt;
* 30 frame/s (non-drop timecode for NTSC video) &amp;lt;ref&amp;gt;{{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}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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. &amp;lt;ref&amp;gt;{{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}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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 &amp;#039;slave&amp;#039; 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 &amp;#039;slave&amp;#039; to incoming timecode via motor control, which is a rare feature.&lt;br /&gt;
&lt;br /&gt;
==Time code format==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Unlike most other timecodes, the components are encoded in straight binary, not [[binary-coded decimal]].&lt;br /&gt;
&lt;br /&gt;
Each component is assigned one byte:&lt;br /&gt;
; Byte 0 : &amp;lt;code&amp;gt;0rrhhhhh&amp;lt;/code&amp;gt;: Rate (0–3) and hour (0–23).&lt;br /&gt;
:* &amp;lt;code&amp;gt;rr = 00&amp;lt;/code&amp;gt;: 24 frames/s&lt;br /&gt;
:* &amp;lt;code&amp;gt;rr = 01&amp;lt;/code&amp;gt;: 25 frames/s&lt;br /&gt;
:* &amp;lt;code&amp;gt;rr = 10&amp;lt;/code&amp;gt;: 29.97 frames/s (SMPTE [[drop-frame timecode]])&lt;br /&gt;
:* &amp;lt;code&amp;gt;rr = 11&amp;lt;/code&amp;gt;: 30 frames/s&lt;br /&gt;
; Byte 1 : &amp;lt;code&amp;gt;00mmmmmm&amp;lt;/code&amp;gt;: Minute (0–59)&lt;br /&gt;
; Byte 2 : &amp;lt;code&amp;gt;00ssssss&amp;lt;/code&amp;gt;: Second (0–59)&lt;br /&gt;
; Byte 3 : &amp;lt;code&amp;gt;000fffff&amp;lt;/code&amp;gt;: Frame (0–29, or less at lower [[frame rate]]s)&lt;br /&gt;
&lt;br /&gt;
=== Full time code ===&lt;br /&gt;
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:&lt;br /&gt;
: &amp;lt;code&amp;gt;F0 7F 7F 01 01 hh mm ss ff F7&amp;lt;/code&amp;gt;&lt;br /&gt;
The manufacturer ID of &amp;lt;code&amp;gt;7F&amp;lt;/code&amp;gt; indicates a real-time universal message, the channel of &amp;lt;code&amp;gt;7F&amp;lt;/code&amp;gt; indicates it is a global broadcast.  The following ID of &amp;lt;code&amp;gt;01&amp;lt;/code&amp;gt; identifies this is a time code type message, and the second &amp;lt;code&amp;gt;01&amp;lt;/code&amp;gt; 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 &amp;lt;code&amp;gt;F7&amp;lt;/code&amp;gt; &amp;quot;end of exclusive&amp;quot; byte.&lt;br /&gt;
&lt;br /&gt;
After a jump, the time clock stops until the first following quarter-frame message is received.&lt;br /&gt;
&lt;br /&gt;
=== Quarter-frame messages ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
If the MIDI data stream is being rewound, the piece numbers count backward.  Again, piece 0 is transmitted at the coded moment.&lt;br /&gt;
&lt;br /&gt;
The time code is divided little-endian as follows:&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+MIDI time code pieces&lt;br /&gt;
! Piece # || Data byte || Significance&lt;br /&gt;
|-&lt;br /&gt;
! 0&lt;br /&gt;
| &amp;lt;code&amp;gt;0000&amp;amp;thinsp;ffff&amp;lt;/code&amp;gt; || Frame number lsbits&lt;br /&gt;
|-&lt;br /&gt;
! 1&lt;br /&gt;
| &amp;lt;code&amp;gt;0001&amp;amp;thinsp;000f&amp;lt;/code&amp;gt; || Frame number msbit&lt;br /&gt;
|-&lt;br /&gt;
! 2&lt;br /&gt;
| &amp;lt;code&amp;gt;0010&amp;amp;thinsp;ssss&amp;lt;/code&amp;gt; || Second lsbits&lt;br /&gt;
|-&lt;br /&gt;
! 3&lt;br /&gt;
| &amp;lt;code&amp;gt;0011&amp;amp;thinsp;00ss&amp;lt;/code&amp;gt; || Second msbits&lt;br /&gt;
|-&lt;br /&gt;
! 4&lt;br /&gt;
| &amp;lt;code&amp;gt;0100&amp;amp;thinsp;mmmm&amp;lt;/code&amp;gt; || Minute lsbits&lt;br /&gt;
|-&lt;br /&gt;
! 5&lt;br /&gt;
| &amp;lt;code&amp;gt;0101&amp;amp;thinsp;00mm&amp;lt;/code&amp;gt; || Minute msbits&lt;br /&gt;
|-&lt;br /&gt;
! 6&lt;br /&gt;
| &amp;lt;code&amp;gt;0110&amp;amp;thinsp;hhhh&amp;lt;/code&amp;gt; || Hour lsbits&lt;br /&gt;
|-&lt;br /&gt;
! 7&lt;br /&gt;
| &amp;lt;code&amp;gt;0111&amp;amp;thinsp;0rrh&amp;lt;/code&amp;gt; || Rate and hour msbit&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
*[[AES-EBU embedded timecode]]&lt;br /&gt;
*[[Burnt-in timecode]]&lt;br /&gt;
*[[CTL timecode]]&lt;br /&gt;
*[[DIN sync]]&lt;br /&gt;
*[[Linear timecode]]&lt;br /&gt;
*[[MIDI beat clock]]&lt;br /&gt;
*[[Rewritable consumer timecode]]&lt;br /&gt;
*[[Vertical interval timecode]]&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
{{reflist}}&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* [https://web.archive.org/web/20120212181214/http://home.roadrunner.com/~jgglatt/tech/mtc.htm MIDI Time Code information]&lt;br /&gt;
* [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&lt;br /&gt;
* [http://www.somascape.org/midi/tech/spec.html#syscommsgs Guide to the MIDI Software Specification]&lt;br /&gt;
&lt;br /&gt;
{{DEFAULTSORT:Midi Timecode}}&lt;br /&gt;
[[Category:MIDI standards]]&lt;br /&gt;
[[Category:Timecodes]]&lt;br /&gt;
[[Category:SMPTE standards]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Kvng</name></author>
	</entry>
</feed>