An open reference
The field guide
to MIDI.
How MIDI works down to the byte, from MIDI 1.0 to MIDI 2.0. Interactive tools, a live Web MIDI monitor, runnable recipes, and 340+ open-source libraries, each one checked against GitHub.
Note On · channel 1
note 60 · C4
velocity 100
01
Protocol
12 chapters written as a working reference: tables you can scan, worked byte examples, and the edge cases that bite, like running status, velocity-zero note offs, and Roland checksums.
MIDI 1.0
- Messages Status and data bytes, channel voice & mode messages, system common & real-time, running status.
- Notes & Pitch Note numbers, octave naming, frequencies, velocity, and pitch bend math.
- Control Change All 128 controller numbers, 14-bit pairs, and channel mode messages.
- RPN & NRPN Registered and non-registered parameter numbers, data entry, and the null RPN.
- System Exclusive Manufacturer IDs, Universal SysEx, device inquiry, and checksums.
- Timing & Sync MIDI clock, Song Position Pointer, MIDI Time Code, and tempo math.
Files & Sounds
Expression & MIDI 2.0
| Status | Message | Data |
|---|---|---|
| 8n | Note Off | note, velocity |
| 9n | Note On | note, velocity |
| An | Poly Pressure | note, pressure |
| Bn | Control Change | controller, value |
| Cn | Program Change | program |
| Dn | Channel Pressure | pressure |
| En | Pitch Bend | LSB, MSB |
| F0 | System Exclusive | … F7 |
n = channel − 1 (0–F). Full tables in Messages.
02
Libraries
346 open-source projects in 26 languages and ecosystems, from parsing .mid files to USB-MIDI
firmware and symbolic-music models. Every entry is checked against the GitHub API. Also published as an
awesome list on GitHub.
- 29 Parsing & Standard MIDI Files Read, write, and transform .mid files and MIDI byte streams. mido · python-midi · musicpy
- 32 Realtime I/O Cross-platform access to MIDI ports: CoreMIDI, ALSA, WinMM, JACK and friends. AudioKit · NAudio · JACK2
- 24 Web MIDI & JavaScript MIDI in the browser and Node.js: Web MIDI API wrappers, players, and editors. Tone.js · Scribbletune · Signal
- 38 Synthesis & SoundFonts Turn MIDI into sound: SoundFont/SFZ players, software synths, and audio languages. SuperCollider · VCV Rack · Surge XT
- 37 Hardware & Firmware Arduino, Teensy, RP2040, ESP32, Daisy and USB-MIDI device stacks. TinyUSB · Mutable Instruments Eurorack · Arduino MIDI Library
- 11 Network & Wireless RTP-MIDI (AppleMIDI), BLE-MIDI, and MIDI over IP. Ableton Link · ESP32-BLE-MIDI · Arduino-AppleMIDI-Library
- 60 DAWs, Sequencers & Live Tools Sequencers, live-coding environments, plugin frameworks, and performance tools. Sonic Pi · LMMS · JUCE
- 25 Utilities, Routing & Visualization Command-line tools, monitors, filters, routers, and visualizers. Neothesia · MIDIVisualizer · ShowMIDI
- 7 Synth Editors & Librarians Patch editors, SysEx librarians, and SoundFont/bank editors for hardware and software instruments. Edisyn · Ctrlr · Polyphone
- 31 Notation & Music Theory Engraving, score rendering, MusicXML/ABC, and music-theory toolkits. MuseScore · Tonal · Audiveris
- 25 Machine Learning & Generative Symbolic-music models, tokenizers, datasets tooling, and transcription. Basic Pitch · Magenta.js · MuseGAN
- 13 Datasets MIDI and symbolic-music datasets (and their tooling) for research and machine learning. POP909 · Tegridy MIDI Dataset · ASAP dataset
- 14 MIDI 2.0 Universal MIDI Packet, MIDI-CI, and MIDI 2.0 platform support. Windows MIDI Services · AAP (Android Audio Plugin) · ESP32_Host_MIDI
- Browse all 346 Filter by language and category, sort by stars or recent activity.
- Suggest a library Add one line of JSON; a script verifies it against GitHub.
03
Tools
Small, fast utilities for the everyday questions of MIDI work. They run entirely in your browser.
- Message decoder Paste raw bytes, get every message decoded, running status included.
- VLQ encoder Delta-times and lengths to and from Standard MIDI File VLQs.
- Tempo calculator BPM, µs per quarter, ticks, and MIDI clock intervals.
- Note table All 128 notes with names, frequencies and GM drums. Click to hear.
04
Try it
Plug in a keyboard or controller and the Web MIDI monitor lists your devices and decodes every incoming message live, with a keyboard view, controller meters, and a clock-tempo readout. Nothing leaves your browser.
Open the monitor05
Reference
Code you can paste, words you can look up, and where it all came from.
- Web MIDI · mido · RtMidi · midir Cookbook Short, runnable recipes in JavaScript, Python, C++ and Rust for everyday MIDI tasks.
- Active Sensing → Zone Glossary Plain-language definitions of MIDI terms, from Active Sensing to UMP.
- 1981 → today History of MIDI A timeline from the 1983 launch through General MIDI, USB, Web MIDI and MIDI 2.0.
- MIDI Association · AMEI · RFCs · W3C Specs & Resources Official MIDI Association and AMEI specifications, RFCs, and trusted references.