next up previous
Next: General MIDI Up: Introduction to MIDI (Musical Previous: Hardware Aspects of MIDI

MIDI Messages

MIDI messages are used by MIDI devices to communicate with each other.

Structure of MIDI messages:

Classification of MIDI messages:

                                               ----- voice messages
                   ---- channel messages -----|
                  |                            ----- mode messages
                  |
MIDI messages ----| 
                  |                            ---- common messages
                   ----- system messages -----|---- real-time messages
                                               ---- exclusive messages

A. Channel messages:

- messages that are transmitted on individual channels rather that globally to all devices in the MIDI network.

A.1. Channel voice messages:

Voice Message           Status Byte      Data Byte1          Data Byte2
-------------           -----------   -----------------   -----------------
Note off                      8x      Key number          Note Off velocity
Note on                       9x      Key number          Note on velocity
Polyphonic Key Pressure       Ax      Key number          Amount of pressure
Control Change                Bx      Controller number   Controller value
Program Change                Cx      Program number      None
Channel Pressure              Dx      Pressure value      None            
Pitch Bend                    Ex      MSB                 LSB

Notes: `x' in status byte hex value stands for a channel number.

Example: a Note On message is followed by two bytes, one to identify the note, and on to specify the velocity.

To play note number 80 with maximum velocity on channel 13, the MIDI device would send these three hexadecimal byte values: 9C 50 7F

A.2. Channel mode messages: - Channel mode messages are a special case of the Control Change message ( Bx or 1011nnnn). The difference between a Control message and a Channel Mode message, which share the same status byte value, is in the first data byte. Data byte values 121 through 127 have been reserved in the Control Change message for the channel mode messages.

1st Data Byte      Description                Meaning of 2nd Data Byte
-------------   ----------------------        ------------------------
     79        Reset all  controllers            None; set to 0
     7A        Local control                     0 = off; 127  = on
     7B        All notes off                     None; set to 0
     7C        Omni mode off                     None; set to 0
     7D        Omni mode on                      None; set to 0
     7E        Mono mode on (Poly mode off)      **
     7F        Poly mode on (Mono mode off)      None; set to 0

** if value = 0 then the number of channels used is determined by the receiver; all other values set a specific number of channels, beginning with the current basic channel.

B. System Messages:

B.1. System real-time messages:

System Real-Time Message         Status Byte 
------------------------         -----------
Timing Clock                         F8
Start Sequence                       FA
Continue Sequence                    FB
Stop Sequence                        FC
Active Sensing                       FE
System Reset                         FF

B.2. System common messages:

System Common Message   Status Byte      Number of Data Bytes
---------------------   -----------      --------------------
MIDI Timing Code            F1                   1
Song Position Pointer       F2                   2
Song Select                 F3                   1
Tune Request                F6                  None

B.3. System exclusive message:


next up previous
Next: General MIDI Up: Introduction to MIDI (Musical Previous: Hardware Aspects of MIDI
Dave Marshall
10/4/2001