MIDI
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.
Context
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 simple 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.
Technical notes
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.
Event types
MIDI Event | Data |
---|---|
Note Off | 8n kk vv |
Note On | 9n kk vv |
Control change | Bn cc aa |
Program change | Cn pp |
Pitch bend | En ll hh |
Start SysEx message | F0 ... |
Song position pointer | F2 ll hh |
End SysEx message | F7 |
Timing clock | F8 |
Start | FA |
Continue | FB |
Stop | FC |
Reset | FF |
Key
0
to9
andA
toF
are literal hexidecimal digitsn
is channel 1 to 16 (sent as0
toF
)kk
is pitch. A4 @ 440 Hz is45
. Middle C directly below it is3C
.vv
is velocity 0 to 127 (sent as00
to7F
)cc
is controller number 0 to 127 (sent as00
to7F
). The mod wheel is01
.aa
is controller value 0 to 127 (sent as00
to7F
)pp
is program 0 to 127 (sent as00
to7F
)- For pitch bend,
ll hh
is a relative pitch between00 00
and7F 7F
. Least significant byte first, most significant byte last. The resting relative pitch is00 40
. - For song position pointers,
ll hh
is the number of 16ths of a bar that have occurred since the start of the song, between00 00
and7F 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 80
to FF
; data are in the range 00
to 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.
External links
Features
- "Introducing the MIDI" Electronics & Music Maker, May 1983, pp. 92—94
- "Climb Aboard The MIDI Bus" Jim Betteridge, Electronic Soundmaker & Computer Music, Nov 1983, pp. 51—52
- "MIDI" Jim Betteridge, Electronic Soundmaker & Computer Music, Dec 1983, pp. 52—53
- "The MIDI 1.0 Specification" Electronics & Music Maker, May 1984, pp. 40—44
MIDI: DAW | Editor/librarian | MIDI clock | MIDI sequencer | MIDI timing | ST MIDI sequencer timeline | Song position pointer | SysEx file
Studio infrastructure: ACSI | DCB | Eurorack | MIDI | SCSI | Tracks and channels