Protocol reference

How MIDI actually works

A byte-level guide to the protocol: messages, files, clocks, expressive extensions and MIDI 2.0. Written for people building instruments, plugins, firmware and tools, and checked against the official specifications.

Byte anatomy

A MIDI 1.0 message starts with a status byte (top bit 1), followed by zero or more data bytes (top bit 0, values 0–127). For channel messages, the status byte's high nibble is the message type and its low nibble is the channel, 0–15 on the wire and 1–16 in user interfaces.

Note On, channel 1, middle C, velocity 100: bytes 90 3C 64
High nibbleMessageData bytes
8n Note Off 2
9n Note On 2
An Poly Pressure 2
Bn Control Change 2
Cn Program Change 1
Dn Channel Pressure 1
En Pitch Bend 2
Fn System varies

MIDI 1.0

Files & Sounds

Expression & MIDI 2.0

Connecting

Reference

Hands-on