The Musical Instrument Digital Interface protocol was designed by several people from Sequential Circuits and Roland, and was first implemented on the Prophet-600 in 1982, soon followed by the Jupiter-6 in 1983.
The worst thing you can say about it is that it's a little slow, which was a necessity given the speed of the era's microprocessors (for context, 1982 also saw the release of the Commodore 64 home computer). What's so great about it is literally everything else.
Before MIDI, the closest to a standard protocol for synthesisers was the combination of CV/gate for sending notes and DIN sync for synchronising.
To send a note from one machine to another required two cables: one for the pitch, and another to say when the note started and stopped. You'd need another pair of cables for each extra note you'd want to hear at the same time. If you wanted to say how loud the notes were, that would require another cable per concurrent note. For example, the Roland MC-4 played synthesisers using this method, and had its fair share of jacks to plug cables into.
Synchronising digital step sequencers like the MC-4 required a thicker cable with several wires in it, sending a steady stream of clock pulses on one wire, and the run/stop signal on another wire.
As far as saving programs and sequences went, each device usually had its own audio in and out connections used to save its data to cassette tape.
This was sufficient for controlling a handful of simple monophonic synthesisers, but technology was evolving. People would soon want to control their equipment using home computers, and that equipment would increasingly be polyphonic.
MIDI to the rescue
By using microprocessors and computer code to generate and interpret commands, MIDI fixed a lot of clutter, and made controlling polyphonic keyboards feasible. Using a cable with a few wires in it, much like DIN sync's cable, it sent short, quick instructions called MIDI events one at a time. "Start playing this note, at this volume, on this device." "Stop playing that note." "Here's another clock tick." All these disparate commands, to all the different equipment, could be sent along a single connection, because they only said when things started and stopped happening. They didn't clog up the line while they continued to happen. (This is essentially a simplified form of packet switching, which is the basis of the Internet.)
Even the bulkier programs and sequences themselves could be transmitted as SysEx dumps, then stored onto a floppy disk via a single home computer or MIDI data filer shared by all the other devices combined.
MIDI was well designed, able to expand with a minimum of fuss whenever people dreamed up extra commands and features to add. Eventually it included such fancy features as SMPTE timecode, for composing film and video soundtracks; commands to control multitrack recorders; and the ability to (slowly — it's a lot of data) send whole samples back and forth between samplers.
MIDI was even adopted outside of the music studio, controlling stage lighting, and even themepark rides.
As for old synthesisers expecting CV/gate and DIN sync signals, there are adapters to convert MIDI events into these older protocols. These give older synthesisers a new lease of life, as they can now be sequenced with computers, not just primitive analogue step sequencers.
Before the end of the 1980s, almost everyone making electronic music did so using MIDI. The most popular home computer for studios, the Atari ST, was popular specifically because it had built-in MIDI ports. It's hard to over-emphasise how useful MIDI is.
MIDI uses simple serial transmissions at 31.25 kilobaud, 8N1. One start bit, eight data bits (least to most significant), no parity bits, and one stop bit, making ten bits total. It can therefore send 3.125 kilobytes per second.
Here's a brief summary of some of the most common MIDI events.
|Start SysEx message||
|Song position pointer||
|End SysEx message||
Fare literal hexidecimal digits
nis channel 1 to 16 (sent as
kkis pitch. A4 @ 440 Hz is
45. Middle C directly below it is
vvis velocity 0 to 127 (sent as
ccis controller number 0 to 127 (sent as
7F). The mod wheel is
aais controller value 0 to 127 (sent as
ppis program 0 to 127 (sent as
- For pitch bend,
ll hhis a relative pitch between
7F 7F. Least significant byte first, most significant byte last. The resting relative pitch is
- For song position pointers,
ll hhis the number of 16ths of a bar that have occurred since the start of the song, between
7F 7F. Least significant byte first, most significant byte last. This allows a total of 16,384 16ths, or 1,024 bars (counting from 0). As there are 24 pulses per quarter note, there are 6 pulses per 16th note.
Events are in the range
FF; data are in the range
7F. This is why so many MIDI related things are in the range of 0 to 127.
A note on event with a velocity of
00 is a cunningly hidden note off, which can save bandwidth and filesize, because repeated event bytes don't need to be explicitly sent — anything below
80 is unambiguously data, so repeating the last event byte is implied. So multiple
9n kk vv note ons and
9n kk 00 note offs sent to the same channel (as the channel number is part of the event byte, not the subsequent data bytes) only need one initial event byte for all the note ons and note offs combined.
- "Introducing the MIDI" Electronics & Music Maker, May 1983
- "Climb Aboard The MIDI Bus" Jim Betteridge, Electronic Soundmaker & Computer Music, Nov 1983
- "MIDI" Jim Betteridge, Electronic Soundmaker & Computer Music, Dec 1983
- "The MIDI 1.0 Specification" Electronics & Music Maker, May 1984
MIDI: Atari ST MIDI sequencer timeline | DAW | Editor/librarian | MIDI | MIDI clock | MIDI sequencer | MIDI timing | Song position pointer | SysEx file
Studio infrastructure: ACSI | CV/gate | DIN sync | Eurorack | MIDI | SCSI | Tape sync | Tracks and channels