Technical
⚡ The Complete Guide to MIDI Commands
公開日 2026-03-18 17:16
⚡ The Complete Guide to MIDI Commands
Every status byte, controller & system message — from Note On to SysEx
MIDI (Musical Instrument Digital Interface) is the universal language of electronic music. It is a technical protocol that allows instruments, computers, and hardware to communicate. At its core, MIDI is composed of commands, or messages, that tell a device what to do.
⚙️ Message Structure
Every MIDI message is a sequence of 8-bit bytes:
- Status Byte: Indicates the type of command (e.g., Note On) and the MIDI channel. The first bit is always "1".
- Data Bytes: Contain the actual information (e.g., note number or velocity). The first bit is always "0", limiting values to a range of 0–127.
MIDI commands are divided into two main categories: Channel Messages and System Messages.
1. Channel Messages
Directed at a specific MIDI channel (1–16). The channel number is embedded in the status byte.
🎹 Channel Voice Messages
These carry performance data and are the most common type of MIDI traffic.
| Command Name | Status Byte (hex) | Data Bytes | Description |
|---|---|---|---|
| Note Off | 8n | 2: Note, Velocity | Sent when a key is released. |
| Note On | 9n | 2: Note, Velocity | Velocity 0 is often interpreted as Note Off. |
| Poly Pressure | An | 2: Note, Pressure | Pressure change for a single held key. |
| Control Change | Bn | 2: Ctrl #, Value | Mod wheel, sustain pedal, etc. |
| Program Change | Cn | 1: Program # | Changes the instrument patch/preset. |
| Pitch Bend | En | 2: LSB, MSB | High-resolution 14-bit pitch control. |
🔢 Pro Tip: In the status byte, 'n' is the MIDI channel (0–F in hex). Example:0x90is Note On for Channel 1;0x9Fis Note On for Channel 16.
🧩 Channel Mode Messages
Determines how a device responds to voice messages. These use Status Bn with Controller # 121–127.
| Command Name | Ctrl # | Description |
|---|---|---|
| Reset All | 121 | Resets controllers to defaults. |
| Local Control | 122 | Connects/Disconnects keys from engine. |
| All Notes Off | 123 | Mutes all notes on the channel. |
2. System Messages
System Messages are global and ignore channel assignments.
📡 System Common & Real-Time
Used for synchronization and device-wide management.
- F2 (Song Position): Sets sequencer playback point.
- F8 (Timing Clock): Sent 24 times per quarter note for sync.
- FA / FB / FC: Start, Continue, and Stop commands.
- FE (Active Sensing): Heartbeat signal to prevent stuck notes.
🧪 System Exclusive (SysEx)
Used for manufacturer-specific data like patch dumps.
Starts with F0, contains any number of data bytes, and ends with F7.
Compiled from the official MIDI specification · v1.0 / updated 2025
🎛️ Reference Guide: All MIDI commands fall between status bytes 8n and FF.