MIDI (Musical Instrument Digital Interface) has been the standard way for electronic instruments to talk to each other since 1983. It is older than the audio CD, and it is still everywhere. The reason is simple: MIDI is small, fast and universal.
MIDI is not audio
This is the single most important thing to understand. A MIDI cable does not carry sound. It carries messages — note on, note off, pitch, velocity, aftertouch, control change. When you press a key on a MIDI keyboard, the instrument sends a message that says "note 60, velocity 100, on". Whatever is at the other end decides what to do with it. A synth turns it into a sound. A DAW records it as an editable event. A lighting controller turns it into a cue.
You can change the sound after recording, change the tempo without changing pitch, and send the same performance to six instruments at once. That is what MIDI buys you.
16 channels on one cable
A single MIDI connection carries 16 channels, so one cable can drive 16 independent instruments or parts. Most people use channel 1 and ignore the rest, but for larger rigs those channels are exactly why a thru box is worth having.
Why you need an interface
Computers stopped shipping with 5-pin DIN MIDI ports a long time ago. To connect a keyboard, synth or controller to a modern computer you need a USB MIDI interface. Good ones are USB class compliant, which means no driver install on Windows or macOS — plug in and it shows up in your DAW.
Common terms
- MIDI IN — receives messages
- MIDI OUT — sends messages generated by the device
- MIDI THRU — passes along a copy of what came in, so devices can be chained
- MIDI Merge — combines two inputs into one output
THRU is a straight copy of the input. A thru box is the active equivalent — one input driving multiple outputs — which avoids the timing degradation you get from long daisy chains.
Latency
MIDI itself is fast; a note message takes roughly a millisecond. Perceived latency almost always comes from your audio buffer, not MIDI. If playing a soft synth feels laggy, lower your buffer size before blaming the interface.