The MIDI Specification

The MIDI Specification

                    MIDI 1.0 Specification:

Status       Data Byte(s)     Description
D7----D0     D7----D0
-------------------------------------------------------------------------
Channel Voice Messages
-------------------------------------------------------------------------
1000cccc     0nnnnnnn         Note Off event.
             0vvvvvvv         This message is sent when a
                              note is released (ended).
                              (nnnnnnn) is the note number.
                              (vvvvvvv) is the velocity.

1001cccc     0nnnnnnn         Note On event.
             0vvvvvvv         This message is sent when a
                              note is depressed (start).
                              (nnnnnnn) is the note number.
                              (vvvvvvv) is the velocity.

1010cccc     0nnnnnnn         Polyphonic Key Pressure (After-touch).
             0vvvvvvv         This message is sent when the pressure
                              (velocity) of a previously
                              triggered note changes.
                              (nnnnnnn) is the note number.
                              (vvvvvvv) is the new velocity.

1011cccc     0ccccccc         Control Change.
             0vvvvvvv         This message is sent when a controller
                              value changes.  Controllers include devices
                              such as pedals and levers.
                              Certain controller numbers are reserved
                              for specific purposes. See Channel Mode Messages.
                              (ccccccc) is the controller number.
                              (vvvvvvv) is the new value.

1100cccc     0ppppppp         Program Change.
                              This message sent when the patch number changes.
                              (ppppppp) is the new program number.

1101nnnn     0ccccccc         Channel Pressure (After-touch).
                              This message is sent when the channel pressure
                              changes. Some velocity-sensing keyboards do not
                              support polyphonic after-touch. Use this
                              message to send the single greatest velocity
                              (of all te current depressed keys).
                              (ccccccc) is the channel number.

1110nnnn     0lllllll         Pitch Wheel Change.
             0mmmmmmm         This message is sent to indicate a change in the
                              pitch wheel.  The pitch wheel is measured by a
                              fourteen bit value. Center (no pitch change) is
                              2000H.  Sensitivity is a function of the
                              transmitter.
                              (llllll) are the least significant 7 bits.
                              (mmmmmm) are the most significant 7 bits.
-------------------------------------------------------------------------
Channel Mode Messages  (See also Control Change, above)
-------------------------------------------------------------------------
1011nnnn     0ccccccc         Channel Mode Messages.
             0vvvvvvv         This the same code as the Control
                              Change (above), but implements Mode
                              control by using reserved controller
                              numbers.  The numbers are:

                              Local Control.
                              When Local Control is Off, all devices
                              on a given channel will respond only to
                              data received over MIDI.  Played data, etc.
                              will be ignored.  Local Control On
                              restores the functions of the normal
                              controllers.
                              c = 122, v =   0: Local Control Off
                              c = 122, v = 127: Local Control On

                              All Notes Off.
                              When an All Notes Off is received,
                              all oscillators will turn off.
                              c = 123, v =   0: All Notes Off

                              (See text for description of actual
                              mode commands.)
                              c = 124, v =   0: Omni Mode Off
                              c = 125, v =   0: Omni Mode On
                              c = 126, v =   M: Mono Mode On (Poly Off)
                              where M is the number of channels
                              (Omni Off) or 0 (Omni On)
                              c = 127, v =   0: Poly Mode On (Mono Off)
                              (Note: These four messages also cause
                              All Notes Off)
.pa
-------------------------------------------------------------------------
System Common Messages
-------------------------------------------------------------------------
11110000     0iiiiiii         System Exclusive.
             0ddddddd         This message makes up for all that MIDI
                ..            doesn't support.  (iiiiiii) is a seven
                ..            bit Manufacturer's I.D. code.  If the
             0ddddddd         synthesizer recognizes the I.D. code as
             11110111         its own, it will listen to the rest of
                              the message (ddddddd).  Otherwise, the
                              message will be ignored.  System Exclusive
                              is used to send bulk dumps such as patch
                              parameters and other non-spec data.
                              (Note: Real-Time messages ONLY may be
                              interleaved with a System Exclusive.)

11110001                      Undefined.

11110010     0lllllll         Song Position Pointer.
             0mmmmmmm         This is an internal 14 bit register that
                              holds the number of MIDI beats (1 beat=
                              six MIDI clocks) since the start of
                              the song.  l is the LSB, m the MSB.

11110011     0sssssss         Song Select.
                              The Song Select specifies which sequence
                              or song is to be played.

11110100                      Undefined.

11110101                      Undefined.

11110110                      Tune Request.
                              Upon receiving a Tune Request, all analog
                              sythesizers should tune their oscillators.

11110111                      End of Exclusive.
                              Used to terminate a System Exclusive
                              dump (see above).
.pa
-------------------------------------------------------------------------
System Real-Time Messages
-------------------------------------------------------------------------
11111000                      Timing Clock.
                              Sent 24 times per quarter note when
                              synchronization is required (see text).

11111001                      Undefined.

11111010                      Start.
                              Start the current sequence playing.
                              (This message will be followed with
                              Timing Clocks).

11111011                      Continue.
                              Continue at the point the sequence was
                              Stopped.

11111100                      Stop.
                              Stop the current sequence.

11111101                      Undefined.

11111110                      Active Sensing.
                              Use of this message is optional.  When
                              initially sent, the receiver will expect
                              to receive another Active Sensing message
                              each 300ms (max), or it will be assume
                              that the connection has been terminated.
                              At termination, the receiver will turn off
                              all voices and return to normal (non-
                              active sensing) operation.

11111111                      Reset.
                              Reset all receivers in the system to
                              power-up status.  This should be used
                              sparingly, preferably under manual
                              control.  In particular, it should not
                              be sent on power-up.