My BB1 Drum MIDI Workflow Using Claude
Sharing this in case it’s useful to anyone else prepping custom drum parts for a BeatBuddy 1. It’s a bit involved, but once set up it’s repeatable and fast.
Before Claude: getting a transcribed MIDI file
- Source audio. I pull the song audio from YouTube.
- Transcribe with Drum2Notes [klang].[io]. I upload the audio and it produces a drum transcription. Heads up: the free tier only gives you a 20-second preview, which isn’t enough to judge or use — you need at least a one-month subscription to get the full song transcribed.
- Download the quantized (“DAW”) version of the MIDI file — this is the “for DAW” export option in Drum2Notes, not the raw unquantized one. I’ll sometimes preview it in BeatBuddy Manager Online (BBMO) first just to sanity-check it before going further.
- Upload to Claude and start with velocity shaping. Drum2Notes exports everything at a flat velocity (no dynamics at all), so my first request to Claude is always to shape the velocity — this is the point where the file stops sounding robotic.
What happens inside Claude (needs at least a Pro plan)
Project setup. I run this inside a Claude Project with a fixed set of reference files loaded, so Claude never has to guess at conventions:
- A custom “kit reference” document covering all 12 BeatBuddy kits, confirmed against screenshots of the actual kit note maps (including my two non-standard kits — Modern Custom and Jazz Brushes, neither of which ship with a stock BeatBuddy).
- A GarageBand note-name reference table, used as a manual cross-check tool (see below).
- The BBMO manual PDFs, so Claude can answer questions about how BBMO itself behaves (fill types, start points, transitions, etc.) rather than guessing.
- A custom Python-based MIDI splitting/analysis tool (skill) that does the actual bar/beat math, note remapping, and file generation.
Automatic validation pass. Before touching anything, Claude runs a full analysis of the uploaded file — checking quantization grid (including triplet/shuffle grids, not just straight 16ths), flagging implausible or silent notes, checking bar numbering, and cross-referencing notes against the target kit’s map. It reports everything it finds and waits for me to confirm before making any changes — nothing gets modified silently.
Velocity shaping + humanisation. Once I confirm, Claude reshapes velocity (using its most capable model tier for this step (Opus 4.8 currently) — mechanical extraction work can run on a lighter model (Sonnet 5 atm) , but shaping the actual musical dynamics needs the more capable one). Humanisation (small random timing/velocity jitter) is applied automatically as a final layer whenever shaping happens — I don’t have to ask for it separately, and it’s reported as its own step so I can see what changed.
Building the shaped master. The shaped, humanised file becomes the master copy. From this point on, every extract (verse, chorus, fill, outro, etc.) is cut from that master — not from the original raw file — so everything stays musically consistent.
Extracting parts — the request syntax. Once I have a shaped master, I ask for parts in plain language referencing bar numbers, e.g.:
- “Extract bars 9–16 as the Verse”
- “Give me the fill at bar 27” (fills are kept to one bar max, in line with BB1’s own limit)
- “Extract the transition, bars 40–44” (transitions can span multiple bars — BB1 allows that)
- “Suggest three outro options for the last 4 bars” — this specifically triggers a three-way outro composition (A/B/C variations for me to choose from); if I just say “extract the outro, bars X–Y” it’s treated as a plain extraction of what’s already there, not a composed one.
I determine the parts manually by listening and viewing the transcription in Drum2Notes.
Claude does the bar-to-tick maths itself, cuts the file, and — importantly — does not shift a fill’s notes back to the start of the bar; it preserves the silence before the hit so the timing feel within the bar is kept intact, unless I explicitly ask for it to be rebased.
Delivery. Everything comes back as a zip (even a single file), with a consistent filename pattern like Song Title - Verse (Bars 9-16).mid, so my library stays organised without me having to rename things.
GM preview option. After each extract is delivered, I’m offered a GM (General MIDI) audio preview of the file — a quick way to hear what’s actually on the file using a standard drum sound set, without having to load it into BBMO first. I don’t always use this myself, but it’s a genuinely useful sanity check for anyone who wants to confirm a part sounds right before going anywhere near BBMO. One caveat worth knowing: the preview is most accurate on the file’s pre-remap (GM-numbered) state — previewing after a kit-specific remap can render slightly wrong, since GM preview doesn’t know about kit-specific note substitutions.
Kit-specific handling. Because I use Modern Custom and Jazz Brushes, Claude applies kit-specific remap rules automatically — for example, Jazz Brushes has some genuinely tricky notes (one that looks like it should be a ride but is actually a long snare sweep, and one that looks like a tom but is actually the hi-hat pedal). These get flagged and handled rather than silently mis-mapped.
GarageBand cross-check (optional, on request). If a note comes back ambiguous or plays silent on the target kit, I can drop the file into GarageBand, listen to what the note actually is, read its on-screen note name off the piano roll, and report that name back to Claude. Because GarageBand and BBMO use the same octave convention (C3 = MIDI 60), the note name converts straight across to a MIDI number with no offset, and Claude reconciles that against the target kit map to decide on a manual remap. This is a manual aid for edge cases only — it never replaces the automatic validation, which is the default path for everything else.
Checks and safeguards built into the process
- Report before acting — every analysis pass is shown to me first; nothing is changed without explicit confirmation.
- Quantization checks include shuffle/triplet grids, not just straight-16th detection, so shuffle-feel songs aren’t misdiagnosed as “unquantized.”
- Master-first extraction rule — if I ask for a cut/fill before a shaped master exists, Claude stops and checks with me rather than pulling from the raw file. If the master later gets re-shaped, previously delivered extracts are flagged as stale.
- Kit hazard flags — known problem notes on non-standard kits (like the Jazz Brushes snare-sweep/hi-hat-pedal traps) are called out rather than silently mapped.
- Velocity ceiling awareness — Claude won’t push velocities past MIDI’s max (127) to compensate for a quiet-sounding kit; that’s a BBMO mixer/volume issue, not a MIDI data issue.
- No silent overwrites — every extract keeps its bar-relative timing unless I explicitly ask for a rebase.
- Type 0 MIDI only — output is always single-track Type 0, since that’s what the BB1 requires.
Files I’m attaching for this project
These are the two things that make the whole pipeline actually work — without them Claude has no kit knowledge and no way to do the file maths:
BB Custom beats files.zip (22.9 KB)
- Claude Project instructions.
- BB1 Kit Reference. The core document. Covers all 12 BeatBuddy kits’ note maps (screenshot-verified against actual BBMO kit screens), the pipeline conventions Claude follows, and a GarageBand note-name cross-check table for resolving ambiguous notes. This is what lets Claude apply the correct remaps for non-standard kits like Modern Custom and Jazz Brushes instead of guessing.
- bb-midi-splitter skill (SKILL.md + bb_midi.py). The actual working code — does the bar/beat-to-tick calculations, note remapping, velocity shaping, and file splitting/export. Without this, Claude would be reasoning about MIDI in the abstract rather than actually generating correct files.
Freely available resources referenced in this workflow
These aren’t included as files in the shared bundle — they’re publicly available direct from the source, so just go and grab them yourself:
- Drum2Notes — the audio-to-MIDI drum transcription tool.
- BeatBuddy Manager Online (BBMO) — Singular Sound’s web app for loading and editing songs/kits on the BB1.
- BeatBuddy Manager Online Manual — official BBMO user manual, from Singular Sound.
- BeatBuddy Firmware Manual — official BB1/BB2 firmware manual, from Singular Sound.
Happy to try to answer questions if anyone wants to try replicating this setup. (but Claude might be a better companion for hard stuff
).