[main TOC] MIDI Reference

Table of Contents

Introduction
Channel Messages
Controller Numbers
System Messages
MIDI Manufacturer Codes
Realtime Messages
General MIDI
Instrument Patch Map
Percussion Key Map
Back to the main Table of Contents.
Money and goods are certainly the best of references.

- Charles Dickens, Our Mutual Friend

Introduction

This section is not a MIDI tutorial. Rather, it is intended as a quick overview and a reference guide. Unless otherwise stated, all numbers appear in hexadecimal, either with or without the leading "0x".

One great MIDI tutorial is The USENET MIDI Primer by Bob McQueer. In fact, the Computer Music Journal has a number of MIDI documents.

All MIDI messages consist of a status byte followed by zero or more data bytes. Status bytes have their high bit set, and data bytes have a high bit of zero. Realtime status bytes may be inserted in the data stream at any point, including the middle of a stream of data bytes.

Two methods are used to compress data. First, running status bytes allow two or more consecutive messages with the same status byte to be combined into one; the status byte only need be sent the first time. Second, note on message with a velocity of zero are to be interpreted as note off messages.

Channel Messages

In the following table, an "x" specifies any MIDI channel (0 - 15). Thus "status byte 8x" means any value from 80 to 8F.

StatusDataComments
8xnote, velocityNote off
9xnote, velocityNote on (velocity 0 = note off)
Axnote, valuePolyphonic pressure
BxprogramProgram change
Cxcontroller, valueController change
DxvalueChannel pressure
ExvaluePitch bend

Controller Numbers

The following table shows some standardized controller numbers. Controller numbers 0 - 31 are continuous, LSB (least significant byte), numbers 32 - 63 are continuous, MSB (most significant byte), and 64 - 97 are switches.

NameHexDecimalComments
Controller numbers 00 - 1f [0 - 31 decimal] are continuous, LSB (least significant byte)
Mod Wheel011
Breath Controller022
Foot Controller044
Portamento Time055
Data Entry MSB066
Volume077
Balance088
Pan0A10
Expression Controller0B11
General Purpose 11016
General Purpose 21117
General Purpose 31218
General Purpose 41319
20 - 3f [32 - 63 decimal] are MSB (most significant byte) for 00 - 1f [0 - 31 decimal]
Sustain4064 Momentary Switches
Portamento4165
Sustenuto4266
Soft Pedal4367
Hold 24569
General Purpose 55080
Temp Change (General Purpose 6)5181
General Purpose 65181
General Purpose 75282
General Purpose 85383
Ext Effects Depth5B91
Tremelo Depth5C92
Chorus Depth5D93
Detune Depth (Celeste Depth)5E94
Phaser Depth5F95
Data Increment (Data Entry +1)6096
Data Decrement (Data Entry -1)6197
Non-Registered Param LSB6298
Non-Registered Param MSB6399
Registered Param LSB64100
Registered Param MSB65101
Channel mode message values
Reset All Controllers79121Val ??
Local Control7A122Val 0 = off, 7F (127) = on
All Notes Off7B124Val must be 0
Omni Mode Off7C125Val must be 0
Omni Mode On7D125Val must be 0
Mono Mode On7E126Val = # of channels, or 0 if # channels equals # voices in receiver
Poly Mode On7F127Val must be 0

System Messages

System messages are those not associated with any particular MIDI channel. They are intended for the whole MIDI system.

Note that any non-realtime status byte ends a System Exclusive message; F7 (EOX) is not required at the end of a SysEx message. Realtime status bytes may appear any time in the MIDI data stream, including in the middle of a SysEx message.

one byteone byteno data
StatusNameData
F0System Exclusivedata, then EOX or any status byte
F1(undefined)
F2Song Pointer
F3Song Select
F4(undefined)
F5(undefined)
F6Tune Request
F7EOX (End of System Exclusive)

MIDI Manufacturer Codes

These codes are used in System Exclusive messages to identify particular MIDI device manufacturers.

ManufacturerCode (Hex)
Sequential Circuits01
Big Briar02
Octave / Plateau03
Moog04
Passport Designs05
Lexicon06
Kurzweil (Young Chang)07
PAIA11
Simmons12
Gentle Electric13
Fairlight14
Bon Tempi20
S.I.E.L.21
SyntheAxe23
Kawai40
Roland41
Korg42
Yamaha43
Emu??
Alesis??
Ensoniq??
N. E. D.??
Mackie??
Opcode??
If you know any more codes, send them to me.

Realtime Messages

Realtime messages are not associated with any one MIDI channel. They can appear in the MIDI data stream at any time.

StatusComment
F8Clock
F9(undefined)
FAStart
FBContinue
FCStop
FD(undefined)
FEActive Sensing
FFSystem Reset

General MIDI

General MIDI is nothing more than an agreement to a standard set of 128 patch names and, on MIDI channel 10, a set of standard percussion key names. Manufacturers get to interpret these names any way they see fit.

