Colin Calnan  /  Builds  /  Creative technology · Wearable hardware

A kick drum on my shoe that caught every test tap

The sensor board up close: a grey case, a blue button, and a screen reading FOOT TRIG, PAIRING in yellow, tap counter 0. The same board, screen reading FOOT TRIG, ARMED in green, tap counter 1.
The sensor board up close: yellow while it finds the iPad, green when it's listening.Yellow: finding the iPad. Green: listening.
What it is
A sensor on my shoe that plays a kick drum when I tap. My old floor pedal kept me on one leg all gig and hurt my hip and back.
What it proves
I can take an idea from a conversation with an AI to working hardware, and test every change on recordings of my foot.
Measured
Replayed on my laptop, it caught every tap and stomp in my August recording from the top of my shoe.
Status
Tuned on my foot through my gig speaker. Not played at a gig yet.
Built
First working kick in one evening, 5:40 to 7:23 pm. Tuned since.
Made with
Claude, a matchbox-sized sensor board, an iPad drum app
How
Planned in writing first, then built one step at a time

How it works

Tap the shoe, hear the kick

How it works. On my shoe: a foot tap, a motion sensor reading 400 times a second, a check for a movement bigger than normal, a tap and not me shifting my weight, then a kick sent by Bluetooth, louder for a stomp. On stage: an iPad drum app plays a bass drum through the gig speaker. ON MY SHOEON STAGE Foot taplight tap or stomp Motion sensor400 readings a second Bigger than normal?a tap, not shiftingmy weight Sends a kicklouder for a stomp iPad drum appby Bluetooth Gig speakerout to the room How it works, top to bottom. On my shoe: a foot tap, a motion sensor reading 400 times a second, a check for a movement bigger than normal, a tap and not me shifting my weight, then a kick sent, louder for a stomp. On stage: an iPad drum app gets it by Bluetooth and plays a bass drum through the gig speaker. ON MY SHOE Foot taplight tap or stomp Motion sensor400 readings a second Bigger than normal?a tap, not shifting my weight Sends a kicklouder for a stomp ON STAGE iPad drum appby Bluetooth Gig speakerout to the room
Everything on the shoe is a few fixed rules I can check.
  1. The beat moves from the floor to my foot

    Now the sensor rides on top of my shoe, so I can stand however I like.

    Colin at a gig in May 2026, playing guitar, right shoe on a small wooden stomp pedal, all his weight on his left leg.

    Before: right foot on the pedal

    A drawing of a low sneaker from the side, with the small sensor board clipped across its laces mid-foot, and no pedal on the floor. The sensor board, clipped across the laces ARMED No pedal on the floor

    Now: the sensor board on my shoe

    Left, a still from my own gig video, May 2026. Right, a drawing of where the board sits.
  2. It plays when my foot moves hard

    It keeps track of how my foot normally sits and plays the kick the moment my foot moves much harder than that. A light tap plays softer than a stomp.

    Real movement recorded from my foot, eight seconds of each, with the line it has to jump past. On top of the foot the taps and stomps jump well over the line, 12 kicks. Inside a sock most stay under it, 2 kicks here and 4 of about 40 overall. Shuffling on the spot, recorded with the sensor in a sock, never reaches it.On top of my foot: taps and stomps12 kicksInside a sock: taps and stomps2 kicks here, 4 of about 40 overallShuffling on the spot, sensor in the sock, no taps0 kicks Real movement recorded from my foot, eight seconds of each, with the line it has to jump past. On top of the foot the taps and stomps jump well over the line, 12 kicks. Inside a sock most stay under it, 2 kicks here and 4 of about 40 overall. Shuffling on the spot, recorded with the sensor in a sock, never reaches it.On top of my foot12 kicksInside a sock2 kicks here, 4 of about 40 overallShuffling, sensor in the sock, no taps0 kicks
    the line it has to jump pasta kick played
    Eight seconds of each, recorded on my foot in August and replayed through the shoe's rules on my laptop.
  3. A button for walking about

    A walking step looks like a stomp, so the front button turns it off between songs. The screen stays dark on my shoe unless I wake it.

    The board drawn from its code, showing OFF in red after a press of its front button, with a label: press, off for walking. FOOT TRIGOFF Press:off for walking OFF shows for two seconds
    Drawn from its code. Press again and it shows ARMED in green.

