A single MIDI port carries 16 independent channels of MIDI digital data; MIDI devices (or virtual instruments) with additional physical or virtual ports can carry 16 channels per port.
Voice messages express many different parameters, as described below. A MIDI voice message is stamped with a MIDI channel number, so each channel can carry independent voice messages.
• NOTE ON Hitting a keyboard key, MIDI drum pad, etc. creates a note-on message that specifies pitch. Note numbers range from 000 (lowest note) to 127 (highest note). Middle C is 60.
• NOTE OFF Occurs upon releasing a note. Has the same range as Note On messages.
• VELOCITY Corresponds to the dynamics of your playing; usually measures the time for a key to go from full up to full down. Values range from 001 (minimum) to 127 (maximum). A velocity value of 000 is the same as a Note Off.
• PRESSURE OR AFTERTOUCH Indicates pressure applied to a keyboard after a key is down. With Mono (or Channel) aftertouch, this data represents the highest value of all keys being pressed down. Polyphonic or Key aftertouch transmits individual aftertouch data for each key being pressed down. Values range from 000 to 127.
• PROGRAM CHANGE Selects a program on a MIDI device (e.g., a particular synth sound). Program Change messages are standardized (from 000 to 127), but the way different manufacturers number their programs is not. One might number 100 programs as 00–99, and another as five banks of 20 programs.
• BANK SELECT Circumvents MIDI’s 128 program change limit. MIDI Bank Select can choose up to 128 individual banks, with up to 128 programs each (16,384 programs total).
• PITCH BEND A synthesizer’s pitch bend wheel (or lever, joystick, etc.) changes pitch much like the way a guitarist “bends” a string or uses a whammy bar. Instruments receiving the same pitch bend messages are generally set to the same pitch bend range.
• CONTROL CHANGE Control change messages alter values of parameters usually associated with adding expression (e.g., using a footpedal to send messages that change filter cutoff, or a mod wheel to add vibrato). MIDI allows for 64 continuous controllers whose values span a continuous range of values, and 58 continuous/switch controllers (these can act like continuous controllers but some are assumed to choose between two possible states, such as on/off). Several, but not all, controllers are standardized; e.g., modulation wheel is controller 01, and master volume is 07. Each channel can contain its own set of controller messages.
These describe how the MIDI device receives MIDI data.
• OMNI MODE MESSAGE Omni On mode receives data from all channels. Omni Off limits the number of channels, usually to one.
• MONO/POLY MODE MESSAGE Affects voice assignment within a synthesizer. In Mono mode, only one note at a time plays in response to voice messages, regardless of how many messages are received. In Poly mode, all available voices can play notes.
SYSTEM COMMON MESSAGES
These are intended for all units in a system, and are therefore not encoded with channel numbers.
• SONG POSITION POINTER (SPP) Keeps track of how many “MIDI beats” (16th notes) have elapsed since the beginning of a piece, up to 16,384 total. Sending an SPP messages allows units to autolocate to the same place.
• SONG SELECT Tells devices such as sequencers and drum machines which song to play.
• MTC 1/4 FRAME MESSAGE Provides timing messages based on SMPTE Time Code.
• SYSTEM EXCLUSIVE MESSAGES These start with a manufacturer’s exclusive ID code and are intended only for equipment made by a specific manufacturer. This allows MIDI to translate non-universal data, such as a particular manufacturer’s way of encoding patch information, into something that can be sent down a MIDI cable (or into a computer).
SYSTEM REALTIME MESSAGES
These messages contain timing information that synchronizes the units in a MIDI system. This category also includes some other “utility” messages.
• TIMING CLOCK MIDI sends out 24 timing messages per quarter note to which all devices synchronize. Thus, if the master sends out a timing clock, all other units advance by 1/24th of a quarter note. For accurate timekeeping, clock messages have priority over all other messages.
• START Tells MIDI devices when to start playing.
• STOP Tells MIDI devices when to stop playing.
• CONTINUE After issuing a Stop command, sending a Continue message re-starts the units from where they were stopped. This is different from a Start command, which always re-starts from the beginning of a song. After two units autolocate to each other via Song Position Pointer messages, the master usually sends a Continue message to the slave to start them both from that common point.