CoyoPedal – Full-Size Neural Amp Modeler Captures on an ESP32-S3 CoyoPedal is a standalone guitar amp and effects pedal that runs full-size Neural Amp Modeler A2 captures in real time on a Waveshare ESP32-S3-Touch-AMOLED-2.06 board, with the same firmware also compiling to WebAssembly for browser playback. The 23-layer, eight-channel WaveNet model runs at 48 kHz in block floating point with hand-written Xtensa kernels split across both cores in 64-frame blocks, and the firmware also builds for a bare ESP32-S3 module with no panel, measured at 91% and 94% of the 1,333 µs block budget across the two cores with no missed deadlines. The pedal requires an ESP32-S3 with 8 MB of PSRAM and drives a class-compliant USB Audio Class 2 interface as a USB host at 48 kHz, tested with the XTONE Pro, IK Multimedia iRig HD X, and iRig HD 2 via a dedicated UAC1 profile. A standalone guitar amp and effects pedal built on the Waveshare ESP32-S3-Touch-AMOLED-2.06 . It runs full-size Neural Amp Modeler https://www.neuralampmodeler.com/ A2 captures in real time on the ESP32-S3, drives a class-compliant USB audio interface as a USB host, and has a touchscreen UI written in TSX that is compiled to native C++ — there is no JavaScript engine on the device. The screen is one board's worth of it rather than the pedal itself: the same firmware builds for a bare ESP32-S3 module with no panel at all, where the amp, the effects and the presets are the same and the BOOT button is the footswitch. Play it in your browser → https://coyopedal.playtaurus.com/ The same firmware compiled to WebAssembly: the same UI, the same DSP, the same neural amp model, playing your guitar through an audio interface. No board required to try it, and nothing to install. - Full-size NAM A2 models at 48 kHz. The 23-layer, eight-channel WaveNet runs in block floating point with hand-written Xtensa kernels, split across both cores and processed in 64-frame blocks. - Load your own captures. Copy original .nam files to a microSD card, or point the browser build at a folder. The pedal parses, validates and prepares them on the device; there is no desktop converter. - An effects chain around the amp: gate, compressor, chorus and drive before it; digital delay and stereo spring reverb after it. - Presets for amp, controls and effects, stored on the pedal, with an on-screen keyboard for naming them. - A tuner on the same screen, with the output muted while tuning. - Maintenance mode with authenticated Wi-Fi OTA updates, remote diagnostics and BLE discovery. The radios are completely off while playing. | Board | Alias | Flash | What it has | How you control it | |---|---|---|---|---| | Waveshare ESP32-S3-Touch-AMOLED-2.06 | amoled | 32 MB | ESP32-S3R8, 8 MB PSRAM, 410 × 502 AMOLED, touch, AXP2101 PMIC, microSD slot | Touchscreen; BOOT: tap to bypass, hold 1.5 s for maintenance | | ESP32-S3-DevKitC-1 N16R8, and bare S3R8 modules | s3-devkit | 16 MB | ESP32-S3R8, 8 MB PSRAM, no panel, no PMIC, no SD slot | BOOT: tap to engage or bypass, hold 1.5 s for maintenance mode | The AMOLED board is the reference. It is what the factory presets, the browser build and the screenshots are made against, and the panel-specific parts of the firmware exist for it. A board with no screen runs the same amp through the same DSP at the same 48 kHz — measured on the devkit at 91% and 94% of the 1,333 µs block budget across the two cores, with no missed deadlines — and is configured over the maintenance API instead of by hand. What a board has to bring either way: an ESP32-S3 with 8 MB of PSRAM , because that is where the A2 model lives, and a USB port the chip can drive as a host. A bare module has no PMIC and no battery path, so unlike the AMOLED it does not feed the host port itself; the interface needs power from your own supply. | Part | Notes | |---|---| | Audio | A USB Audio Class 2 interface on the board's USB port, which runs as a USB host at 48 kHz | | Storage | Optional microSD card, on a board that has a slot, for your own captures | | Tested with | XTONE Pro and IK Multimedia iRig HD X; iRig HD 2 through a dedicated UAC1 profile | The interface is discovered from its USB descriptors, so any interface that exposes a 48 kHz UAC2 input and output should work. See USB audio https://github.com/dashersw/coyopedal/blob/main/docs/USB AUDIO.md for the formats and limits. The home screen shows the chain in signal order. Tap a block to turn it on or off, or hold it to edit it: drag a slider to change a value, and use ‹ › to page through the controls. Hold the Amp block to open the capture browser, which shows the factory captures, the imported ones and the SD card's own folders. The switch at the top right bypasses the whole pedal, and Tuner opens the tuner. Tap the preset name to switch, save, rename, delete or create presets. A new preset starts from the current sound. On every board, BOOT works as a footswitch: a short press engages or bypasses the pedal, and holding it switches between audio and maintenance mode. The switch starts the moment the hold reaches 1.5 seconds, so the screen tells you when you can let go. Short presses do nothing in maintenance mode. On a board with no screen, presets, captures and the rest of the controls are reached from maintenance mode with tools/esp32/amoled remote.py . The pedal boots engaged with the remembered preset, or the first preset, Silver Lining clean , when no selection has been saved. Supported models are 48 kHz, eight-channel NAM A2 "A2-Full" WaveNets , including a matching member of a SlimmableContainer . Other architectures, sample rates and layer shapes are rejected with an error. Prepared .namb files are accepted as well. Format a card as FAT and put .nam or .namb files anywhere under a nam folder at its root, in whatever folders you like up to six levels deep ; the browser shows that tree as it is, and a capture is named after its file. File names must fit in 127 bytes and files in 2 MiB. Insert the card before powering on, then pick the capture from the Amp browser. The first time a capture is selected, audio pauses while the pedal prepares it. This can take tens of seconds. When the card is writable, the pedal stores a verified .s3cache file next to the original, so later loads are fast. The original file is never modified. The full VoLum library is published in the VoLum repository https://github.com/guitarlum/VoLum/tree/main/rigs , and this copies it to a mounted card as /nam/VoLum/