Proof

What measuring found

1 in 10Taps caught with the sensor inside a sock, the first way I wore it. The recording showed no setting could fix it, so it moved on top of the shoe.
Out of every ten test taps: one caught inside a sock, all ten caught on top of the shoe. Inside a sock On top of the shoe per ten test taps

Found and fixed. The kick still felt a hair late, even after I swapped in Apple's audio adapter. The AI-written code had never set up the motion sensor: it checked my foot 100 times a second, not the 188 we'd both been quoting. At 400 a second I called it "absolutely perfect".

Two cuts to the delay. The longest a tap can wait for the sensor to look went from 10 thousandths of a second to 2.5. The wait for the tap's hardest moment went from 13 to 15 thousandths to none. Longest a tap waits for the sensor to look, in thousandths of a second beforeup to 10 afterup to 2.5 Waiting for the tap's hardest moment before13 to 15 after0, it plays the instant my foot moves Two cuts to the delay. The longest a tap can wait for the sensor to look went from 10 thousandths of a second to 2.5. The wait for the tap's hardest moment went from 13 to 15 thousandths to none. Wait for the sensor, thousandths of a second beforeup to 10 afterup to 2.5 Waiting for the tap's hardest moment before13 to 15 after0, it plays the instant my foot moves
Two cuts to the delay. Playing at once costs a little: about one hit in seven plays slightly quieter. I took that over a late kick.

AI and me

Who did what

  • The AI (Claude). Searched for anything like it, suggested the parts, wrote all the code, and built a tool that replays my recordings.

  • No AI on the shoe. The chip just follows a few fixed rules.

  • Me. The idea, wearing it, recording every test, hearing that it was still late, and picking speed over exact loudness.

Still breaks

Not there yet

  • The battery. It ran 2 h 15 m, timed in August before the speed fixes. The plan said 6 to 9 hours. To last a three-hour set it has to use about a quarter less power.

    Battery in hours, on a scale from 0 to 9: the plan said 6 to 9, the timed run lasted 2 hours 15 minutes, and a set runs 3 hours. a set, 3 hours6 to 9 hours Plan Timed2 h 15 m 0369 h
  • One foot only. The second board is bought.

  • No real gig yet. It went to one and stayed in the bag.

The full story

It started on a massage table

The kick drum in my solo set came from a Wazinator stomp box under my right foot, so a whole gig meant standing on my left leg. My left hip and back started paying for it. Talking it through with my massage therapist, swapping legs and moving the pedal didn't fix anything. The real problem was that the pedal is fixed. It sits in one spot, and for two or three hours it's never quite where my foot is.

So what if the beat came from my foot instead of the floor? I thought about tap shoes and a board, then sensors and electronic drums. Electronic drumsticks were expensive and hard to get in Canada. So I opened Claude and typed this.

So here's a project idea. I play guitar and use a stomp pedal with my right leg. Recently I've been experiencing some hip and back issues on my left side, because I spend all the time standing on my left foot while playing and tapping with my right. ... I was wondering if there was something that could be attached to the sole of my shoe that could trigger a beat just like the pedal. Act as an inventor. Well, actually, first scour the web to try to find some sort of trigger tapper like that, or else try to find pieces of electronics that I could pull together to make something I could attach to my foot, so that I could trigger a beat while tapping either of my feet easily.

My first message, trimmed, typos fixed

