ProjectsAboutExperienceSkillsContactRésumé
← All projects

Dual-MCU Guitar Pedal

StompLink

CC++STM32ESP32FreeRTOS
StompLink screenshot

A stereo guitar effects pedal, built into a Hothouse enclosure, that splits its firmware across two microcontrollers so the real-time work and the bursty work never compete: a Daisy Seed (STM32H750, Cortex-M7 at 480 MHz) runs overdrive, tremolo, and delay at 48 kHz in interrupt context, while an ESP32-S3 acts as USB host, WiFi gateway, and web server, and drives an SSD1306 OLED over I2C. The controls are the real thing: six knobs, three toggles, and two footswitches for bypass and tap tempo.

One ASCII protocol travels over both USB CDC and WebSocket, so state stays in sync bidirectionally no matter where a change comes from: turn a knob and the OLED and every connected browser update, edit in the browser and the pedal follows, with parameter ownership arbitrated so web writes never fight the physical knobs. The audio callback never takes a lock. Parameters cross context boundaries as single-word volatile writes and get de-zippered per sample so changes are click-free.

The web UI is a gzipped single page embedded in flash, with WiFi provisioning, mDNS, and simultaneous SoftAP + station mode (ESP-IDF v5.5, FreeRTOS). The shared protocol header is plain C that compiles as C99 or C++ and runs its unit tests on the host in CI on every commit. It also surfaced the kind of bugs you only meet on real hardware: USB VBUS sensing blocking enumeration, newlib-nano missing float formatting, and the CDC link silently dropping burst data, solved with retry logic.