MIDI System Exclusive message
SysEx messages are those MIDI messages that are used to manipulate device parameters that are manufacturer- or model-specific. The normal set of midi commands cannot be used to access these device-specific (system exclusive) parameters, simply because the standard is, by its very nature, not device specific.
The MIDI standard specifies, amongst other things, the manner in which data are to be encoded for transfer between MIDI devices. For example, the first byte in a MIDI message, called the status byte, tells the receiving machine which type of message is being sent. Since the MIDI standard deals primarily with musical instruments, it makes sense that there are some common messages defined. They are:
These types of messages can easily be identified by the receiving device. The first (high order) bit in the status byte, and only in the status byte, is always 1. The high nibble of this byte further identifies the type of the message. For the above, these are 0x8 to 0xE respectively.
The remaining 0xF nibble is used for system exclusive messages. First, a 0xF0 byte is sent to notify the device that the following bytes will be SysEx. After this, the device's unique manufacturer ID is sent. Then the SysEx data are sent, followed by a closing 0xF7 byte. Sysex messages are the only messages with two status bytes (start and end).
At his point, it is important to note the following difference between an ordinary MIDI status byte and a SysEx command: ordinary status bytes are channel specific. A normal status byte has an aforementioned message type code in the high order nibble, followed by a channel number in the low order nibble. This way, a note, for instance, can be played on a specific midi channel. The low order nibble in a SysEx status byte is only used to separate start messages from stop messages.
It is often necessary to set a specific SysEx channel in the receiving machine. This way, more than one machine in the network can receive SysEx data. The actual channel number is then sent in one of the subsequent bytes. Devices can then choose to ignore SysEx data that was intended for other devices.
The nature of the actual SysEx data, as well as the way it is interpreted by the device, differs extremely from one manufacturer and model to another. The specifications should be available from the manufacturer of the receiving device. Since only status bytes can have their high order bits set, all subsequent SysEx data are coded in the lower seven bits of the intermediate bytes.
Manufacturer ID's:
source: the MIDI specification