# MIDI 1.0 / MIDI 2.0 UMP Universal MIDI Packet, Channel Voice 2.0, SysEx 7/8-bit Wire-Protocol Decoder & Byte Counter

Decode a MIDI 1.0 bytestream (status bytes, running status, System Common / Real Time, System Exclusive) or a MIDI 2.0 Universal MIDI Packet stream — message types 0x0 Utility, 0x1 System, 0x2 MIDI 1.0 Channel Voice, 0x3 SysEx 7-bit, 0x4 MIDI 2.0 Channel Voice with 16-bit velocity and the 7.9 pitch attribute, 0x5 SysEx 8-bit / Mixed Data, 0xD Flex Data, 0xF UMP Stream — with per-packet field tables, byte/word/packet counts, reserved-field validation, SysEx continuation state machines, and MIDI 1.0 ⇄ UMP translation.

> Canonical page: https://elysiatools.com/en/tools/midi-1-0-midi-2-0-ump-universal-midi-packet-cib-channel-voice-2-0-sysex-7-bit-8-bit-byte-counter

- **Category:** Media

- **Keywords:** Universal MIDI Packet, UMP, MIDI 2.0, MIDI 1.0 wire protocol, SysEx 7-bit, SysEx 8-bit, channel voice, pitch 7.9, packet decoder

## Overview

UMP packets are fixed-length per message type (0x0/0x1/0x2: one 32-bit word; 0x3/0x4: two; 0x5/0xD/0xF: four; 0x6-0xE unassigned in UMP 1.1) with the type in the top nibble of byte 0. The MIDI 2.0 Channel Voice status table decodes 0x0/0x1 registered/assignable per-note controllers, 0x2/0x3 RPN/NRPN, 0x4/0x5 relative RPN/NRPN, 0x6 per-note pitch bend (32-bit), 0x8/0x9 Note Off/On (16-bit velocity + attribute type 1 = Pitch 7.9: 7-bit semitone + 9-bit fraction, 512 steps per semitone), 0xA poly pressure, 0xB control change, 0xC program change with bank-valid bit, 0xD channel pressure, 0xE channel pitch bend (32-bit, centre 0x80000000) and 0xF per-note management. SysEx7 packets are always 2 words carrying up to 6 data bytes; SysEx8 packets are always 4 words carrying a stream id plus up to 13 eight-bit-clean bytes. The MIDI 1.0 decoder honours the original specification: running status applies only to channel messages, System Real Time bytes may be interleaved anywhere without cancelling it, and System Common / SysEx cancel it. Field layouts are cross-checked against the Linux kernel, JUCE and cmidi2 implementations of the adopted UMP 1.1.2 specification.

## Inputs

- **Hex byte stream (MIDI 1.0 bytestream or UMP words)** (textarea): 40 90 3C 01 D2 00 0B 00 … (spaces, commas, 0x prefixes and newlines are all accepted)
- **Protocol** (select)
- **Translate MIDI 1.0 → UMP** (checkbox)
- **UMP group for translated packets (0-15)** (number)

## When to use

- Debugging raw hex packet dumps from USB MIDI 2.0 interfaces, virtual MIDI drivers, or hardware synth capture logs.
- Verifying MIDI 2.0 Channel Voice messages, including 16-bit high-resolution velocity, 32-bit controllers, and Pitch 7.9 note attributes.
- Analyzing legacy MIDI 1.0 bytestreams with running status and testing conversion to 32-bit Universal MIDI Packets across assigned groups.

## How it works

- Paste raw hexadecimal bytes into the input field using spaces, commas, newlines, or 0x prefixes.
- Select the protocol format—MIDI 2.0 UMP stream (32-bit packet words) or standard MIDI 1.0 bytestream.
- Optionally enable MIDI 1.0 to UMP translation and configure the target UMP group number (0–15).
- Inspect the decoded message breakdowns, packet metrics, field values, and SysEx state machine logs.

## Use cases

- Firmware engineers validating embedded USB MIDI 2.0 driver packet structures against the adopted UMP 1.1.2 specification.
- Audio software developers verifying MIDI 1.0 to MIDI 2.0 translation accuracy and running status expansion in plugin hosts.
- Hardware developers troubleshooting multi-packet 7-bit and 8-bit System Exclusive transfers and continuation state flags.

## Frequently asked questions

### What UMP message types are supported by the decoder?

It decodes Utility (0x0), System (0x1), MIDI 1.0 Channel Voice (0x2), SysEx 7-bit (0x3), MIDI 2.0 Channel Voice (0x4), SysEx 8-bit / Mixed Data (0x5), Flex Data (0xD), and UMP Stream (0xF) packets.

### How does the tool handle running status in MIDI 1.0 bytestreams?

It applies running status to channel messages, maintains status across interleaved Real Time bytes (like 0xF8 Timing Clock), and resets it on System Common or SysEx bytes according to spec.

