Finally got my Pi groovebox making noise after weeks of fiddling

Oct 20, 2026 Last reply: 5 hours ago 5 Replies
Jump to replies (5)

Spent the last month building a little groovebox around a Pi Zero 2 and it finally made its first proper beat last night. I went with the Amy board for the sound side since it handles the synth voices on its own, and the Pi just runs the interface on a small touchscreen. Getting the two to talk to each other over serial took way longer than I want to admit, mostly becuase I kept flipping which one was supposed to be the master. The nice surprise was how well it handles live tweaking. Knobs on a cheap MCP3008 adc read fine at the polling rate I set up, no audible zipper noise even when sweeping a filter fast. Latency from finger to sound sits somewhere under 30ms which feels fine for jamming, though drum rolls still expose it a bit. Enclosure is just laser cut plywood layers stacked up, and the whole thing runs off a USB power bank. Next step is writing a proper step sequencer because the one I threw togehter over a weekend is rough around the edges. If anyone here has messed with sequencing on the Pi I'd love to hear what approach you took, but for now I'm just happy the thing actually plays.


I went down the same road last year with a Pi 3 and an old HiFiBerry hat, and the sequencer was the part that nearly broke me. My first version triggered each step straight from the interface loop and the timing wandered all over the place, expecially once I added swing. What fixed it was flipping the whole thing around: the interface just writes into a pattern grid, and a seperate loop wakes up a bit ahead of each beat and queues up everything for the next few steps at once. Once I did that the timing locked in tight, no more of that lurchy feel on drum fills.

I also learned to keep the touchscreen redraws out of the audio path entirely. Redrawing the playhead every step was enough on its own to cause stutters, so now it only repaints a few times a second and nobody notices.

For hardware I used momentary buttons on a matrix wired to the Pi's own pins instead of an adc, which saved me a board and gave me 16 step keys for basicly nothing. If your MCP3008 polling is alredy smooth, I'd leave it alone though, reading pots through bit-banged spi was the fiddliest part of my build. Mine still lives in a taped-together cardboard box, so the plywood layers have me feeling a bit underdressed.

I used a Teensy 4.0 board instead of leaning so heavily on the Pi for the timing. My issue wasn't the data transfer between the Pi and the sound module, but getting consistent clocking from the main processor, which kept drifting when I tried to run the synth engine and the step sequencer off the same OS loop. It sounded fine at 120 BPM, but everything warped around 135. I found that the CPU was just too busy handling I/O for the precise timing required. I ended up using the Teensy specifically for the sequencing logic and sending MIDI clock pulses over USB to the Pi, which just handled the UI and audio stream. It took forever to get the MIDI implementation right, mapping the step events to the correct channel, but the clock stability was night and day compared to my initial attempts. The jitter vanished completly. I decided against using a full-fledged step sequencer in software; a simple state machine running on the Teensy was much more reliable for keeping the clicks tight. The latency remained low, and the step repeats felt predictable. It really changed how I viewed the whole system, treating the Pi as merely the display controller instead of the brains.

That power bank setup is the part I'd watch. Mine would shut itself off after a few minutes because the draw was too low for it to stay awake. Had to find one that doesn't do that, or hack a small dummy load onto a spare port. Also if your step sequencer ends up with more than a handful of patterns, get them saving to the sd card early. I lost a whole evening of programming a track when mine rebooted mid jam and there was nothing on disk.

One thing that made my knob feel way better was ditching the linear pot mapping for the filter. The cutoff taper is naturally exponential, so feeding the raw 0-1023 value straight in means the top third of the travel does almost nothing and the interesting stuff is all crammed at the bottom. I put a lookup table in there with a curve and suddenly sweeping felt musical instead of lumpy. Also curious how you settled the master/slave confusion in the end, since I've gone back and forth on wheather the sound board should chase the Pi's clock or just get told what to do and run free.

This is making me feel better about my own attempt, mine is a regular Pi 4 with a cheap usb sound card and I got stuck for weeks just trying to send note data between two python scripts without pops and stutters. Never even got as far as knobs. When you say the sound board handles the voices on its own, does that mean the Pi just sends it note on/off type messages and the board does everything else? That might be the piece I was missing, I was trying to do too much on the Pi side myself.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required