No Drama Drums — portable C++/WASM tool to chop drum grooves and recreate synth kick / snare / hats
NoDruma breaks samples into chops and regenerates a clean synthetic drum sound clones
- Drum Chopper + Auto Recreate w/ Drum Synth
- Sample Chopper + Sample Mapping
- Pitch, EQ Controls
- MIDI Controls
- Export Samples as Kit
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -j
ctest --test-dir build --output-on-failureBinary: ./build/nodruma
./build/nodruma help
./build/nodruma help splitBrowser MPC kit builder under webapp/: left = drum split /
classify / recreate (pads 1–9, MIDI C2–G♯2); right = QWERTY sample
chopper (MIDI C3+). Decode at 44.1 kHz; crop a slice before process. Header
Looper stacks pad takes into independent loop tracks (survives kit Reset).
Session autosaves to IndexedDB until Clear session. Export drums or chops as ZIP.
./webapp/scripts/build_wasm.sh
python3 -m http.server 8080 -d webappGitHub Pages deploys from main via .github/workflows/pages.yml
(enable Pages → GitHub Actions in repo settings).
| Feature | Status |
|---|---|
Groove chop (split) via spectral flux |
Good on typical breaks |
| Classify kick / snare / hat | Improved (onset-aligned sub/LF/HF); duplicates still common |
| Recreate snare from chop | Strong (layer mix) |
| Recreate hat from chop | Decent on short hats |
| Recreate kick from one-shot / mix | Usable; still improving |
| Morph params from session cache | Kick-oriented |
Generated files go under ./output/ (gitignored).
mkdir -p output
./build/nodruma split \
--in your_groove.wav \
--out-dir output/split/demo \
--extractThen listen to:
output/split/demo/00N_*.wav— raw chopsoutput/split/demo/extracted/00N_*_nodruma.wav— recreatedoutput/split/demo/hits.json— onset / kind / confidence
./build/nodruma process --model snare --in snare_chop.wav --out output/snare_out.wav
./build/nodruma process --model kick --in kick.wav --out output/kick_out.wav \
--dump-layers output/layers/kick./build/nodruma process --model kick --in kick.wav \
--out output/kick_out.wav --write-session output/kick.bin
./build/nodruma morph --session output/kick.bin --model kick --out output/kick_morph.wav| Command | Purpose |
|---|---|
process |
Analyze + resynthesize one WAV |
split |
Chop groove → WAVs + optional --extract |
detect |
Kick-oriented onset dump |
morph |
Resynth from session cache |
info / version / help |
Meta |
Full flag lists: nodruma help <command> or docs/USAGE.md.
- docs/USAGE.md — tester guide, flags, tips
- docs/ARCHITECTURE.md — DSP pipeline
include/nodruma/— public C++ / C APIsrc/core/— FFT, onset, split, STFT, extract, synth, enginesrc/models/— kick / snare / hattools/nodruma_cli/— CLIwebapp/— WASM MPC demo (GitHub Pages)tests/— unit testsoutput/— local generations (gitignored)
Released under the Apache 2.0 license.