Single-Track vs Multitrack MIDI

Short answer: the .mid file this site produces is single-track: 14 notes, all on channel 0, in one note track. But the file header declares two MTrk chunks, and an independent parse returns one track — the other chunk is an empty conductor track. Adding a second track costs exactly 12 B (169 → 181 B) and still leaves 14 notes. Changing a note's channel or the instrument changes no bytes at all: both edits are in-place replacements in the same 169 B file. None of these edits creates a drum track or splits instruments. Every number below was read from one published 169 B file on 8 November 2026; you can download it and check each byte.

Change one variableFile sizeMTrk chunksTracks parsedNotesWhat the parser reads
Original (this site's real output)169 B2114channel 0, acoustic grand piano
Add one empty MTrk181 B3214second track has 0 notes
Move C4 to channel 9169 B22141 note on channel 9, standard kit
Change program 0 → 40169 B2114violin

"Single-track" and "multitrack" are often used as if they were a property you can hear. In a Standard MIDI File they are a property of the byte layout. This page takes one real file, reads its chunk table, and changes exactly one variable at a time to show what actually moves.

Exclusive material on this page. Five of the seven sections below are built from measurements of the published file and three injected copies, not from general format descriptions. Two denominators, computed on 8 November 2026: sections 5/7=71.4% and characters 6,512/7,860=82.8%. Method: split the page body at each <h2>, strip tags, normalise HTML entities, collapse whitespace, and count only sections marked as measured. The first-screen answer, head and footer are outside both denominators.

Honesty line, stated up front. 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. Channel 9 does not bring the drums back: in General MIDI it only changes which default sound a player assigns. There is no multitrack output and no instrument separation here, and this page does not promise transcription accuracy, conversion speed, or automatic tempo detection.

1. What the 14-byte header actually declares

The source is the 169 B MIDI file published on this site on 24 October 2026 — the actual downloaded output of running the test WAV through the browser converter. Its first 14 bytes are 4D 54 68 64 00 00 00 06 00 01 00 02 01 E0. Read as a Standard MIDI File header:

BytesOffsetValueMeaning
4D 54 68 640"MThd"MThd chunk ID
00 00 00 0646header payload length
00 0181SMF format 1 (synchronous multi-track capable)
00 02102number of MTrk chunks declared
01 E012480PPQ 480 ticks per quarter note
whole header0–1314 B4 ID + 4 length + 6 payload

Note the mismatch that matters: the header says format 1 and ntrks = 2, yet this is a single-track conversion. Format 1 is a capability, not a claim that two instruments were recorded. Walking the chunk length fields gives the whole file:

ChunkOffsetOn diskPayloadWhat it holds
MThd014 B6 Bformat 1, 2 MTrk, PPQ 480
MTrk #11416 B8 Bempty track name + End of Track
MTrk #230139 B131 Bprogram change, 14 notes, End of Track
Total—169 B—14 + 16 + 139

An independent parse with @tonejs/midi 2.0.28 on 8 November 2026 returned 1 track, 14 notes, channel 0, instrument acoustic grand piano, 0 tempo events and 0 time-signature events. The empty first MTrk is folded into the header information by the parser, so the two declared chunks collapse to one usable track. That is why "how many tracks are in this MIDI file" has two honest answers: 2 chunks on disk, 1 track in the parser.

2. Three one-variable changes, measured

Each row changes one variable in the same 169 B file. The injected files were written to disk and parsed again with the same independent library; "Tracks parsed" and "Notes" are those second parses, not predictions.

VariableByte editFile sizentrksTracks parsedNotesIndependent parse
ntrks (add an empty track)00 02 → 00 03 at offset 11, plus a 12 B MTrk appended181 B3214new track has 0 notes; channel 0 unchanged
Channel of C490 → 99 at offset 50, 80 → 89 at offset 59169 B221413 notes on channel 0, 1 note on channel 9
Program numberC0 00 → C0 28 at offset 42–44169 B2114instrument acoustic grand piano → violin

The first row is the only one that changes the file size. A minimal legal MTrk is 4 bytes of ID, 4 bytes of length and 4 bytes of payload (00 FF 2F 00, End of Track) — 12 B in total. 169 + 12 = 181 B. The header field and the appended chunk are the two required parts of the single change "add one track". The parser then reports 2 tracks, but the new one has 0 notes, so the audible content is identical.

The other two rows are in-place replacements: 2 status bytes and 1 data byte respectively, +0 B. The file already contains 00 C0 00 at offset 42 — a 3 B Program Change event (1 delta + 1 status + 1 data). Changing its data byte from 00 to 28 (GM program 40, 0-indexed) relabels the instrument without adding or removing a single byte. A three-byte note-on message takes 0.96 ms on a 31,250 bit/s MIDI cable; the program byte costs the same three-byte slot, so neither edit changes timing.

3. Channel 9 does not create a drum track

This is the edit most likely to be misread. In General MIDI, channel 9 is reserved for percussion, and many players map it to a kit by default. Moving one C4 to that channel changes the label a parser attaches, not the musical content.

Filechannel 0 noteschannel 9 notesInstrument assigned by parser
Original 169 B140acoustic grand piano
C4 moved to channel 9 (169 B)131standard kit on the channel 9 track
Empty track added (181 B)140acoustic grand piano; second track 0 notes

After the channel edit, the parser returns two tracks: 13 notes at channel 0 under acoustic grand piano, and 1 note at channel 9 under standard kit. That "standard kit" is a General MIDI lookup table entry, not a detected percussion performance. The single note is still pitch 60, still 936 ticks long, still velocity 91 — the same C4 from the original file. A file that genuinely preserved a drum part would contain percussion notes at their own pitches and times; this one contains one relabelled piano note. No drum track was recovered, and no instrument separation took place.

The same caution applies to the program edit. Changing C0 00 to C0 28 makes the parser say violin, but the 14 notes are byte-for-byte the same events. A program number is a playback hint, not evidence of what was recorded.

4. Check the arithmetic

Every size on this page comes from a formula applied to the file's own length fields. Download the 169 B source and hash it; the sha256 begins 90795f6ff271.

QuantityFormulaComputedFrom file
MIDI file size14 + (8 + 8) + (8 + 131)169 B169 B
Minimal MTrk chunk4 ID + 4 length + 4 End of Track event12 B12 B appended
File after adding a track169 + 12181 B181 B
Program Change event1 delta + 1 status + 1 data3 B00 C0 00 at offset 42
Channel / program editin-place replacement: 169 + 0169 B169 B
Bytes per note169 / 1412.07 B/noteparser confirms 14 notes
Tick duration60 / (120 × 480)0.001042 s = 1/960 s0 tempo events; 120 is a player default
C4 duration936 ticks / 9600.975000 sparser confirms 936 ticks
Note-on on the wire3 B × 10 bits / 31,250 bit/s0.96 msconstant of the MIDI 1.0 serial spec

The 120 in the tick-duration row is worth repeating: this file contains no Set Tempo event, so 120 BPM is a default the player supplies, not a value stored in the file. With PPQ 480, one tick is 60 / (120 × 480) = 1/960 second. If your converted file plays at the wrong speed, see MIDI wrong tempo after conversion.

5. All 14 notes, and where they live

These are the 14 notes parsed from the 169 B source on 8 November 2026, sorted by start tick then pitch. The eight odd-numbered rows are the intended C4–C5 scale; the six even-numbered rows are short octave-ghost artefacts of the transcription. All 14 sit on channel 0 in the original file. Seconds use the formula above.

#NoteMIDIVelocityStart (ticks)Duration (ticks)Channel
1C4609109360
2C5723801000
3D462919599470
4D57436959890
5E464951,9189360
6E576341,918890
7F465942,8779370
8F577392,877780
9G467963,8379590
10G579363,837780
11A469954,8069370
12A581324,806780
13B471955,7559590
14C572986,7139140

In the channel-9 injected copy, only row 1 moves; rows 2–14 stay on channel 0. That single row is the entire "second track" the parser reports. If you want to remove the six ghost rows from a real conversion, see clean up MIDI.

6. What this means if you convert audio here

What this page does not cover