FREE worldwide shipping on orders over $200.
Back to Lab

Introduction to MIDI Messages

Fundamentals2025-01-15

Since its release in 1983, MIDI (Musical Instrument Digital Interface) has become the global standard for electronic instrument communication. This article, based on the official MMA MIDI 1.0 specification, provides a systematic introduction to the complete MIDI message system.

1. MIDI Message Categories

The MIDI 1.0 specification divides messages into two major categories: Channel Messages and System Messages. Channel Messages travel on 16 logical channels and only affect devices assigned to that channel; System Messages are sent to all devices in the MIDI system.

Channel Messages
├─ Channel Voice
Note On/Off, Poly Aftertouch, CC, Program Change, Channel Aftertouch, Pitch Bend
└─ Channel Mode
All Sound Off, Reset All Controllers, Local Control, All Notes Off, Omni/Mono/Poly
System Messages
├─ System Common
SysEx, MTC Quarter Frame, Song Position, Song Select, Tune Request
└─ System Real-Time
Timing Clock, Start, Continue, Stop, Active Sensing, Reset

2. Status Bytes and Data Bytes

MIDI messages begin with a Status Byte, followed by 0-2 Data Bytes. The MSB (D7) of a Status Byte is always 1, while Data Bytes always have MSB = 0. This design allows receivers to easily identify message boundaries.

Status Byte:  1nnn nnnn  (MSB=1, n=message type/channel)
Data Byte:    0ddd dddd  (MSB=0, d=data)

3. Channel Voice Messages In Detail

3.1 Note On / Note Off

The most commonly used MIDI messages. Note On (status 0x9n) includes note number (0-127) and velocity (0-127). Note Off (0x8n) also includes note number and release velocity. A Note On with Velocity=0 is equivalent to Note Off (Running Status optimization).

Note On, Ch.1, Middle C, Velocity 100:
  0x90 0x3C 0x64

Note Off, Ch.1, Middle C:
  0x80 0x3C 0x40  (or 0x90 0x3C 0x00)

3.2 Control Change

Control Change (0xBn) is MIDI's most flexible message type, carrying a CC number (0-127) and value (0-127). CC#0-31 are 14-bit MSB controllers, CC#32-63 are their LSB counterparts. CC#64-69 are switch pedals. CC#120-127 are reserved for Channel Mode messages. See our dedicated CC article for details.

3.3 Program Change

Program Change (0xCn) carries a single data byte: the patch/preset number (0-127). Combined with Bank Select (CC#0 MSB + CC#32 LSB), it can access up to 128×128=16,384 patches. On the LdA MS-3, PC 1-100 maps directly to presets 1-100.

3.4 Pitch Bend

Pitch Bend (0xEn) is the only 14-bit Channel Voice message, combining two data bytes (LSB + MSB) for high-precision pitch control. Center position is 0x2000 (8192), range 0-16383. Sensitivity is set by the receiver via RPN 0.

4. System Messages

4.1 System Exclusive (SysEx)

SysEx (0xF0...0xF7) is MIDI's most powerful extension mechanism. Manufacturers can define arbitrary-length custom messages for patch dumps, firmware updates, device configuration, etc. SysEx messages begin with a manufacturer ID (1 or 3 bytes) and end with 0xF7. LdA uses temporary ID 0x7D.

4.2 System Real-Time

System Real-Time messages are single-byte (no data bytes) and can be inserted at any time — even in the middle of a SysEx message. Timing Clock (0xF8) is sent 24 times per quarter note for device sync. Active Sensing (0xFE) is sent every 300ms as a connection keep-alive.

MessageStatus ByteDescription
Timing Clock0xF824 ppqn
Start0xFAStart sequence
Continue0xFBResume from stop
Stop0xFCStop sequence
Active Sensing0xFEKeep-alive every 300ms
Reset0xFFReset all receivers

5. Running Status

Running Status is a MIDI 1.0 bandwidth optimization: when sending consecutive messages of the same type, the status byte can be omitted for subsequent messages, sending only data bytes. In high-density scenarios (e.g., consecutive Note On messages), this saves approximately 33% bandwidth.

// Without Running Status:
0x90 0x3C 0x64  0x90 0x3E 0x64  0x90 0x40 0x64

// With Running Status:
0x90 0x3C 0x64  0x3E 0x64  0x40 0x64

Note: Running Status only applies to Channel Messages (0x80-0xEF). System messages and SysEx interrupt Running Status.

6. Summary

Understanding the MIDI message system is the foundation for mastering MIDI device communication. From simple Note On/Off to complex SysEx, each message type has its design intent and optimal use case. The LdA MS-3 leverages Program Change (preset switching), Control Change (loop control), and SysEx (data management) to provide a complete MIDI control experience.