Research and shopping before any code

  • Searched before inventing

    Nobody sells a shoe-mounted kick trigger: an insole controller stuck in beta for years, a patent that never became a product, a few homemade MIDI shoes.

  • A cheaper answer first

    It suggested flat trigger pads, one under each foot. Fair, but it didn't fix the fixed spot on the floor.

  • No soldering

    Its first parts list was a tiny ESP32 board plus a separate accelerometer. I asked for little or no soldering and got "scrap the parts list", and the M5StickS3: board, motion sensor, battery, screen and case in one.

  • Finding one in Canada

    More back and forth than the code: wrong prices, dead links, a discontinued part, out of stock nearly everywhere. I found one on Mouser myself.

The first evening

Versions 1.0 to 1.6 came out of that same chat in one evening in late August. Each was downloaded from the chat, flashed to the board, and what the board did went back into the chat.

TimeVersionWhat changed
5:40 pmv1.0Ported to the M5StickS3 with the standard BLE-MIDI libraries.
6:45 pmv1.1Flicker-free display. Crash loop.
6:53 pmv1.2BLE-MIDI written by hand on the chip's built-in Bluetooth.
7:23 pmv1.4On-screen checkpoints. The first version that worked.
10:04 pmv1.6Power management, and the note moved from 36 to 35.

Then a real project, plan first

After that it became a repository set up with my spec-driven development skill and run in Claude Code: a mission, rules the agent can't break, a roadmap of phases, and for each phase an interview, requirements, a plan and a file that says how done gets proven. All 42 commits carry Claude as co-author.

I recorded the accelerometer on my foot: taps, stomps, shuffling and walking. A replay harness runs the detector over those recordings on the laptop, so a change gets tested on real movement without strapping it on every time. The movement chart above comes from those files.

The detector

It keeps a slow baseline of where the foot sits and fires when a reading moves more than 1.65 g away from it, then ignores everything for 120 ms so the impact's ringing can't double-hit. The baseline freezes during a hit, otherwise the hit drags it up and shrinks its own peak. Velocity runs from 70 to 127, sent as note 35 on channel 10.

Tuned on the foot

  • More sensitive

    My note after first wearing it with a clip mount: "I really need to stamp my foot to get something out of it." The line came down from 2.0 g to 1.5 g, then up to 1.65 g after an odd fire on a shuffle. Replayed, it keeps every soft tap, and the shuffling recording (made with the sensor in a sock) still fires zero times. At the first setting it caught 39 of about 40 recorded taps; lowering the line recovered the four soft taps it dropped.

  • Faster

    It used to wait 13 to 15 ms for the true peak. It now fires on the crossing. It asks the iPad for a 15 ms Bluetooth slot, and the accelerometer, never configured and stuck on its 100 Hz default (the 188 Hz we'd quoted was the gyro), now runs at 400 Hz. Between 38% and 51% of the recorded samples had been repeats.

  • A dark screen and an honest battery gauge

    The screen stays off unless the side button wakes it. A boot counter shows if a stomp ever resets the board. The battery shows CHG while charging and a smoothed figure that only goes down, and it learns time left from one full run.

Problems along the way

  • Bluetooth libraries crash-looped

    The usual BLE-MIDI and NimBLE libraries either wouldn't compile or crash-looped the board. Every version is pinned exactly now.

  • Speed costs battery

    A short Bluetooth interval keeps the chip awake. Slowing the main loop to save power dropped detection from 9 in 10 taps to 6 in 10, because a tap's peak only lasts a sample or two. Reverted.

  • Heel-down dropped

    Dropping a heel looks exactly like a step, so the gestures are tap and stomp only.

  • Hardware ruled out

    An ESP32-C6 board (same power limit, no accelerometer), the M5 Capsule (same battery), and a battery base that weighs 90 g, a brick on a foot.

  • M5StickS3
  • ESP32-S3
  • BMI270
  • BLE-MIDI
  • Arduino C++
  • bs-16i
  • Claude Code
  • Spec-driven development