Chapter Three: MIDI
1. How does the MIDI system work? Page 8
System Common and System Real Time Messages
System messages do not include channel numbers and are intended to address all devices in a system.
There are only a few system common messages that deal primarily with instrument's on-board sequencers or drum machines, which may have pre-recorded MIDI sequences. system common messages have both a status byte begining with 11110001 (240) and one or more data bytes.
A song position pointer is a register that holds the number of MIDI beats since the start of a song (sequence). Other system common messages select which song to play and also a 'tune request' for analog synthesizers to tune their oscillators (those we the days...). Because of the potentially large number of beats, the song position pointer uses two data bytes for a 14-bit message.
System real time messages include a timing clock, which sends 24 'clocks' per quarter note (note that this depends on the tempo setting and so is 'relative' time). Timing clocks of an instrument's internal sequencer can also control the rates of LFO's and other patch parameters (for example, on the Kurzweil K2xxx series, if the clock source is left on internal, the A Clock and B Clock parameters will use the sequencer tempo).
Real time messages can also send a START and STOP messages to an on-board sequencer. "Active sensing" was an optional message that sent a status byte every 300 ms. when there was no other MIDI activity. More recent instruments seem to have dropped this, but our yamah DX7 sent active sensing which was recorded on our sequencing software, making for larger files. The last real time message is a system reset, which should return the condition of the receiver to the start-up condition. System Real Time messages begin with 11111000 (248) and have no data bytes.
Below is a chart of the implemented system common and system real time messages.
| Status Byte | Data Byte 1 | Data Byte 2 | Description |
|---|---|---|---|
system commom |
|||
| 11110010 | 0lllllll | 0hhhhhhh | Song Position Pointer (l=least significant bit, h=most significant bit) |
| 11110011 | 0sssssss | Song Select (s=song number) | |
| 11110110 | none | Tune Request | |
| 11110111 | none | EOX (end of system exclusive mssage) | |
system real time |
|
||
| 11111000 | none | Timing Clock | |
| 11111010 | none | Start (song) | |
| 11111011 | none | Stop | |
| 11111110 | none | Active Sensing | |
| 11111111 | none | System Reset |