Turning folders of samples into MPC kits with Rust

Every producer I know has the same problem: gigabytes of drum samples and no kits. Building an MPC program by hand means assigning pads one sample at a time. It's the least musical part of making music.

DorDSP Kit Pro fixes that. Point it at a folder of drums and it:

  1. Scans the library and classifies every hit by name: kick, snare, hats, percussion, and so on
  2. Lays them out on a 16-pad bank
  3. Writes a self-contained kit folder with the program and its samples, ready to copy onto the hardware

It writes kits for DMC60 (.dmcpgm), any Akai MPC (.xpm), MPC 3 tracks (.xtd), Ableton Live Drum Racks (.adg), and Ableton Move and Note presets.

One Rust core, two front ends

The most important decision was keeping all the logic in Rust crates that know nothing about the UI:

crates/mpc-core/        scanning, classification, layouts, generation
crates/mpc-xpm/         .xpm parser + template-preserving writer
crates/mpc-xtd/         MPC 3 track writer with MPCe pad expression
crates/ableton-adg/     Ableton Drum Rack writer
crates/ableton-bundle/  Move/Note preset writer
crates/mpc-cli/         the dordsp-kit-pro binary
apps/desktop/           Tauri 2 + React

The desktop app is the main way in: drag a folder in, review the classification, preview the 4×4 pad grid, then generate. The CLI calls the exact same APIs, so it's great for batch jobs:

# Twenty kits from one library, with minimal sample reuse across kits
dordsp-kit-pro ./samples --kits 20 --output ./kits --name "BoomBap"

# One kit per subfolder, named after the folder
dordsp-kit-pro ./Pack --per-folder --output ./kits

# Same variation every time, or a true shuffle
dordsp-kit-pro ./samples --seed boomspot
dordsp-kit-pro ./samples --shuffle

Tauri gives me a small native app without shipping a whole browser, and Rust gives me fast, safe file and audio handling. None of the core crates depend on Tauri, so the engine stays testable on its own.

MPC 3 and pad expression

MPC 3 changed things: its factory kits are tracks (.xtd), not programs, and only tracks carry MPCe pad expression, meaning what a pad does depending on where you hit it. Kit Pro can write those with an expression preset applied to every pad:

PresetWhat the pad does
zonesUp to 4 samples, one per quadrant
blendTwo samples crossfaded bottom to top
spreadUp to 8 samples in strips from left to right
filterX opens the low-pass filter, Y adds resonance
repeatsOuter zones trigger note-repeat articulations

For zones, blend, and spread, the allocator stacks samples from the same category onto each pad: four kicks on pad 1, four hats on pad 3, and so on. The generated files follow the same structure as Akai's own factory tracks, but they still need testing on real MPC 3 hardware before I'd call them compatible.

Cleaning up samples as they go in

Two optional passes fix the most common problems with downloaded packs. Neither one touches your library, because processed samples are written as fresh WAV files inside the kit.

  • Trim leading silence (--trim-start) cuts everything before the first sample above -60 dBFS, keeping a 2 ms pre-roll so the transient never clicks. Pads trigger on the hit instead of a few milliseconds of air, which is what makes sloppy chops feel late or flam against each other.
  • Normalize (--normalize peak or --normalize loudness). peak puts each sample's loudest point at -0.3 dBFS. loudness matches the RMS of the loudest 50 ms of each sample to -12 dBFS, so a kick and a snare come out at the same perceived level instead of the same peak.

When you audition a pad in the app, you hear the processed audio, so what you hear is exactly what goes into the kit.

Why this matters to me

This tool came out of building DMC60. I needed kits to test the drum machine, and making them by hand was killing my momentum. Now building a kit takes seconds, and I get back to the part I actually care about: making beats.