guide
Building an MPC drum kit from a folder of samples
What a .xpm program actually contains, how pad A01 maps to instrument 1, and why a kit can load with silent pads.
An MPC kit is not a folder. It is a program — an .xpm file — that names the samples
it wants and says which pad plays which. Get the .xpm right and a kit loads in one press.
Get it subtly wrong and the kit loads, looks correct, and several pads are silent.
This is what is actually in the file, and what goes wrong.
What an .xpm is
XML. A Drum program for MPC OS 3.x is a single .xpm file describing 128 instruments,
each with 8 layers, plus a <PadNoteMap> that maps physical pads to MIDI notes. A
16-pad kit uses the first 16 instruments and leaves the other 112 empty — they still have
to be present, which is why an .xpm is a large file for what it expresses.
It sits in a folder with the WAVs it references:
MyKit/
MyKit.xpm
01-kick.wav
02-snare.wav
…
The program names samples; the folder supplies them. Move the .xpm out of its folder and
the kit is empty.
Pad numbering is bottom-up
The thing that catches everyone. On the MPC, pad A01 is the bottom-left pad, and it is instrument number 1. Pad A16 is top-right.
Every on-screen grid you build a kit in — including ours — is laid out top-down, because that is how grids are drawn. So the visual index and the instrument number are not the same number, and if you map them naively your kit arrives with the rows flipped: your kick on the top row, your hats at the bottom, everything playable but wrong under the fingers.
Convert deliberately, in one function, with a test. It is four lines and it is the difference between a kit that feels right and one that does not.
Referencing the samples
Two fields decide whether a pad makes a sound, and the safe combination is not the obvious one:
SampleName— the base name, without the.wavextension.SampleFile— leave it empty.SampleEnd— leave it0.
With SampleFile empty, the MPC resolves <SampleName>.wav relative to the .xpm's own
folder. That is what you want: the kit stays portable, and it survives being copied to an
SD card at a different path. An absolute path baked into SampleFile works on the machine
that wrote it and nowhere else.
SampleEnd of 0 tells the MPC to detect the length itself. A wrong non-zero end is the
classic silent pad — the sample is loaded, the program is valid, and the playback range is
empty.
Layers
Each instrument has 8 layers, for velocity switching and round-robins. A simple drum kit fills Layer 1 and leaves layers 2–8 empty. They still have to exist in the XML.
Writing one
Do not generate the XML from a mental model of the schema. Take a real program off a real
machine — save an empty Drum program from MPC OS on the hardware, open it, and use that
as the template. Fill in the Layer-1 SampleName for the pads you are using and change
nothing else.
Two details that matter and are invisible:
- Line endings are CRLF. The MPC's own files use them.
- Keep
<PadNoteMap>exactly as the machine wrote it. It is not interesting, and regenerating it is a good way to break note mapping for no benefit.
The failure modes, in the order you will hit them
- Rows flipped. Visual grid index used as the instrument number. See above.
- Silent pads.
SampleEndleft at a wrong non-zero value, orSampleFileholding a path that does not exist on this machine. - Empty kit. The
.xpmwas moved away from its WAVs. - Loads but plays nothing in the default mode. Worth knowing: a program can be structurally valid and still be inaudible in the MPC's default Pad mode because of how the instrument was configured. Test on hardware; "the XML parses" is not the test.
That last point is the general lesson. There is no validator for this format that means anything. Load the kit on the machine. We found a silent-pad bug that way that no amount of structural validation against a reference program had caught.
The sample files themselves
- 44.1 kHz, 16-bit, WAV. The MPC will take more, and there is no reason to give it more for drums.
- Trim the head. A few milliseconds of silence before the transient is latency you can hear when you play the pad.
- Name the files with the pad number first —
01-kick.wav,02-snare.wav. The program does not care, but you will when you are looking at the folder on a card.
WeaveTone builds the program and the WAV copies together: a per-pad category template,
one press to fill it from your own library, trim in place, export a real .xpm to a
folder or straight to the SD card. See what it does or
get the macOS build.