### What is the Pitch 7.9 attribute decoded in MIDI 2.0 Note On/Off messages?

Pitch 7.9 specifies microtonal tuning per note using a 7-bit semitone base value combined with a 9-bit fractional tuning fraction (512 steps per semitone).

### What is the difference between SysEx7 and SysEx8 packets in UMP?

SysEx7 packets are fixed at 2 words (64 bits) carrying up to 6 7-bit bytes, while SysEx8 packets use 4 words (128 bits) with a stream ID and up to 13 raw 8-bit clean bytes.

### Can this tool convert legacy MIDI 1.0 byte sequences to UMP words?

Yes. Enabling the translation option converts MIDI 1.0 channel and system messages into corresponding 32-bit UMP packets routed to your designated group (0–15).

## Related tools

- [DSD to PCM Converter](https://elysiatools.com/en/tools/dsd-to-pcm): Convert DSD (Direct Stream Digital) audio files to PCM WAV format with selectable bit depth and sample rate
- [HDR AVIF to SDR PNG Tone Mapper](https://elysiatools.com/en/tools/hdr-avif-to-sdr-png): Decode PQ or HLG AVIF, convert BT.2020 to sRGB, and tone map highlights into a viewable SDR PNG.
- [A1Z26 Letter-Number Workbench](https://elysiatools.com/en/tools/a1z26-letter-number-workbench): Convert between letters and numbers (A=1, B=2, … Z=26) with configurable separator and case, decode numbers back to letters, and compute the letter sum of any text.
- [Blues / Ragas / Maqam Microtonal Pitch-Bend Tutor — MIDI 2.0, MPE and Scala .scl Encodings](https://elysiatools.com/en/tools/blues-ragas-modes-microtonal-pitch-bend-midi-2-and-maqam-tuning-tutor): Map world tunings — 7-limit just blues, Arabic maqamat (Rast/Bayati/Hijaz/Saba) on 24-EDO quarter tones, the 22-shruti table, gamelan slendro/pelog, 31-EDO, 53-EDO and the A440 harmonic grid — onto nearest-note + RPN fine tuning, MPE 14-bit bends at ±2/±24/±48/±96 semitones, MIDI 2.0 32-bit pitch bend, the MIDI 2.0 Pitch 7.9 note attribute, and a Scala .scl export.
- [X.509 Certificate Decoder](https://elysiatools.com/en/tools/certificate-decoder): Parse an X.509 SSL/TLS certificate (paste PEM or upload .pem/.crt) and inspect subject, issuer, validity period with expiry status, public key, signature algorithm, serial, SANs, key usage and fingerprint. Like openssl x509 -text, visualised. Runs locally.
- [Utility Bill Line-Item Decoder & Hidden Fee Detector (CSR/CFL/MHC/HFA Riders, Peak Demand, kWh↔Btu↔therm↔ton-hours)](https://elysiatools.com/en/tools/csr-cfl-cfl-mhc-hfa-btu-ton-hours-utility-bill-line-item-validator-and-rgp-peak-explainer): Decode home and commercial electric/gas/water bills: classify tariff riders and charges (CSR/CFL/MHC/HFA-style codes, TOU on/off-peak, demand, capacity tag, decoupling), convert kWh↔Btu↔therms↔Ccf↔m³↔ton-hours with EIA factors, expose hidden fixed fees, and project annual cost with load-factor and peak-shaving savings.
- [Distributed Trace Decoder & Waterfall Visualizer](https://elysiatools.com/en/tools/distributed-trace-decoder-waterfall-visualizer): Decode Jaeger, Zipkin, or OpenTelemetry trace JSON and render span timing, dependencies, and error hotspots as an interactive waterfall report
- [Extended Text Base Codecs (Base65536 + netstring)](https://elysiatools.com/en/tools/extended-text-base-codecs): Encode and decode with less-common text codecs: Base65536 (binary → dense Unicode) and netstring (self-delimiting framing). Base85 is intentionally not rebuilt (already covered).

## Samples

- [QUIC Protocol Implementation Samples](https://elysiatools.com/en/samples/quic-protocol-samples): Comprehensive QUIC protocol samples covering HTTP/3 implementation, UDP reliable transport, connection migration, and performance optimization
- [AMQP Message Protocol](https://elysiatools.com/en/samples/amqp-samples): AMQP (Advanced Message Queuing Protocol) examples for enterprise messaging with RabbitMQ, queues, exchanges, and advanced routing patterns
- [MIDI Viewer Samples](https://elysiatools.com/en/samples/midi-viewer-samples): Sample MIDI file for the in-browser MIDI Viewer
- [MQTT Message Protocol](https://elysiatools.com/en/samples/mqtt-samples): MQTT (Message Queuing Telemetry Transport) protocol examples for IoT and real-time messaging with publish/subscribe patterns
