Why MIDI 1.0 Limits Parameters to 128 Steps
The MIDI 1.0 specification, standardized in 1983, restricts continuous control parameters to 128 distinct values due to its underlying 7-bit data architecture. While modern digital systems typically operate on 8-bit bytes or higher, MIDI 1.0 reserves one bit of every 8-bit byte for message identification, leaving only seven bits to represent numerical values. This article explains the binary structure of MIDI messages, why this 7-bit limit exists, how it causes audible stepping artifacts, and the workarounds used to achieve finer resolution.
The Anatomy of a MIDI Byte
Standard digital communication organizes binary information into 8-bit bytes. A full 8-bit byte can represent \(2^8\), or 256 unique values (0 to 255). However, MIDI 1.0 does not use all eight bits to transmit parameter values. Instead, it categorizes incoming bytes into two types: Status Bytes and Data Bytes.
To distinguish between these two types in a continuous data stream, the specification utilizes the Most Significant Bit (MSB)—the first bit on the left:
- Status Bytes: The MSB is always set to
1(binary range10000000to11111111). These bytes tell the receiving device what action to perform, such as Note On, Note Off, or Control Change (CC). - Data Bytes: The MSB is always set to
0(binary range00000000to01111111). These bytes provide the specific values for the preceding status command, such as which key was struck or how hard it was hit.
Because the MSB of every data byte is permanently reserved as a
0 flag, only the remaining seven bits are available to
encode actual data.
The 7-Bit Calculation
In binary mathematics, the number of possible states is calculated as \(2^n\), where \(n\) is the number of available bits. With seven available data bits, the calculation is:
\[2^7 = 128 \text{ unique states}\]
These states are mapped to integer values ranging from 0 to 127. Consequently, standard MIDI Control Change (CC) messages—which control continuous variables like volume (CC 7), pan (CC 10), expression (CC 11), and modulation (CC 1)—can only increment or decrement across these 128 discrete steps.
Impact on Continuous Parameters
When applied to note velocity or key selection, 128 discrete values are often adequate for the human ear. However, continuous controllers controlling analog-style synth parameters often suffer from this limited resolution.
When sweeping a synthesizer's resonant low-pass filter frequency across a wide spectrum using standard CC data, the jump between each of the 128 steps can become audible. This produces an artifact known as "zipper noise," where a sweep sounds like a series of distinct clicks or stepped frequency jumps rather than a smooth, continuous transition.
Workarounds within MIDI 1.0
Recognizing that certain performance parameters required greater precision, the creators of MIDI 1.0 included mechanisms to bypass the 7-bit limitation:
- Pitch Bend: Pitch variation is especially sensitive to stepping. To prevent zipper noise, the specification allocates two 7-bit data bytes (Least Significant Byte and Most Significant Byte) to every pitch bend message. Combining two 7-bit values yields 14 bits of resolution (\(2^{14} = 16,384\) steps), creating transparent, smooth pitch shifts.
- 14-Bit CC Pairs: MIDI allows certain CC controllers to be paired (such as CC 0–31 paired with CC 32–63) to send 14-bit data, though this requires doubling the transmission bandwidth and depends on whether the receiving software or hardware supports it.
MIDI 2.0 addresses this limitation at the architectural level by adopting 32-bit resolution for continuous controllers, expanding the available parameter steps from 128 to over 4 billion.