MP3 to MIDI: Why Channel 10 Is Stored as a 9

A drum part in a converted file is addressed by four bits. General MIDI calls that address channel 10, and the format documents the channel field as 0 to 15, so the drum channel is stored as 9. The value 10 is a different address: under Level 2 it is the second percussion kit, and under Level 1 it is melodic. A converter that writes the number it reads lands one channel away from the drums.

Short answer

  • Four bits. The channel is nnnn in the status byte: sixteen values, 0 to 15.
  • Tenth of sixteen. The reserved channel is the tenth value, so it is stored as 9. Note On for drums begins 1001 1001, hex 99.
  • The value 10 is taken. Level 2 puts the second percussion kit on channels 10 and 11, which are values 9 and 10.
  • 128 programs discarded. The drum channel sounds as percussion whatever program number it is sent, so all 128 are inert there.

Sixteen channels, counted two ways

General MIDI Level 1 requires an instrument to "Support all 16 channels simultaneously (with channel 10 reserved for percussion)". The file format gives the channel four bits: the message table reads "D7----D0nnnn is the MIDI channel no.", and the Channel Prefix meta event spells the range out as "The MIDI channel (0-15)". Sixteen values, 0 through 15, and no other line gives a channel a range. So the reserved channel is a name, and the tenth of sixteen values is 9. Every note written to the drum part carries that 9 in its status byte.

What the byte actually says

Note On is 1001nnnn 0kkkkkkk 0vvvvvvv. With the drum channel in nnnn the status byte is 1001 1001, hex 99, decimal 153. The next channel up is hex 9A, decimal 154; the last is hex 9F, decimal 159. One bit in the low nibble separates the drum part from a melodic part. A kick written to key 36 with status 9A sounds as C2 on whatever patch that channel last selected, because on a melodic channel a key number is a pitch and nothing reinterprets it. The note number is unchanged; only the address moved.

The number 10 is already in use

The Level 2 summary lists "Simultaneous Percussion Kits - up to 2 (Channels 10/11)". Those two names are values 9 and 10 in the field. A writer who puts 10 in to mean channel 10 therefore reaches the second percussion kit on a Level 2 device and a melodic channel on a Level 1 device: one byte, two meanings, decided by the receiver. The same page counts "9 GS Drum kits", and the GS summary says the kits add "14 additional drum sounds each", 126 sounds no channel number reaches, because kit selection is a separate message.

The message the drum channel ignores

Program Change is 1100nnnn 0ppppppp, one program number per channel. General MIDI is explicit about the drum channel: it "always sounds as percussion regardless of whatever program change numbers it may be sent". Sixteen channels times 128 program numbers is 2,048 addressable pairs; the 128 on the drum channel are inert, 6.25 percent of the space. The patch map makes the collision visible: program 10 is Glockenspiel. Selecting it on the drum channel is 1100 1001 000 1010, hex C9 0A, two bytes a compliant instrument must accept and must ignore.

Where the document writes the number

The string "Channel 10" occurs once, in the appended General MIDI percussion key map. The range 0-15 occurs once, in the Channel Prefix meta event; 1-16 occurs zero times. The prefix event is the only way to attach a channel to data that has no channel field, and it takes the same 0-15 value: a prefix covering the drum part is 09, not 0A.

The check that settles it

Read the low nibble of the first status byte on the drum track. Hex 9 is the drum channel; hex A is not. One character decides percussion or melody, and no track name overrides it.

Related