Hardware
The firmware runs on any ESP32-S3 board with at least 4 MB of Octal PSRAM. The reference build targets the ESP32-S3-WROOM-1-N16R8 dev kit.
Bill of materials
| Component | Part | Notes |
|---|---|---|
| MCU | ESP32-S3-WROOM-1-N16R8 | 16 MB flash, 8 MB Octal PSRAM |
| DAC | PCM5102A | I²S stereo DAC (we feed L=R mono) |
| Mic | INMP441 | I²S MEMS mic, left channel |
| Display | 2.4″ TFT ILI9341 | 240×320, SPI |
| Buttons | 23× 6 mm tact | 16 in a 4×4 scan matrix + 7 PO-33 modifiers |
| Status LEDs | 2× 3 mm LED | REC + PLAY indicators |
| Power | USB-C 5 V | Or single-cell LiPo + TP4056 |
| Optional amp | MAX98357A | I²S class-D amp for built-in speaker |
Pin map
All pins below are configured in
main/config.h. Edit there if your
board differs.
Audio (PCM5102A + INMP441)
| DAC BCLK | GPIO9 |
| DAC LRCK | GPIO10 |
| DAC DIN | GPIO8 |
| Mic BCLK | GPIO15 |
| Mic LRCK | GPIO16 |
| Mic DOUT | GPIO17 |
2.4″ TFT (ILI9341 SPI)
| MOSI | GPIO6 |
| SCK | GPIO7 |
| CS | GPIO5 |
| DC | GPIO4 |
| RST | GPIO48 |
| BL (PWM) | GPIO47 |
Buttons — matrix + modifiers
23 buttons: 16 step buttons on a 4×4 scan matrix
(btn_id = BTN_STEP1 + row × 4 + col) plus 7 PO-33
modifier keys on their own GPIOs. Internal pull-ups everywhere.
| Matrix rows | GPIO35, 36, 37, 38 |
| Matrix cols | GPIO33, 34, 39, 40 |
| SOUND | GPIO11 |
| PATTERN | GPIO44 |
| BPM | GPIO13 |
| REC | GPIO41 |
| FX | GPIO12 |
| PLAY | GPIO42 |
| WRITE | GPIO43 |
Knobs (ADC)
Two 10 kΩ linear pots, read on ADC1 and debounced in software.
| Knob A | GPIO20 / ADC1_CH9 |
| Knob B | GPIO46 / ADC1_CH5 |
Sync + LEDs
| Sync OUT | GPIO18 |
| Sync IN | GPIO19 |
| LED REC | GPIO21 |
| LED PLAY | GPIO14 |
Power
The firmware draws ~10 µA in deep sleep, so a 1500 mAh LiPo will last ~6 months on standby. Active power depends on which voice engine is running; expect 60–120 mA at moderate polyphony.
The 5-minute idle timer drops the chip into deep sleep automatically. Any button press wakes it back up — via a GPIO interrupt on the matrix column pins or on any of the seven modifier GPIOs.