Instrument Patch Map

The sounds are grouped into "families" of eight patch numbers each.

PatchFamily NamePatchFamily Name
1 - 8Piano65 - 72Reed
9 - 16Chromatic Percussion73 - 80Pipe
17 - 24Organ81 - 88Synth Lead
25 - 32Guitar89- 96Synth Pad
33 - 40Bass97 - 104Synth Effects
41 - 48Strings105 - 112Ethnic
49- 56Ensemble113 - 120Percussive
57 - 64Brass121 - 128Sound Effects

Here are the patch names. NOTE: MIDI numbers start at zero, not one. Valid patch numbers are therefor 0 - 127, but lists like this often start counting at one instead.

PatchNamePatchName
1Acoustic Grand Piano65Soprano Sax
2Bright Acoustic Piano66Alto Sax
3Electric Grand Piano67Tenor Sax
4Honky-tonk Piano68Baritone Sax
5Electric Piano 169Oboe
6Electric Piano 270English Horn
7Harpsichord71Bassoon
8Clavi72Clarinet
9Celesta73Piccolo
10Glockenspiel74Flute
11Music Box75Recorder
12Vibraphone76Pan Flute
13Marimba77Blown Bottle
14Xylophone78Shakuhachi
15Tubular Bells79Whistle
16Dulcimer80Ocarina
17Drawbar Organ81Lead 1 (square)
18Percussive Organ82Lead 2 (sawtooth)
19Rock Organ83Lead 3 (calliope)
20Church Organ84Lead 4 (chiff)
21Reed Organ85Lead 5 (charang)
22Accordion86Lead 6 (voice)
23Harmonica87Lead 7 (fifths)
24Tango Accordion88Lead 8 (bass + lead)
25Acoustic Guitar (nylon)89Pad 1 (new age)
26Acoustic Guitar (steel)90Pad 2 (warm)
27Electric Guitar (jazz)91Pad 3 (polysynth)
28Electric Guitar (clean)92Pad 4 (choir)
29Electric Guitar (muted)93Pad 5 (bowed)
30Overdriven Guitar94Pad 6 (metallic)
31Distortion Guitar95Pad 7 (halo)
32Guitar harmonics96Pad 8 (sweep)
33Acoustic Bass97FX 1 (rain)
34Electric Bass (finger)98FX 2 (soundtrack)
35Electric Bass (pick)99FX 3 (crystal)
36Fretless Bass100FX 4 (atmosphere)
37Slap Bass 1101FX 5 (brightness)
38Slap Bass 2102FX 6 (goblins)
39Synth Bass 1103FX 7 (echoes)
40Synth Bass 2104FX 8 (sci-fi)
41Violin105Sitar
42Viola106Banjo
43Cello107Shamisen
44Contrabass108Koto
45Tremolo Strings109Kalimba
46Pizzicato Strings110Bag pipe
47Orchestral Harp111Fiddle
48Timpani112Shanai
49String Ensemble 1113Tinkle Bell
50String Ensemble 2114Agogo
51SynthStrings 1115Steel Drums
52SynthStrings 2116Woodblock
53Choir Aahs117Taiko Drum
54Voice Oohs118Melodic Tom
55Synth Voice119Synth Drum
56Orchestra Hit120Reverse Cymbal
57Trumpet121Guitar Fret Noise
58Trombone122Breath Noise
59Tuba123Seashore
60Muted Trumpet124Bird Tweet
61French Horn125Telephone Ring
62Brass Section126Helicopter
63SynthBrass 1127Applause
64SynthBrass 2128Gunshot

Percussion Key Map

MIDI channel 10 is reserved for percussion. Each key maps to a specific percussive sound.

KeyNoteSoundKeyNoteSound
35CAcoustic Bass Drum59CRide Cymbal 2
36C#Bass Drum 160C#Hi Bongo
37DSide Stick61DLow Bongo
38D#Acoustic Snare62D#Mute Hi Conga
39EHand Clap63EOpen Hi Conga
40FElectric Snare64FLow Conga
41F#Low Floor Tom65F#High Timbale
42GClosed Hi Hat66GLow Timbale
43G#High Floor Tom67G#High Agogo
44APedal Hi-Hat68ALow Agogo
45A#Low Tom69A#Cabasa
46BOpen Hi-Hat70BMaracas
47CLow-Mid Tom71CShort Whistle
48C#Hi Mid Tom72C#Long Whistle
49DCrash Cymbal 173DShort Guiro
50D#High Tom74D#Long Guiro
51ERide Cymbal 175EClaves
52FChinese Cymbal76FHi Wood Block
53F#Ride Bell77F#Low Wood Block
54GTambourine78GMute Cuica
55G#Splash Cymbal79G#Open Cuica
56ACowbell80AMute Triangle
57A#Crash Cymbal 281A#Open Triangle
58BVibraslap


Back to the main Table of Contents.
Contents © 1995, 1996 by Jim Menard; All Rights Reserved.