Fun PuffinFun Puffin
← All projects

Drum Machine

Work in progress
View on GitHub →

A 12-pad wireless MIDI drum controller for GarageBand, built on an ESP32-S3. Right now it's a breadboard and a lot of wires — still very much in progress — but the part that matters already works: every pad triggers its mapped drum sound over Bluetooth, with no cable to the computer at all.

How it works

Twelve momentary buttons, one per drum sound, each debounced in software so a single press reads as a single, clean hit. Twelve LEDs, one per pad, flash on every hit — with a minimum hold time built in so even the fastest tap still gives visible feedback instead of just a flicker.

On press, the board sends a MIDI Note On (and a Note Off on release) over Bluetooth LE, advertising itself as a MIDI device named DrumBox. Pair it with GarageBand — or any app that accepts Bluetooth MIDI input — and the pads work like any other drum controller. No MIDI interface, no USB cable.

Each pad is mapped to a standard General MIDI drum note on channel 10, so it plays GarageBand's default drum kit correctly with zero track configuration:

Kick36
Snare38
Closed Hi-Hat42
Open Hi-Hat46
Low Tom45
Mid Tom47
High Tom50
Crash Cymbal49
Ride Cymbal51
Hand Clap39
Rim / Side Stick37
Cowbell56

Hardware

BoardESP32-S3 dev board — runs the firmware and the BLE MIDI stack
Input12 momentary push buttons, one per pad
Feedback12 LEDs + 220Ω resistors, one per pad

Button and LED pins are chosen to avoid the ESP32-S3's reserved and strapping GPIOs.

Status: work in progress

It's currently a bare breadboard build — no enclosure, exposed wiring everywhere — but the firmware and the Bluetooth MIDI connection to GarageBand both work end to end. The remaining work is mechanical, not electrical: a real enclosure, and mounted pads instead of loose buttons on a breadboard.