decoder.tools

MIDI Message Decoder

Decode MIDI status and data bytes into readable musical events.

INPUT
OUTPUT

The result appears here as you type.

Decoding runs in your browser. What you paste is not sent to a server.

A MIDI decoder interprets MIDI message bytes — a status byte carrying the message type and channel, followed by one or two data bytes — as the note, velocity, controller or program change event they represent.

Example

Input
90 3C 64 80 3C 40
Output
Note On  ch1  C4  vel 100
Note Off ch1  C4

What is the MIDI Message Decoder?

MIDI is a byte protocol from 1983 that has never needed replacing. A status byte always has its high bit set: the upper nibble is the message type (0x9 note on, 0x8 note off, 0xB control change, 0xC program change, 0xE pitch bend) and the lower nibble is the channel, 0–15. Data bytes always have the high bit clear, so their range is 0–127 — which is why MIDI velocity, controller values and note numbers all top out at 127.

Note numbers map to pitches with middle C at 60, and each semitone is one step. Velocity 0 on a note-on is, by convention, a note-off — a bandwidth trick that lets a stream of notes reuse a single status byte under running status, where repeated status bytes are omitted entirely.

MIDI 2.0 adds higher resolution and bidirectional negotiation, but MIDI 1.0 byte streams remain what most hardware and software actually exchange.

How to use the MIDI Message Decoder

  1. Paste the MIDI bytes as hex, for example 90 3C 64.
  2. Read the decoded message type, channel, note and velocity.
  3. Watch for running status, where a status byte is omitted and inherited.

When to use it

  • Debugging a controller that sends the wrong channel or CC number.
  • Learning the MIDI byte format while writing a parser or plugin.
  • Verifying what a sequencer actually transmits versus what it displays.

MIDI Message Decoder at a glance

Status byteHigh bit set: type in upper nibble, channel in lower
Data bytesHigh bit clear — values 0–127
Note 60Middle C
Note on, velocity 0Equivalent to a note off

Frequently asked questions

Why is MIDI limited to 128 values?

Data bytes must keep their high bit clear to be distinguishable from status bytes, leaving seven bits — 0 to 127. Pitch bend gets 14-bit resolution by using two data bytes.

What is running status?

An optimisation where consecutive messages of the same type omit the repeated status byte, sending only data byte pairs. It saves bandwidth on the original 31 250 baud serial link and still appears in MIDI files.

What MIDI note is middle C?

Note number 60 under the standard convention, though some manufacturers label it C3 and others C4 — the number is unambiguous, the name is not.

Last reviewed · found a mistake? contact@decoder.tools · view as markdown