Musical Instrument Digital Interface, or simply "MIDI", is a set of hardware requirements and a protocol that electronic devices use to communicate and store data (i.e., it is a language, file format, and hardware specifications), specifically designed for storing and transferring digital representations of music.
According to the MIDI protocol, MIDI devices communicate by sending each other MIDI events. A MIDI event carries two pieces of information: 1) the MIDI tick, which specifies a time; and 2) the MIDI message, which specifies an action. Thus, MIDI is a language of MIDI events where each event tells some electronic device to do something (the MIDI message) at a certain time (the MIDI tick). Besides being sent from one device to another, MIDI events can also be stored in files organized in a specific way.
To understand when a MIDI event occurs, see the topics on MIDI event, MIDI tick, and Time division (of a MIDI file). To understand the types of MIDI messages that can be sent to a device or stored in a MIDI file, check the topics on MIDI voice messages, MIDI system common messages, MIDI system realtime messages, and MIDI meta messages.
MIDI file format
The MIDI file format defines that MIDI files are organized in chunks. Each file starts with a header chunk and can contain one or more track chunks. The header chunk contains information that describes the whole MIDI file, such as the time division of the file or the number of track chunks in the file. The track chunks contain the events of the MIDI language.
Note that the MIDI file is not a subtype of RIFF files. The MIDI header chunk and track chunks are the top-level chunks in the MIDI file. In contrast, the wave file format is an extension of the RIFF file format and the top-level chunk of a wave file is the RIFF chunk. Nevertheless, the MIDI chunks have a similar structure to the RIFF and wave chunks.
MIDI hardware (connector) specifications
There are a number of hardware specifications for MIDI. For example, the MIDI connectors are 5 pin DIN (i.e., standardized by Deutsches Institut für Normung). Cables are shielded twisted pairs. Pin 1 is not used. Pin 2 connects the shield. Pin 3 is not used. Pin 4 and 5 connect the twisted pair cables. MIDI devices use separate jacks for input and output, which are both female. The MIDI electronics use current loops (i.e., where signaling is done through electric charge / current and not through voltage) and use optoisolators that respond within 2 microseconds. The circuit itself runs the current loop at 5 mA and current is on for transistor-resistor logic 0.
Not all MIDI devices satisfy all MIDI requirements (specifically, not all devices understand all of the MIDI language). There are currently three levels of standards. Earlier devices satisfied a subset of the MIDI requirements described above, which was called General MIDI Level 1 (GM1). In 1999, this subset was expanded to include more of the MIDI language specifications and was called General MIDI Level 2 (GM2). A recent standard for mobile MIDI communications is called General MIDI Lite (GM Lite). The standard Scalable Polyphony MIDI (SP-MIDI) describes how the GM2 standard should be scaled down to GM1 or to GM Lite, if music in GM2 is to be sent to GM1 or GM Lite devices.
MIDI related topics
The following are topics on MIDI in alphabetical order.
Format type (of a MIDI file)
General MIDI 1
General MIDI 2
General MIDI System Enable / Disable message
Header chunk (of a MIDI file)
MIDI Active Sense message
MIDI Channel Prefix meta message
MIDI Channel Pressure message
MIDI Clock message
MIDI Continue message
MIDI Controller Destination message
MIDI Controller message
MIDI Copyright Notice meta message
MIDI Cue Point meta message
MIDI End of Track meta message
MIDI Full Frame message
MIDI Global Parameter Control message
MIDI Instrument Name meta message
MIDI Key-Based Instrument Controller message
MIDI Key Pressure message
MIDI Key Signature meta message
MIDI Lyrics meta message
MIDI Marker meta message
MIDI Master Volume message
MIDI meta messages
MIDI Note Off message
MIDI Note On message
MIDI Pitch Wheel message
MIDI Program Change message
MIDI Quarter Frame message
MIDI Registered Parameter Number (RPN)
MIDI Reset message
MIDI Sequence Number meta message
MIDI Sequencer Specific meta message
MIDI Set Tempo meta message
MIDI SMPTE Offset meta message
MIDI Song Position Pointer message
MIDI Song Request message
MIDI Start message
MIDI Stop message
MIDI system common messages
MIDI System Exclusive message
MIDI system realtime messages
MIDI Text meta message
MIDI Time Signature meta message
MIDI Track Name meta message
MIDI Tune Request message
MIDI voice messages
Status byte (of a MIDI message)
Track chunk (of a MIDI file)
Time division (of a MIDI file)
Add new comment