Build your own MIDI circuits
FAQ
Frequently Asked Questions.
Details
 
MIDI & Music
MIDI and Music Information
Details
 
MIDI
  

MIDI Standard Messages

 

MIDI serial data flows at the rate of 31.25 kilobits per second and is organised into 10-bit words. The first bit is called the START bit ( which is always 0 ), the next eight are the desired information, and the last is the STOP bit ( which is always 1 ). The start and stop bits frame the desired data and provide the required synchronization, but do not carry MIDI information themselves.

 

Time = 1/Frequency (T =1/F)

T= (1 x  10 6 ) / (31.25 x 10 3 ) = 32 ms (microseconds)

 

So each bit is transmitted in  32 ms (microseconds). A complete word is transmitted in  10 x 32  = 320 microseconds. Note that on an oscilloscope the MIDI data appears to be reversed in time.

 

When we look as a digital word, 10010110, the bit at the far left is considered the Most Significant Bit. The remaining seven bits, 10010110, are considered the Least Significant Bits. Most MIDI messages consist of one, two or three bytes. Each byte may be classified as a status or data byte.

 

The eight-bit MIDI data is contained between the start and stop bits. There are two main types of bytes status and data. The lead bit of the status byte is always 1 and that of a data byte is always 0. This enables the microprocessor to distinguish between the two types of bytes and so make a corresponding decision.

 

So a MIDI message consists of a status byte followed by 0,1 or 2 data bytes. The MIDI message can be either a channel or system message. The channel message can be addressed to one of sixteen channels whereas a system message is addressed to all channels. The channel message can operate either on channel voices or on channel modes. The system messages provide real-time, common or exclusive control of the MIDI equipment.

   

MIDI MESSAGES

 

Message

Status Byte Data Bytes

Note-On Event

1001bbbb

0kkkkkkk

0vvvvvvv

Note-Off  Event

1000bbbb

0kkkkkkk

0vvvvvvv

Polyphonic Key Pressure

1010bbbb

0kkkkkkk

0fffffff

Control Change

1011bbbb

0ccccccc

0CCCCCCC

Program Change

1100bbbb

0nnnnnnn

Channel Pressure

1101bbbb

0ppppppp

Pitch Bend

1110bbbb

0iiiiiii

0hhhhhhh

Table 1: Channel Voice Messages

   

 

 

Message Status  Data Bytes

Local Control  Off

1011bbbb

01111010

00000000

Local Control On

1011bbbb

01111010

01111111

All Notes Off

1011bbbb

01111011

00000000

Omni Mode Off

1011bbbb

01111100

00000000

Omni Mode ON

1011bbbb

01111101

00000000

Mono mode On

1011bbbb

01111110

0zzzzzzz

Poly Mode On

1011bbbb

01111111

00000000

Table 2: Channel Mode Messages

   

 

 

Message  Status Data Bytes

Begin System Exclusive

11110000

0mmmmmmm

0xxxxxxx

MIDI  Time Code 11110001 0tttdddd  

Song Position Pointer

11110010

0jjjjjjj

0kkkkkkk

Song Select

11110011

0sssssss

Tune Request

11110110

End System Exclusive

11110111

Timing Clock

11111000

Start 11111010
Continue 11111011
Stop 11111100

Active Sensing

11111110

System Reset

11111111

Table 3: System Messages

   

 

 

Variable  Value

Range

MIDI Channel bbbb 0000 to 1111

Key Number

kkkkkkk

0000000 to 1111111

Velocity of Note On/Off

vvvvvvv

0000000 to 1111111

Force On Key

fffffff

0000000 to 1111111

Address of Control (0-121)

ccccccc

0000000 to 1111111

Value of Control Output

CCCCCCC

0000000 to 1111111

Programme Select

nnnnnnn

0000000 to 1111111

Pressure Value

ppppppp

0000000 to 1111111

Pitch bend LSB

iiiiiii

0000000 to 1111111

Pitch bend MSB

hhhhhhh

0000000 to 1111111

Number of Channels

zzzzzzz

0000000 to 1111111

Number of Song

sssssss

0000000 to 1111111

Song Position Pointer LSB

jjjjjjj

0000000 to 1111111

Song Position Pointer MSB

kkkkkkk

0000000 to 1111111

Manufacturers Identification  mmmmmmm 0000000 to 1111111
System Exclusive Message xxxxxxx 0000000 to 1111111
MIDI Timecode quarter

frame message

ttt

dddd

000 to 111

0000 to 1111

Table 4: MIDI Variables

   

 

For the Midi Message tables bbbb is a four bit binary nibble representing the MIDI channel from 0000 ( Channel 0 ) to 1111 ( Channel 15 ). The seven bit variables i.e. kkkkkkkk the MIDI key number range from 0000000 to 1111111 from 0 to 127.