Short answer: in a Standard MIDI File, when a channel message uses the same status byte as the one just before it, that byte may be left out and the previous status is reused. This is called running status. Taking this site's published 169 B / 14 notes file and omitting the first k of its 14 omittable status bytes gives 168 B at k=1, 167 B at k=2, 162 B at k=7 and 155 B at k=14 — exactly 169 − k. All four copies still read 14 notes, PPQ 480, 0 tempo events, the same 7,627-tick end point, and every note's pitch, start tick, duration and velocity unchanged. Only two things move: the note track's 4-byte length field (131 − k) and the total file size. Re-inserting the k bytes restores the source file byte for byte. Measured 14 November 2026 (UTC) with @tonejs/midi 2.0.28 and an independent SMF parser. Download the source and check each byte.
| Variant | File size | MTrk length | Bytes omitted | Notes read | Tracks read |
|---|---|---|---|---|---|
| source (k=0) | 169 B | 131 | 0 | 14 | 1 |
| k=1 | 168 B | 130 | 1 | 14 | 1 |
| k=2 | 167 B | 129 | 2 | 14 | 1 |
| k=7 | 162 B | 124 | 7 | 14 | 1 |
| k=14 | 155 B | 117 | 14 | 14 | 1 |
Every row is the same 169 B source with one variable changed: k, the number of leading omittable status bytes removed, in event order. No audio was re-converted, no note was added or removed, and no timing value was altered. Each of the four copies was re-opened from scratch with an independent parser.
Exclusive material. Five of the seven sections below are measurements of one published file, four single-variable omit-status reconstructions, their chunk maps, a cell-by-cell list of the 14 omittable bytes, six single-byte structural controls and four byte-for-byte restorations — not general format descriptions. Two denominators, computed on 14 November 2026: sections 5/7=71.4% and characters 6,608/8,747=75.5%. Method: split the body at each <h2>, strip tags, normalise entities, collapse whitespace, count only measured sections. The first-screen answer, head and footer are outside both denominators.
Honesty line, stated up front. This page does not offer a running-status tool and does not output a running-status file: there is no running-status output here. It is a byte-level experiment on one already-published .mid file, editing bytes and re-parsing the copies; it is not a converter feature and makes no conversion claim. This site does not separate instruments. It does not keep a drum track. It outputs a single-track .mid file with one note track and no per-instrument parts. There is no multitrack output and no instrument separation here. It does not detect tempo, BPM or musical key automatically, and does not promise transcription accuracy or conversion speed. No DAW was opened and no DAW compatibility is claimed.
Version caveat. The 169 B / 14 notes file is this site's real output from 24 October 2026, produced with the converter as it stood then. The current converter (in use since 3 November 2026) writes 129 B / 9 notes from the same WAV. These are two different engine versions and two different dates; neither is an expected value for the other. If you run the WAV through the live tool today, expect 129 B, not 169 B. The byte-level experiment below deliberately uses the published 169 B file because that file is public and reproducible; it is not a measurement of the current converter's output.
The source is the 169 B MIDI file published here on 24 October 2026 alongside the test WAV. Its first 14 bytes are 4D 54 68 64 00 00 00 06 00 01 00 02 01 E0: MThd declares format 1, two tracks and division 01 E0 = 480 ticks per quarter. The chunk table below is read from the file's own length fields, with no assumed offsets:
| Chunk | Offset | Length field | Bytes on disk | Working |
|---|---|---|---|---|
| MThd (header) | 0 | 6 | 14 B | 8 + 6 = 14 |
| MTrk (conductor) | 14 | 8 | 16 B | 8 + 8 = 16 |
| MTrk (notes) | 30 | 131 | 139 B | 8 + 131 = 139 |
The first MTrk is an 8 B conductor track; the second holds 131 B of events. Walking from its body start at offset 38 through the variable-length delta-times enumerates 31 events: 14 Note On, 14 Note Off, one Program Change and two meta events, ending at tick 7,627. Its status-byte sequence is FF C0 90 90 80 80 … 80 80 FF — the notes arrive in same-status pairs, which is exactly what makes running status applicable. The two versions of this file's engine are listed separately:
| Engine date | Size | Notes | Scope |
|---|---|---|---|
| 24 October 2026 | 169 B | 14 notes | older engine; the public sample used on this page |
| 3 November 2026 | 129 B | 9 notes | current engine; expect 129 B, not 169 B, for a fresh conversion |
In a Standard MIDI File, each channel event normally carries a status byte followed by one or two data bytes. When consecutive channel events share a status, the later one may omit that byte; a reader carries the previous status forward until a new explicit status or a meta event appears. It is a space-saving rule defined by the file format, not a feature of any converter and not a statement about the music. This section is general format context and is excluded from the exclusive-material denominators above. The Note On / Note Off bytes and the delta-time encoding were measured separately on this same file.
Four copies were built with k = 1, 2, 7 and 14. In each, the first k omittable status bytes are deleted and nothing else is edited except the note track's length field, which must fall by k for the chunk table to stay consistent. Each copy was re-opened from scratch with @tonejs/midi 2.0.28, and independently walked by a second parser that implements running status directly:
| k | Omitted | Length field | File bytes | Notes read | Tracks read | PPQ | Tempos | SHA-256 (12) |
|---|---|---|---|---|---|---|---|---|
| 1 | 1 | 130 | 168 | 14 | 1 | 480 | 0 | 3562cf77823e |
| 2 | 2 | 129 | 167 | 14 | 1 | 480 | 0 | 8263e8172d26 |
| 7 | 7 | 124 | 162 | 14 | 1 | 480 | 0 | 7797fc85e067 |
| 14 | 14 | 117 | 155 | 14 | 1 | 480 | 0 | da4bfc005ae6 |
The size is strictly linear: each omitted byte removes exactly one byte from the file and one from the length field. The header is untouched — format 1, ntrks=2, division 480, 0 tempo events. All four copies are parsed as 14 notes at PPQ 480, and the second parser reads the same 14 notes with identical (midi, ticks, durationTicks, velocity) tuples at the same 7,627-tick end point. The four derived files are not published; every reading can be reproduced from the published source.
No figure below is copied from a rendered page. Chunk lengths come from the files' own length fields, note counts from the independent parsers, and totals from the byte formula fileBytes = 14 + (8+8) + (8+length) for the three chunks:
| Formula | Computed | Corroborated by |
|---|---|---|
14 + (8+8) + (8+131) | 169 B | sum of three chunk length fields plus their 8 B headers |
169 − 14 | 155 B | one byte removed per omitted status byte |
131 − 14 | 117 | MTrk#2 length field tracks the removed bytes |
14 notes × 4 fields | identical | midi, ticks, durationTicks, velocity in the SMF-spec parse |
7,627 / 960 | 7.944792 s | last event tick; PPQ 480, 0 tempo events |
Division 01 E0 gives 480 ticks per quarter, so one tick is 60 / (120 × 480) = 1/960 s at the SMF default of 120 BPM; this file has 0 tempo events and none of the four edits adds one. The final event sits at 7,627 ticks = 7.944792 s in every copy. The single-variable check is stronger than a successful parse: all 14 notes were compared row by row on (midi, ticks, durationTicks, velocity) against the source, and re-inserting the deleted bytes rebuilt a file whose SHA-256 equals the source byte for byte — and that rebuilt file was itself re-opened and read as 14 notes at PPQ 480:
| Variant | Bytes re-inserted | Restored SHA-256 (12) | Equals source | Notes read |
|---|---|---|---|---|
| k=1 | 1 | 90795f6ff271 | yes | 14 |
| k=2 | 2 | 90795f6ff271 | yes | 14 |
| k=7 | 7 | 90795f6ff271 | yes | 14 |
| k=14 | 14 | 90795f6ff271 | yes | 14 |
Byte equality alone would prove only that nothing else moved; the re-parse is what proves the result is still a usable MIDI file.
Which status bytes can be omitted is determined by the file, not chosen by hand: a channel event whose status equals the immediately preceding channel event's status, with no meta event between them, is a candidate. The source has exactly 14 such positions. The table lists each one with its original offset, the status byte, its delta-time bytes and its absolute tick; the last column shows whether it is among the first seven omitted at k=7:
| Event # | Offset | Status | Delta bytes | Tick | Omitted at k=7 |
|---|---|---|---|---|---|
| 4 | 50 | 90 | 00 | 0 | yes |
| 6 | 59 | 80 | 86 44 | 936 | yes |
| 8 | 67 | 90 | 00 | 959 | yes |
| 10 | 76 | 80 | 86 5A | 1906 | yes |
| 12 | 84 | 90 | 00 | 1918 | yes |
| 14 | 93 | 80 | 86 4F | 2854 | yes |
| 16 | 101 | 90 | 00 | 2877 | yes |
| 18 | 110 | 80 | 86 5B | 3814 | no |
| 20 | 118 | 90 | 00 | 3837 | no |
| 22 | 127 | 80 | 86 71 | 4796 | no |
| 24 | 135 | 90 | 00 | 4806 | no |
| 26 | 144 | 80 | 86 5B | 5743 | no |
| 28 | 153 | 90 | 87 3E | 6713 | no |
| 30 | 162 | 80 | 87 11 | 7627 | no |
Every second event of the 28 note messages qualifies, alternating 90 (Note On) and 80 (Note Off); the Program Change at C0 and the two FF meta events do not. Offsets are absolute positions in the original 169 B file, so after deleting earlier bytes a later byte sits k positions earlier in its copy. The delta bytes and ticks are the parser's own reading of the source, not a transcription of a rendered table.
Six further edits change exactly one byte each in the 162 B k=7 copy — a delta-time byte, a note-number byte, a velocity byte, the low byte of the length field, the MThd magic, or the End-of-Track meta type. Every copy stays 162 B. The readings are what the independent parser actually returned:
| Byte edit | Variant file | Still parses | Notes read | Size |
|---|---|---|---|---|
64 → 65 @ 52 | control-delta.mid | yes | 14 | 162 B |
48 → 49 @ 47 | control-note-number.mid | yes | 13 | 162 B |
26 → 40 @ 48 | control-velocity.mid | yes | 14 | 162 B |
7C → 7D @ 37 | control-length.mid | yes | 14 | 162 B |
4D → 58 @ 0 | control-magic.mid | no | — | 162 B |
2F → 2E @ 160 | control-eot-meta.mid | yes | 14 | 162 B |
Five of the six still parse, and one of those five silently loses information: changing a note-number byte by one semitone leaves its Note Off paired with a different pitch, so only 13 notes are read. Changing a delta byte, a velocity byte, the length field's low byte, or the End-of-Track meta type still returns 14 notes — a file that still opens can carry a shifted tick, a different loudness, a mismatched declared length or a changed terminator. Only the M → X magic-byte edit throws. A file that still parses is not necessarily a file with the same content. That is why the four reconstructions were checked for chunk-formula totals, per-note equality, and a byte-for-byte restore that can be re-opened, and not merely for "it opened". The Program Change byte and the format field were measured separately.
Open the 169 B source file in a hex editor, enumerate its 31 events from body start 38, mark each channel event whose status repeats the previous channel event's status, delete the first k of those status bytes, reduce the note track's length field by k, and re-open with a MIDI library that reports note pitch, ticks, velocity and per-track counts. The four derived files and six control files are not published here; the source file is, and every reading above can be reproduced from it. To convert audio instead, the MP3 to MIDI converter runs in your browser and produces a single-track .mid; the MIDI to MP3 tool renders in the other direction. Neither tool writes files that rely on running status.
Not here: no conversion-accuracy measurement, no speed figure, no tempo, BPM or key detection claim, no multitrack or per-instrument output, no drum track, no URL or YouTube input, no DAW test, and no claim that this site is more accurate than anyone else. Numbers come from one 169 B file published on 24 October 2026, four single-variable omit-status reconstructions and six single-byte controls, measured on 14 November 2026 (UTC). General format facts, method notes, limits and disclaimers are excluded from the exclusive-material denominators above.