Specific examples of MIDI data structures
The MIDI language is represented with binary code. Each 0 or 1 is called
a bit. Four bits equal a nibble and eight bits
equal a byte.With MIDI, each digital word consists of a total of
10 bits: 8 bits (1 byte) plus one start bit. (The MIDI messages in this
program will not display the start and stop bits.)
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.
A MIDI processor will look at the Most Significant Bit to see if it is a 1 or a 0. Status bytes start with a 1, while data bytes start with a 0. A status byte is the first word in a digital MIDI message, and it is used as an identifier or an instruction.
Channel messages are composed of status bytes that are followed by one or more data bytes. The data bytes are information that is pertinent to the status byte. Because a data byte starts with a 0 in the binary number, 01101100, there are 128 possible values. In hexadecimal, the values range from 00 to 7F. You may want to download the MAXplay program, Conversion of Numbers, to better understand the relationship of a MIDI slider with binary and hexadecimal information.
You may download a document,Conversion of Numbers, that was created using the program Max. This document compares the similarities between the decimal, binary and hexadecimal counting systems.By clicking on the document your browser should download the file. The document may be changed back to its original version by using the program StuffIt Expander. If your browser is set up to recognize StuffIt Expander, it may have already unstuffed the document. If not, you will need to obtain a copy of the program StuffIt Expander from Aladdin.
The program MAXplay is needed to run the document Conversion of Numbers. If you would like information about the application Max, please contact Opcode Systems, Inc.. You may download a free copy of this application by clicking on the MAXplay icon below. This is a run-time only version of the application Max; it may not be used to create new Max documents. MAXplay will work only on a Macintosh computer.
|Hexadecimal||9 0||3 C||7 2|
Status Byte Note On with MIDI channel 1.
Data Byte, that is the actual note which is the 60th note on a range of 0 to 127, which is Middle C.
The key velocity information on how fast the note was pressed. This data byte also has a range of 0 to 127. A higher velocity will create more volume with the sound.
|Hexadecimal||C F||1 A|
Status Byte Program Change on MIDI channel 16.
Data Byte that is the actual program number that was pressed on the synthesizer. The program would be the 26th program setting. That is (1 x 16) + (A, which is 10)
|Hexadecimal||B 7||4 0||7 F|
Status Byte Control Change on MIDI channel 8.
Data Byte that selects sustain pedal as a controller.
Data Byte that turns on the sustain pedal.
|Binary code||10111010||01000000||00000101||00000110 ......|
|Hexadecimal||B A||0 7||0 5||0 6 ......|
Status Byte Control Change on MIDI channel 11.
Data Byte that selects volume as a controller.
|0 5, 0 6, .....|
Data Bytes that increase the volume.
What is MIDI?
MIDI Connections Java Enabled
MIDI Connections Non-Java
Understanding Decimal Binary & Hexadecimal
The MIDI Language
Types of Data Transmitted through MIDI
MIDI Channels and Modes
Standard MIDI Files
Using MIDI on a Web Site
Applications that use MIDI
Audio vs. MIDI Files
MIDI Timing Concepts
Author Info and Comments