· via Hacker News – Front Page (native)
Open-source ESP32-S3 pedal runs full-size Neural Amp Modeler captures in real time
Coyopedal runs 23-layer Neural Amp Modeler WaveNets at 48 kHz on an ESP32-S3, hosts a USB audio interface, and compiles the same firmware to WebAssembly for browser testing.
A project called coyopedal, which reached the front page of Hacker News, turns a Waveshare ESP32-S3 development board into a standalone guitar amplifier and effects pedal — and it executes complete Neural Amp Modeler (NAM) captures in real time on the microcontroller itself. According to the project's GitHub repository (dashersw/coyopedal), the firmware runs full-size "A2-Full" NAM models at 48 kHz, a job normally left to a computer running the desktop plugin.
A WaveNet squeezed onto two cores
The amp model is a 23-layer, eight-channel WaveNet processed at 48 kHz. To make that fit, the author wrote Xtensa kernels by hand and runs the network in block floating point, splitting each 64-frame processing block across the chip's two cores. Measurements quoted in the repository put the load at 91% and 94% of the 1,333 µs per-block budget on a DevKitC-1's two cores, with no missed deadlines. Supported hardware needs an ESP32-S3 with 8 MB of PSRAM, because that is where the model is held, plus a USB port the chip can drive in host mode.
USB audio and the effects chain
Rather than an onboard codec, the pedal hosts a USB Audio Class 2 interface at 48 kHz. It has been tested with the XTONE Pro and IK Multimedia's iRig HD X, with the older iRig HD 2 handled through a dedicated UAC1 profile; because interfaces are identified from their USB descriptors, the repository says any 48 kHz UAC2 device should work. Around the amp sit a gate, compressor, chorus and drive before it, plus digital delay and a stereo spring reverb after it. Presets covering amp, controls and effects live on the device, with an on-screen keyboard for naming, and a tuner shares the display with the output muted while tuning.
One firmware, three form factors
The touch UI is written in TSX but compiled to native C++, so the device carries no JavaScript runtime. The same firmware also builds for a bare ESP32-S3 module with no display, where the BOOT button serves as the footswitch and settings are reached over a maintenance API. It compiles to WebAssembly as well: a hosted browser demo linked from the repository serves the identical interface, DSP and model through an audio interface, asking for a local folder in place of the SD card. Chrome and Edge can write back to that folder; Safari and Firefox permit reads only, so writes stay in the browser's own storage.
Bring your own captures
Players can copy .nam files — or prepared .namb files — to a FAT-formatted microSD card under a nam folder at its root, nested up to six levels deep, with filenames up to 127 bytes and files up to 2 MiB. The pedal parses, validates and prepares them on the device, with no desktop conversion step; the first load pauses audio and can take tens of seconds, after which a verified .s3cache file is stored beside the original so later loads are fast. The original file is never modified. Only 48 kHz, eight-channel A2-Full WaveNets are accepted — including the matching member of a SlimmableContainer — and other architectures, sample rates and layer shapes are rejected with an error. The full VoLum capture library can be copied onto a card with a single npm script.
Maintenance and updates
Holding BOOT for 1.5 seconds swaps between audio and maintenance mode, which enables authenticated Wi-Fi OTA updates, remote diagnostics and BLE discovery; the radios stay off entirely while playing. Wi-Fi credentials are optional at build time, and a build without them produces a pedal with no radio at all. Building from source requires Node.js 22.13 or newer, Python 3 with Pillow and fontTools for font rasterization, a C++20 compiler and CMake for host tests, and the Emscripten SDK for the web build; the project's Gea CLI installs the remaining toolchain, including ESP-IDF 6.0.2.
Why it matters
Neural amp modeling has mostly meant a computer in the signal chain, with players running NAM plugins on stage. Running a complete A2 capture on a commodity dual-core microcontroller — with single-digit-percent headroom left on both cores — shows how far hand-written kernels and block floating point can stretch cheap silicon. The shared codebase is just as notable: one project yields a screen-equipped pedal, a headless module and a browser demo, so anyone can audition the modeling before buying hardware. For embedded developers outside audio, it is a concrete demonstration that a 23-layer neural network can meet hard real-time deadlines when the kernels are written for the specific chip.
- #esp32
- #embedded
- #neural-amp-modeler
- #guitar-audio
- #wasm
- #open-source