Midi Specification
Midi Specification
Midi Specification
MIDI specification
MIDI: MUSICAL INSTRUMENT DIGITAL INTERFACE
Specification 1.0
INTRODUCTION
MIDI is the acronym for Musical Instrument Digital Interface.
MIDI enables synthesizers, sequencers, home computers, rhythm machines, etc. to be intercon- nected through a
standard interface.
Each MIDI-equipped instrument usually contains a receiver and a transmitter. Some instruments may contain only a
receiver or transmitter. The receiver receives messages in MIDI format and executes MIDI commands. It consists of
an optoisolator, Universal Asynchronous Receiver/Transmitter (UART), and other hardware needed to perform the
intended functions. The transmitter originates messages in MIDI format, and transmits them by way of a UART and
line driver.
The MIDI standard hardware and data format are defined in this specification.
CONVENTIONS
Status and Data bytes given in Tables I through VI are given in binary.
Numbers followed by an "H" are in hexadecimal.
All other numbers are in decimal.
HARDWARE
The interface operates at 31.25 (+/- 1%) Kbaud, asynchronous, with a start bit, 8 data bits (D0 to D7), and a stop bit.
This makes a total of 10 bits for a period of 320 microseconds per serial byte.
Circuit: 5 mA current loop type. Logical 0 is current ON. One output shall drive one and only one input. The receiver
shall be opto-isolated and require less than 5 mA to turn on. Sharp PC-900 and HP 6N138 optoisolators have been
found acceptable. Other high-speed optoisolators may be satisfactory. Rise and fall times should be less than 2
microseconds.
Connectors: DIN 5 pin (180 degree) female panel mount receptacle. An example is the SWITCHCRAFT 57 GB5F.
The connectors shall be labelled "MIDI IN" and "MIDI OUT". Note that pins 1 and 3 are not used, and should be left
unconnected in the receiver and transmitter.
MIDI specification
NOTES:
1. Optoisolator is Sharp PC-900. (HP 6N138 or other optoisolator can be used with appropriate changes.)
2. Gates "A" are IC or transistor.
3. Resistors are 5%
Cables shall have a maximum length of fifty feet (15 meters), and shall be terminated on each end by a corresponding
5-pin DIN male plug, such as the SWITCHCRAFT 05GM5M. The cable shall be shielded twisted pair, with the
shield connected to pin 2 at both ends.
A "MIDI THRU" output may be provided if needed, which provides a direct copy of data coming in MIDI IN. For
very long chain lengths (more than three instruments), higher-speed optoisolators must be used to avoid additive
rise/fall time errors which affect pulse width duty cycle.
DATA FORMAT
All MIDI communication is achieved through multi-byte "messages" consisting of one Status byte followed by one or
two Data bytes, except Real-Time and Exclusive messages (see below).
MESSAGE TYPES
Messages are divided into two main categories: Channel and System.
Channel
Channel messages contain a four-bit number in the Status byte which address the message specifically to one
of sixteen channels. These messages are thereby intended for any units in a system whose channel number
matches the channel number encoded into the Status byte.
There are two types of Channel messages: Voice and Mode.
Voice
To control the instrument's voices, Voice messages are sent over the Voice Channels.
Mode
To define the instrument's response to Voice messages, Mode messages are sent over the instument's
Basic Channel.
System
System messages are not encoded with channel numbers.
There are three types of System messages: Common, Real-Time, and Exclusive.
Common
Common messages are intended for all units in a system.
Real-Time
Real-Time messages are intended for all units in a system. They contain Status bytes only -- no Data
bytes. Real-Time messages may be sent at any time -- even between bytes of a message which has a
MIDI specification
different status. In such cases the Real-Time message is either ignored or acted upon, after which the
receiving process resumes under the previous status.
Exclusive
Exclusive messages can contain any number of Data bytes, and are terminated by an End of Exclusive
(EOX) or any other Status byte. These messages include a Manufacturer's Identification (ID) code. If
the receiver does not recognize the ID code, it should ignore the ensuing data.
So that other users can fully access MIDI instruments, manufacturers should publish the format of data
following their ID code. Only the manufacturer can update the format following their ID.
DATA TYPES
Status Bytes
Status bytes are eight-bit binary numbers in which the Most Significant Bit (MSB) is set (binary 1). Status
bytes serve to identify the message type, that is, the purpose of the Data bytes which follow the Status byte.
Except for Real-Time messages, new Status bytes will always command the receiver to adopt their status, even
if the new Status is received before the last message was completed.
Running Status
For Voice and Mode messages only, when a Status byte is received and processed, the receiver will
remain in that status until a different Status byte is received. Therefore, if the same Status byte would
be repeated, it may (optionally) be omitted so that only the correct number of Data bytes need be sent.
Under Running Status, then, a complete message need only consist of specified Data bytes sent in the
specified order.
The Running Status feature is especially useful for communicating long strings of Note On/Off
messages, where "Note On with Velocity of 0" is used for Note Off. (A separate Note Off Status byte is
also available.)
Running Status will be stopped when any other Status byte intervenes, except that Real-Time messges
will only interrupt the Running Status temporarily.
Unimplemented Status
Any status bytes received for functions which the receiver has not implemented should be ignored, and
subsequent data bytes ignored.
Undefined Status
Undefined Status bytes must not be used. Care should be taken to prevent illegal messages from being
sent during power-up or power-down. If undefined Status bytes are received, they should be ignored, as
should subsequent Data bytes.
Data Bytes
Following the Status byte, there are (except for Real-Time messages) one or two Data bytes which carry the
content of the message. Data bytes are eight-bit binary numbers in which the MSB is reset (binary 0). The
number and range of Data bytes which must follow each Status byte are specified in the tables which follow.
For each Status byte the correct number of Data bytes must always be sent. Inside the receiver, action on the
message should wait until all Data bytes required under the current status are received. Receivers should
ignore Data bytes which have not been properly preceeded by a valid Status byte (with the exception of
"Running Status," above).
file:///G4/Sites/www-music108-F01/aPages/02/MIDI%20specification.html (3 of 11) [10/17/2001 11:40:43 PM]
MIDI specification
CHANNEL MODES
Synthesizers contain sound generation elements called voices. Voice assignment is the algorithmic process of routing
Note On/Off data from the keyboard to the voices so that the musical notes are correctly played with accurate timing.
When MIDI is implemented, the relationship between the sixteen available MIDI channels and the synthesizer's voice
assignment must be defined. Several Mode messages are available for this purpose (see Table III). They are Omni
(On/Off), Poly, and Mono. Poly and Mono are mutually exclusive, i.e., Poly Select disables Mono, and vice versa.
Omni, when on, enables the receiver to receive Voice messages in all voice Channels without discrimination. When
Omni is off, the receiver will accept Voice messages from only the selected Voice Channel(s). Mono, when on,
restricts the assignment of Voices to just one voice per Voice Channel (Monophonic.) When Mono is off (=Poly On),
any number of voices may be allocated by the Receiver's normal voice assignment algorithm (Polyphonic.)
For a receiver assigned to Basic Channel "N," the four possible modes arising from the two Mode messages are:
Mode
Omni
On
Poly
On
Mono
Off
Poly
Off
Mono
Four modes are applied to transmitters (also assigned to Basic Channel N). Transmitters with no channel selection
capability will normally transmit on Basic Channel 1 (N=0).
Mode
Omni
On
Poly
On
Mono
MIDI specification
in Channel N.
3
Off
Poly
Off
Mono
A MIDI receiver or transmitter can operate under one and only one mode at a time. Usually the receiver and
transmitter will be in the same mode. If a mode cannot be honored by the receiver, it may ignore the message (and
any subsequent data bytes), or it may switch to an alternate mode (usually Mode 1, Omni On/Poly).
Mode messages will be recognized by a receiver only when sent in the Basic Channel to which the receiver has been
assigned, regardless of the current mode. Voice messages may be received in the Basic Channel and in other channels
(which are all called Voice Channels), which are related specifically to the Basic channel by the rules above,
depending on which mode has been selected.
A MIDI receiver may be assigned to one or more Basic Channels by default or by user control. For example, an eightvoice synthesizer might be assigned to Basic Channel 1 on power-up. The user could then switch the instrument to be
configured as two four-voice synthesizers, each assigned to its own Basic Channel. Separate Mode messages would
then be sent to each four-voice synthesizer, just as if they were physically separate instruments.
TABLE I
SUMMARY OF STATUS BYTES
STATUS
D7---D0
# OF DATA
BYTES
DESCRIPTION
2
2
2
2
1
MIDI specification
1101nnnn
1110nnnn
1
2
System Messages:
11110000
11110sss
11111ttt
*****
0 to 2
0
System Exclusive
System Common
System Real Time
NOTES:
1. nnnn: N-1, where N = Channel #, i.e. 0000 is Channel 1, 0001 is Channel 2 ... 1111 is Channel 16.
2. *****: 0iiiiiii, data, ..., EOX;
iiiiiii:
Identification
3. sss: 1 to 7
4. ttt: 0 to 7
TABLE II
CHANNEL VOICE MESSAGES
STATUS
1000nnnn
DATA BYTES
0kkkkkkk 0vvvvvvv
1001nnnn
0kkkkkkk 0vvvvvvv
1010nnnn
0kkkkkkk 0vvvvvvv
1011nnnn
0ccccccc 0vvvvvvv
1100nnnn
0ppppppp
1101nnnn
0vvvvvvv
DESCRIPTION
Note Off (see notes 1-4),
vvvvvvv: note off velocity
Note On (see notes 1-4),
vvvvvvv - 0: velocity,
vvvvvvv = 0: note off
Polyphonic Key Pressure (After-Touch),
vvvvvvv: pressure value
Control Change,
ccccccc: control # (0-121) (see notes 5-8),
vvvvvvv: control value,
ccccccc = 122 thru 127: Reserved, (See Table III)
Program Change,
ppppppp: program number (0-127)
Channel Pressure (After-Touch)
vvvvvvv: pressure value
MIDI specification
1110nnnn
0vvvvvvv
0vvvvvvv
NOTES:
1. nnnn: Voice Channel # (1-16, coded as defined in Table I notes)
2. kkkkkkk: note # (0 - 127)
kkkkkkk = 60: Middle C of keyboard
3. vvvvvvv: key velocity
A logarithmic scale would be advisable.
0
off
1
ppp
pp
mp
mf
64
f
ff
127
fff
Description
Continuous Controller 0 MSB
Continuous Controller 1 MSB (MODULATION BENDER)
Continuous Controller 2 MSB
Continuous Controller 3 MSB
Continuous Controllers 4-31 MSB
Continuous Controller 0 LSB
Continuous Controller 1 LSB (MODULATION BENDER)
Continuous Controller 2 LSB
Continuous Controller 3 LSB
Continuous Controllers 4-31 LSB
Switches (On/Off)
Undefined
Reserved for Channel Mode messages (see Table III).
6. All controllers are specifically defined by agreement of the MIDI Manufacturers Association (MMA) and the
Japan MIDI Standards Committee (JMSC). Manufacturers can request throught the MMA or JMSC that
logical controllers be assigned to physical ones as necessary. The controller allocation table must be provided
in the user's operation manual.
7. Continuous controllers are divided into Most Significant and Least Significant Bytes. If only seven bits of
resolution are needed for any particular controllers, only the MSB is sent. It is not necessary to send the LSB.
If more resolution is needed, then both are sent, first the MSB, then the LSB. If only the LSB has changed in
value, the LSB may be sent without re-sending the MSB.
8. vvvvvvv: control value (MSB)
for controllers
0: min
127: max
for switches
file:///G4/Sites/www-music108-F01/aPages/02/MIDI%20specification.html (7 of 11) [10/17/2001 11:40:44 PM]
MIDI specification
0: off
127: on
Numbers 1 through 126, inclusive, are ignored.
9. Any messages (e.g. Note On), which are sent successively under the same status, can be sent without a Status
byte until a different Status byte is needed.
10. Sensitivity of the pitch bender is selected in the receiver. Center position value (no pitch change) is 2000H,
which would be transmitted EnH-00H-40H.
TABLE III
CHANNEL MODE MESSAGES>
STATUS
1011nnnn
DATA BYTES
0ccccccc 0vvvvvvv
DESCRIPTION
Mode Messages
ccccccc = 122: Local Control
vvvvvvv = 0,
Local Control Off
vvvvvvv = 127, Local Control On
ccccccc = 123: All Notes Off
vvvvvvv = 0
ccccccc = 124: Omni Mode Off (All Notes Off)
vvvvvvv = 0
ccccccc = 125: Omni Mode On (All Notes Off)
vvvvvvv = 0
ccccccc = 126: Mono Mode On (Poly Mode Off)
(All Notes Off)
vvvvvvv = M, where M is the number of channels.
vvvvvvv = 0, the number of channels equals
the number of voices in the receiver.
ccccccc = 127: Poly Mode On (Mono Mode Off)
vvvvvvv = 0
(All Notes Off)
NOTES:
1. nnnn: Basic Channel # (1-16, coded as defined in Table I)
2. Messages 123 thru 127 function as All Notes Off messages. They will turn off all voices controlled by the
assigned Basic Channel. Except for message 123, All Notes Off, they should not be sent periodically, but only
for a specific purpose. In no case should they be used in lieu of Note Off commands to turn off notes which
have been previously turned on. Therefore any All Notes Off command (123-127) may be ignored by receiver
with no possibility of notes staying on, since any Note On command must have a corresonding specific Note
Off command.
3. Control Change #122, Local Control, is optionally used to interrupt the internal control path between the
file:///G4/Sites/www-music108-F01/aPages/02/MIDI%20specification.html (8 of 11) [10/17/2001 11:40:44 PM]
MIDI specification
keyboard, for example, and the sound-generating circuitry. If 0 (Local Off mesage) is received, the path is
disconnected: the keyboard data goes only to MIDI and the sound-generating circuitry is controlled only by
incoming MIDI data. If a 7FH (Local On message) is received, normal operation is restored.
4. The third byte of "Mono" specifies the number of channels in which Monophonic Voice messages are to be
sent. This number, "M", is a number between 1 and 16. The channel(s) being used, then, will be the current
Basic Channel (=N) thru N+M-1 up to a maximum of 16. If M=0, this is a special case directing the receiver to
assign all its voices, one per channel, from the Basic Channel N through 16.
TABLE IV
SYSTEM COMMON MESSAGES
STATUS
11110001
11110010
11110011
11110100
11110101
11110110
11110111
DATA BYTES
DESCRIPTION
Undefined
0lllllll 0hhhhhhh Song Position Pointer
lllllll: (Least significant)
hhhhhhh: (Most significant)
0sssssss
Song Select
sssssss: Song #
Undefined
Undefined
none
Tune Request
none
EOX: "End of System Exclusive" flag
NOTES:
1. Song Position Pointer: Is an internal register which holds the number of MIDI beats (1 beat = 6 MIDI clocks)
since the start of the song. Normally it is set to 0 when the START switch is pressed, which starts sequence
playback. It then increments with every sixth MIDI clock receipt, until STOP is pressed. If CONTINUE is
pressed, it continues to increment. It can be arbitrarily preset (to a resolution of 1 beat) by the SONG
POSITION POINTER message.
2. Song Select: Specifies which song or sequence is to be played upon receipt of a Start (Real-Time) message.
3. Tune Request: Used with analog synthesizers to request them to tune their oscillators.
4. EOX: Used as a flag to indicate the end of a System Exclusive transmission (see Table VI).
TABLE V
SYSTEM REAL TIME MESSAGES
STATUS
11111000
11111001
DATA BYTES
DESCRIPTION
Timing Clock
Undefined
MIDI specification
11111010
11111011
11111100
11111101
11111110
11111111
Start
Continue
Stop
Undefined
Active Sensing
System Reset
NOTES:
1. The System Real Time messages are for synchronizing all of the system in real time.
2. The System Real Time messages can be sent at any time. Any messages which consist of two or more bytes
may be split to insert Real Time messages.
3. Timing clock (F8H)
The system is synchronized with this clock, which is sent at a rate of 24 clocks/quarter note.
4. Start (from the beginning of song) (FAH)
This byte is immediately sent when the PLAY switch on the master (e.g. sequencer or rhythm unit) is pressed.
5. Continue (FBH)
This is sent when the CONTINUE switch is hit. A sequence will continue at the time of the next clock.
6. Stop (FCH)
This byte is immediately sent when the STOP switch is hit. It will stop the sequence.
7. Active Sensing (FEH)
Use of this message is optional, for either receivers or transmitters. This is a "dummy" Status byte that is sent
every 300 ms (max), whenever there is no other activity on MIDI. The receiver will operate normally if it
never receives FEH. Otherwise, if FEH is ever received, the receiver will expect to receive FEH or a
transmission of any type every 300 ms (max). If a period of 300 ms passes with no activity, the receiver will
turn off the voices and return to normal operation.
8. System Reset (FFH)
This message initializes all of the system to the condition of just having turned on power. The system Reset
message should be used sparingly, preferably under manual command only. In particular, it should not be sent
automatically on power up.
TABLE VI
SYSTEM EXCLUSIVE MESSAGES
STATUS
11110000
DATA BYTES
0iiiiiii
.
(0*******)
.
.
(0*******)
.
DESCRIPTION
Bulk dump etc.
iiiiiii:
identification
MIDI specification
11110111
NOTES:
1. iiiiiii: identification ID (0-127)
2. All bytes between the System Exclusive Status byte and EOX or the next Status byte must have zeroes in the
MSB.
3. The ID number can be obtained from the MMA or JMSC.
4. In no case should other Status or Data bytes (except Real-Time) be interleaved with System Exclusive,
regardless of whether or not the ID code is recognized.
5. EOX or any other Status byte, except Real-Time, will terminate a System Exclusive message, and should be
sent immediately at its conclusion.