
System messages fall into one of three categories: System Common, System Real Time and System Exclusive (SysEx). They do not include channel numbers and are intended to address all devices in a system.
There are only a few system common messages. Those deal primarily with instruments' on-board sequencers or drum machines, which may have pre-recorded MIDI sequences. System common messages have status bytes from 11110001 (241) to 11110111 (247) and up to two data bytes, though Tune Request and EOX have none.
A song position pointer is a register that holds the number of MIDI beats (a MIDI beat is a sixteenth note) since the start of a song (sequence). Because of the potentially large number of beats, the song position pointer uses two data bytes for a 14-bit value, least significant byte first as in Pitch Bend: up to 16,384 sixteenth notes, or 1,024 bars of 4/4. Other system common messages select which song to play (Song Select) or send a 'tune request' asking analog synthesizers to tune their oscillators (those were the days...).
System real time messages include the timing clock, a single byte sent 24 times per quarter note. Because its rate follows the tempo, it measures 'relative' time rather than clock time; six clocks make one MIDI beat, the sixteenth note counted by the song position pointer. An instrument can also lock the rates of its LFOs, arpeggiator, delays and other patch parameters to the timing clock, whether from its own sequencer or arriving over MIDI from a DAW (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 also include START, CONTINUE and STOP, which control a sequencer, drum machine or DAW: START begins at the top of the song, while CONTINUE resumes from where STOP left off (or from a song position pointer). "Active sensing" is an optional message, a single byte sent at least every 300 ms when there is no other MIDI activity. Once a receiver has seen one, a longer silence tells it the cable has been disconnected, and it turns its notes off. Not every instrument sends it, but many do—the Yamaha DX7 sends it constantly—so most sequencers and DAWs filter it out on input; if yours doesn't, it gets recorded, making for larger files. The last real time message is a system reset, which returns every receiver to its power-up state. The specification asks that it be used sparingly, and never sent automatically at power-up. System real time status bytes run from 11111000 (248) to 11111111 (255), and the messages have no data bytes, so one can be slipped in anywhere, even between the bytes of another message, without delay.
One bar of 4/4. The dashed line marks where playback stopped and later continued.
Below is a chart of the system common and system real time messages.
| Status Byte | Data Byte 1 | Data Byte 2 | Description |
|---|---|---|---|
| System Common | |||
| 11110001 | 0nnndddd | MIDI Time Code Quarter Frame (n=message type, d=value; see MIDI Time Code) | |
| 11110010 | 0lllllll | 0hhhhhhh | Song Position Pointer (l=least significant 7 bits, h=most significant 7 bits) |
| 11110011 | 0sssssss | Song Select (s=song number) | |
| 11110110 | none | Tune Request | |
| 11110111 | none | EOX (end of system exclusive message) | |
| System Real Time | |||
| 11111000 | none | Timing Clock | |
| 11111010 | none | Start (from the beginning) | |
| 11111011 | none | Continue | |
| 11111100 | none | Stop | |
| 11111110 | none | Active Sensing | |
| 11111111 | none | System Reset | |
System Exclusive (or simply SysEx) messages expanded the functionality of MIDI in many ways. At first, this code class was used primarily for editor/librarian functions. Large patch banks could be stored on a computer through SysEx codes and then sent back into the instrument when necessary. Certain instruments, such as the Yamaha TX816, had no way to edit sounds from their own front panels and so depended on SysEx patch dumps from a DX7 or a computer to change their programming. In addition, once these large patch sets were in the computer, the editor part of the editor/librarian could make changes to the programs before sending them back into the instrument. Eventually, manipulating the patch parameters with SysEx in real time directly on the instrument also became possible. The now-defunct Opcode company made several editors, including Galaxy, a universal librarian whose Galaxy Plus Editors version could also edit many different instruments; Mark of the Unicorn offered a similar program, Unisyn. Believe it or not, there are now editor/librarian mobile apps available that edit vintage instruments. MidiQuesti, Sound Quest's iPad version of its MIDI Quest editor/librarian, claims support for some 900 instruments!
Opcode's Yamaha DX7II and TX802 Editor/Librarian
But the internal structure of a Yamaha DX7 was different from that of a Roland Juno-106. Sending a DX7 patch to a Juno would be useless. So instrument manufacturers would register with the MIDI Manufacturers Association (or, in Japan, the body now called AMEI) and be given an 'exclusive' number or SysEx ID that identifies the manufacturer a SysEx message is intended for (ID #1 went to Sequential Circuits). When the one-byte IDs began to run out, three-byte IDs beginning with 00 were added.
A System Exclusive code set begins with 11110000 (240 decimal or F0 hex), followed by the manufacturer ID, then by any number of data bytes (each 0–127) and ends with 11110111 (247 decimal or F7 hex), meaning End of SysEx message (EOX). No other codes are to be transmitted during a SysEx message (except a system real time message).
Values in hexadecimal, with binary below. Status bytes are amber, manufacturer IDs teal and data bytes gray.
Normally, after the manufacturer ID, each maker will have its own instrument model subcode, so a Yamaha DX7 will ignore a Yamaha SY77's patch dump. In addition, many instruments have a device ID separate from their basic channel, so several units of the same model can share a MIDI setup, each responding only to the patch dumps addressed to it.
SysEx is far from retired. Web browsers that support Web MIDI—Chrome, Edge and Firefox, though not Safari—can send and receive SysEx once you give a site permission, so some manufacturers, Novation among them, now offer their editor/librarians as web pages, with nothing to install. And two IDs, 7E and 7F, are set aside for universal SysEx messages that any manufacturer's equipment can respond to; the next section covers the most important of them.