Roadmap for DrumScript#
DrumScript follows Semantic Versioning. The current phase is Alpha (
v{{version}}) - the classification model and score generation/ API is out for testing. The alpha phase began on 1st June 2026 and is ongoing - no fixed end date. Beta (1.0.0) follows once the API stabilises and the classification model is validated against standard ADT benchmarks.
Release Plan#
Phase |
Versions |
Target Window |
What to Expect |
|---|---|---|---|
Pre-Alpha |
|
June 2025 - May 2026 |
Core pipeline works end-to-end. API may change between releases. Built in isolation |
Alpha (current) |
|
June 2026 – ongoing |
Core pipeline works end-to-end. API may change between releases. Feedback sought. Cross off some of the Issues added in pre-Alpha |
Beta |
|
Follows alpha (API-stability gated) |
API locked for each minor version. Focus on accuracy, edge cases, and evaluation against standard ADT datasets. Release first version of free-to-use |
Stable |
|
tbc |
Public API frozen. Breaking changes only in major versions. Community-owned tool. Publication of paper in journal to announce release |
What works today:
End-to-end transcription pipeline: audio → onsets → classification → PDF / MIDI / MusicXML
Tempo detection via spectral onset envelope
Stem separation using Demucs (
htdemucs4-stem model)Drumless backing track generation
CLI and Python API
Colab demo notebook
mir_evalbenchmarking framework with IDMT-SMT-Drums V2 adapter (added v0.1.6, contributed by @nanaoto)
Alpha Priorities (v0.3.0 – v0.9.0)#
Before we can publish a confident v1.0.0 of
DrumScriptwe need to: a. perfect the DrumScript deterministic engine: ie, the classification model and the score/PDF generation b. build an in-browser, zero storage for input or output audio and free-to-use UI for non-coders
1. Deterministic classification model (the core, and the part the MIR community is most interested in)
Fixing classification edge cases (deep snares vs clicky kicks, splash cymbals vs open hats)
Addressing crash/cymbal over-detection (centroid thresholds, de-bounce - see the classification-fixes note above)
Improving onset detection sensitivity for ghost notes and fast passages, and reducing phantom/duplicate events
Expanding coverage across genres, kit types, and recording conditions
Relative-frequency (per-track) calibration so the model is less tied to absolute Hz bands (see “Stable Version” below for the longer-term vision)
2. Score / PDF generation and readability (raised repeatedly by testers, including MIR researchers)
Improve transcription notation; known bugs: note tails that don’t line up with note heads, review cosmetic layout/density
Fix time signatures and ensure transcription timing is correct to semi-quaver
Investigate onset-timing precision feeding into score placement (spurious rests from small timing errors)
3. Browser-based zero-code UI
A major goal before Beta
We recognise DrumScript’s place as a Python package excludes non-coders from using it, so it is a major goal to publish, alongside 1. and 2. a browser deployment using WebGPU/WebAssembly/Pyodide-or-Java/ONNX-based UI
We want this to be Free-to-use
We also want it to run completely in-browser, so it **never stores your audio or data, including the outputs so that DrumScript can run entirely client-side - no installation, no server, no account, no data leaves the user’s machine. The aim is a free, local-input/local-output tool that non-technical musicians can use without touching a terminal.
Measurement
Resuming the
mir_evalbenchmarking work (with @nanaoto); expanding dataset coverage (ENST-Drums, MDB-Drums) beyond the existing IDMT-SMT-Drums V2 adapter, and recalibrating classifier thresholds based on benchmark findings rather than by eye
Supporting work
Improving Demucs stem-separation quality outputs
Community feedback from fellow drummers, audio engineers, and the
TISMIR/MIRcommunity
Bugs & technical debt handled alongside (not at the expense of the two fundamentals above):
numpy 2.x migration, which unblocks Python 3.13 support (and testing 3.14) - one linked task
Silencing the pydub
SyntaxWarningin the CLI
Beta Priorities 0.9.x – 0.9.9#
Immediately prior to release of DrumScript v1.0.0 some goals will be small fixes to ensure robustness, testing the UI, integrating the UI with current CI/CD pipelines
Also planned:#
Smarter classification across genres and kits
The current frequency thresholds were derived from a small sample set and are essentially absolute values - they work well for a typical rock/pop kit but can struggle with jazz kits, piccolo snares, deep floor toms, and non-standard tunings.
The plan is to introduce a per-track calibration step: before the deterministic classifier runs, DrumScript would first characterise the kit as a whole (identify the frequency clusters present in a given track) and then classify hits relative to those clusters, rather than relying on fixed Hz bands.
The working theory is that all drum kits have relative frequency relationships regardless of absolute tuning - making the system far more genre-agnostic.
Richer organological modelling
Building out the classification taxonomy along the membranophone (snares, toms, etc) and idiophone (cymbals, hats, etc) classification ontology:
Better separation of tom voices (floor, mid, rack)
Recognition of cymbal subtypes (splash, china, bell hits vs edge hits)
Hi-hat gradations beyond open/closed (half-open, foot splash, pedal chick)
Dynamics and advanced technique
The alpha treats every hit as equal. Future versions should handle:
Accents and ghost notes
Different beater styles (stick tip vs shoulder, brush sweeps, mallet rolls)
Expressive techniques critical for accurate transcription and meaningful notation
Classification fixes already applied in
classify_eventsThese address known over-detection / phantom-event problems and are directly relevant to the ongoing score-readability work:Noise gate - restored a minimal noise gate (2% of global max) in
classify_events. Dead silence was passing through and generating phantom events.Ride/crash centroid threshold - aligned from
2500→5500inclassify_events, matching theclassify_idiophonestandalone function.2500was causing massive crash over-detection (e.g. 859 crashes in the TGOO transcription).De-bounce lockout - added a minimal 50ms lockout in
classify_eventsfor full-song mode. Duplicate timestamps were appearing because consecutive onsets on the same transient were both being classified.Note (Aug 2026): crash over-detection has been observed again in testing (e.g. ~291 crashes on a Peace Sells transcription), so the centroid threshold and de-bounce behaviour likely need revisiting - tracked as part of the alpha classification-model work below.
Broader stem separation uses
The Demucs integration currently targets drummers, but the same pipeline can produce vocal-only, bass-only, or instrument-only extractions. These will be exposed as first-class features so the tool is useful to vocalists, bassists, and producers - not just drummers.
*Formal evaluation/publishing a paper in academic journals (software engineering/open source/music information retrieval) on deterministic methods/the
DrumScriptrepository/project. scope as yet undecided
Benchmarking against standard ADT datasets using
mir_evalmetrics is now underway - the infrastructure shipped in v0.1.6 with IDMT-SMT-Drums V2 as the first verified benchmark. The write-up will target the TISMIR Educational Articles track covering the pipeline architecture, evaluation results, and design decisions.
How to Get Involved#
Report bugs or edge cases: GitHub Issues
Suggest features: Feature Request template
Contribute code: See Contributing
Share feedback: hello.drumscript@gmail.com
Start a public discussion: Discussions
Similar Projects#
No affiliation as yet, however.
librosa - The spectral analysis library that powers DrumScript’s onset detection and feature extraction.
Demucs - The stem separation model we use for isolating drums from full mixes.
tepreece/drumscript (Golang) - A
(Go)langMIDI drum pattern scripting language by Tom Preece. Different use case (composing drum patterns via script), different technology (MIDI output rather than audio transcription). If you’re looking to write drum patterns programmatically, check it out. Maintained by @tepreece**[basic-pitch][https://github.com/spotify/basic-pitch] - A lightweight yet powerful audio-to-MIDI converter with pitch bend detection (better for non-percussive audio)
mir_eval - Standard evaluation metrics for music information retrieval tasks.
onset_db - Provides a dataset of annotated musical onsets for tuning and evaluating audio detection algorithms. Maintained by JKU Linz.
DrumBurp - DrumBurp is a desktop GUI drum tab editor created by Michael Thomas (whatang) between 2011–2019. It’s a PyQt desktop application for manually writing drum notation - you type in notes by hand, specifying which drum, when, and how you hit it. It is not a transcription tool.