Zoë Blade's notebook

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

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.

Features

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