Jump to content

MIDI beat clock: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
Clarification on "MIDI beats" terminology (not quarter notes as one perhaps would expect)
Added external link on SPP
Line 27: Line 27:
* [http://www.midiclock.com/ Free Software to generate a midiclock beat signal]
* [http://www.midiclock.com/ Free Software to generate a midiclock beat signal]
* [http://www.e-rm.de/midiclock.php Dedicated hardware MIDI beat clock generator]
* [http://www.e-rm.de/midiclock.php Dedicated hardware MIDI beat clock generator]
* [https://www.sweetwater.com/insync/song-position-pointer-spp-2/ Song Position Pointer (SPP)]


[[Category:Encodings]]
[[Category:Encodings]]

Revision as of 06:19, 12 September 2017

MIDI beat clock (also known as MIDI timing 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. It is not MIDI timecode.

Unlike MIDI timecode, the MIDI beat clock is tempo-dependent. Clock events are sent at a rate of 24 ppqn (pulses per quarter note). Those pulses are used to maintain a synchronized tempo for synthesizers that have BPM-dependent voices and also for arpeggiator synchronization. Location information can be specified using MIDI Song Position Pointer (SPP, see below), although many simple MIDI devices ignore this message.

Because of limitations in MIDI and synthesizers, devices driven by MIDI beatclock are often subject to clock drift.


MIDI beat clock defines the following real time messages:

  • clock (decimal 248, hex 0xF8)
  • start (decimal 250, hex 0xFA)
  • continue (decimal 251, hex 0xFB)
  • stop (decimal 252, hex 0xFC)

MIDI also specifies a System Common message called Song Position Pointer (SPP). SPP can be used in conjunction with the above realtime messages for complete sync. This message consists of 3 bytes; a status byte (decimal 242, hex 0xF2), followed by two 7-bit data bytes (least significant byte first) forming a 14-bit value which specifies the number of "MIDI beats" (1 MIDI beat = a 16th note = 6 clock pulses) since the start of the song. This message only needs to be sent once if a jump to a different position in the song is needed. Thereafter only realtime clock messages need to be sent to advance the song position one tick at a time.

See also