|Microsoft DirectX 9.0|
Most applications don't deal directly with MIDI messages. However, an application can send a MIDI command as a performance messagefor example, to make a control change.
MIDI messages consist of a status byte and usually one or two data bytes. System exclusive MIDI messages are of variable length.
The status byte indicates the type of message and, in some cases, the channel that is to receive the message. When several events of the same kind are in sequence in the file, the status byte can be omitted. Data bytes are recognizable because the high bit is always clear, whereas in status bytes it is always set.
The timing of MIDI events is controlled by a number before each message, indicating how many ticks separate this event from the last. The actual duration of a tick depends on the time format in the file header.
Note There is no guarantee that MIDI messages will be processed in the same order in which they occur in the source data. DirectMusic messages are delivered in order of time stamp, and two MIDI messages with identical times might not be delivered in the expected order. Care must be taken, in authoring MIDI content, to leave an interval between events if they must take place sequentially. For example, don't place a program change at the same time as a note that depends on the program change.
MIDI messages are divided into two main categories: