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.

  • Conversion of Numbers(MAXplay document) (17k)
  • MAXplay 3.0 (Application) (644k)

  • To look at some specific examples of MIDI binary information, you may want to download two more MAXplay programs that demonstrate what occurs when a note is turned on and the relationship of the keyboard notes to hexadecimal, decimal and binary information.

  • MIDI Note On(MAXplay document) (17k)
  • MIDI Note Conversion (MAXplay document) (17k)

  • Specific examples of MIDI data structures

    Turning on a MIDI Note

     Binary code

     10010000

     00111100

     01110010
    Hexadecimal 9 0 3 C 7 2
    9 0

    Status Byte Note On with MIDI channel 1.

    3 C

    Data Byte, that is the actual note which is the 60th note on a range of 0 to 127, which is Middle C.

    7 2

    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.



    Creating a Program Change

     Binary code

     11001111

     00011010
    Hexadecimal C F 1 A
    C F

    Status Byte Program Change on MIDI channel 16.

    1 A

    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)



    Using the Sustain Pedal

     Binary code

     10110111

     01000000

     01111111
    Hexadecimal B 7 4 0 7 F

    B 7

    Status Byte Control Change on MIDI channel 8.

    4 0

    Data Byte that selects sustain pedal as a controller.

    7 F

    Data Byte that turns on the sustain pedal.


     

    Using the Volume Pedal

    Binary code 10111010 01000000 00000101 00000110 ......
    Hexadecimal B A 0 7 0 5 0 6 ......

    B A

    Status Byte Control Change on MIDI channel 11.

    0 7

    Data Byte that selects volume as a controller.

    0 5, 0 6, .....

    Data Bytes that increase the volume.


    Exploring MIDI Home
    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
    MIDI Controllers
    General MIDI
    Standard MIDI Files
    Using MIDI on a Web Site
    Applications that use MIDI
    Audio vs. MIDI Files
    MIDI Timing Concepts
    Author Info and Comments