Digital Sound & Music: Concepts, Applications, & Science, Chapter 6, last updated 6/25/2013
next section. In both the binary and hexadecimal representations, we can see the two nibbles as
two separate pieces of information, which isn’t possible in decimal notation.
A convenient way to move from hexadecimal to binary is to translate each nibble into
four bits and concatenate them into a byte. For example, in the case of 0x7C, the 7 in
hexadecimal becomes 0111 in binary. The C in hexadecimal becomes 1100 in binary. Thus
0x7C is 01111100 in binary. (Note that the symbols A through F correspond to decimal values
10 through 15, respectively, in hexadecimal notation.)
MIDI Messages, Types, and Formats 18.104.22.168
In Section 6.1.3, we showed you an example of a commonly used MIDI message, Note On, but
now let’s look at the general protocol.
MIDI messages consist of one or more bytes. The first byte of each message is a status
byte, identifying the type of message being sent. This is followed by 0 or more data bytes,
depending on the type of message. Data bytes give more information related to the type of
message, like note pitch and velocity related to Note On.
All status bytes have a 1 as their most significant bit, and all data bytes have a 0. A byte
with a 1 in its most significant bit has a value of at least 128. That is, 10000000 in binary is
equal to 128 in decimal, and the maximum value that an 8 bit binary number can have
(11111111) is the decimal value 255. Thus, status bytes always have a decimal value between
128 and 255. This is 10000000 through 11111111 in binary and 80 through FF in hex.
MIDI messages can be divided into two main categories: Channel messages and System
messages. Channel messages contain the channel number. They can be further subdivided into
voice and mode messages. Voice messages include Note On, Note Off, Polyphonic Key
Pressure, Control Change, Program Change, Channel Pressure/Aftertouch, and Pitch Bend. A
mode indicates how a device is to respond to messages on a certain channel. A device might be
set to respond to all MIDI channels (called Omni mode), or it might be instructed to respond to
polyphonic messages or only monophonic ones. Polyphony involves playing more than one
note at the same time.
System messages are sent to the whole system rather than a particular channel. They can
be subdivided into Real Time, Common, and System Exclusive messages (SysEx). The System
Common messages include Tune Request, Song Select, and Song Position Pointer. The system
real time messages include Timing Clock, Start, Stop, Continue, Active Sensing, and System
Reset. SysEx messages can be defined by manufacturers in their own way to communicate
things that are not part of the MIDI standard. The types of messages are diagrammed in Figure
6.15. A few of these messages are shown in Table 6.1.