Skip to the content
PCBKitNew board
2 layers96 × 66 mmKeypad synth revA, the printed circuit board in 3D

Keypad synth revA

mhellar/speakhard2

A handheld speech beat machine on an ESP32-S3. Four instruments (SAM voice, Talkie LPC voice, bytebeat, a 12-piece drum kit) on a 16-step sequencer, seven voice FX plus stutter/reverse/tape-stop/scratch, and a live HUD…

Size
96 × 66 mm
Copper layers
2
Thickness
1.6 mm
Parts
9
Nets
20
Pads
44
Tracks, vias
63, 0
Pours
1
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
3 Oct 2026
Updated
3 Oct 2026

Overview

Keypad synth revA is an open-source printed circuit board by mhellar, from the mhellar/speakhard repository on GitHub, published under the GPL-3.0 licence. It is a 2-layer board of 96 × 66 mm with 9 parts on 20 nets, routed with 63 tracks and 0 vias.

It belongs with the keyboards and input and audio and music boards and the ESP32 boards of this library.

README

README.md

SPEAK//HARD

SPEAK//HARD board

A handheld speech beat machine on an ESP32-S3. Four instruments (SAM voice, Talkie LPC voice, bytebeat, a 12-piece drum kit) on a 16-step sequencer, seven voice FX plus stutter/reverse/tape-stop/scratch, and a live HUD on a 128x128 OLED.

Co-created by Mark Hellar and Claude (Anthropic AI): hardware, design and sound direction by Mark; firmware and PCB layout co-written with Claude. PCB milled and soldered by Mark Hellar.

Hardware

PartNotes
ESP32-S3 SuperMini4 MB flash, 2 MB PSRAM (PSRAM is required)
1.5" SH1107 128x128 I2C OLEDheader order VCC GND SCL SDA
MAX98357A I2S amp breakout + small speakerVIN from 5V
4x4 tact keypad module (QYF-JP01)passive matrix, mounts on edge pads off the bottom edge
Pot module (optional)edge pads on the right edge; not used by this firmware

Pins

FunctionGPIO
OLED SDA / SCL9 / 8
Keypad rows R1-R42, 3, 4, 5
Keypad columns C1-C46, 7, 13, 12
Amp LRC / BCLK / DIN1 / 44 / 43
Pot wiper / pot high leg (driven HIGH)10 / 11

PCB

Single-sided, all copper on B.Cu, designed for CNC isolation milling on a 100 x 70 mm copper-clad blank. Modules plug into female headers; the keypad and pot modules lie on SMD edge pads with their right-angle pins.

  • hardware/ KiCad 10 project (schematic, PCB, symbol library, ks_cnc.pretty footprints)
  • hardware/cnc/ Gerbers (B.Cu, Edge.Cuts), PTH/NPTH drills, a 1:1 fit-test PDF, and ready-made GRBL G-code: 1_isolation_0.1vbit.nc (0.1 mm 20 deg V-bit, Z -0.05) -> 2_holes_1.0drill.nc -> 3_mounting_2.0drill.nc -> 4_outline_score_0.1vbit.nc. load_and_mirror.tcl regenerates the G-code in FlatCAM (mirrored, since the copper is on the bottom); fix_drill_spinup.py patches drill files for GRBL laser mode. See CNC_CHEATSHEET.txt.

Print PRINT_1to1_fit_test.pdf and check your modules against it before milling: the OLED, keypad and pot outlines were measured from photos and typical specs.

Firmware

firmware/speakbeat_hard/ is the instrument. firmware/keypad_bringup/ is a quick test (keys play notes, OLED grid).

Build with the Arduino IDE or arduino-cli:

  • ESP32 Arduino core 3.x (tested on 3.3.5)
  • Board: ESP32S3 Dev Module, USB CDC On Boot: Enabled, PSRAM: enabled
  • Library: U8g2. esp-dsp ships with the ESP32 core.
text
arduino-cli compile --fqbn "esp32:esp32:esp32s3:CDCOnBoot=cdc,PSRAM=enabled" firmware/speakbeat_hard
arduino-cli upload  --fqbn "esp32:esp32:esp32s3:CDCOnBoot=cdc,PSRAM=enabled" -p <port> firmware/speakbeat_hard

If the board sits silent after an upload, press RST: on the SuperMini the auto-reset can leave it in the bootloader.

Audio runs at 22.05 kHz in a task on core 0 (it also scans the keypad); the display loop runs on core 1.

Controls

The left keypad column holds the modifiers; the other 12 keys are pads.

text
[MODE ] [ pad 0 ] [ pad 1 ] [ pad 2 ]
[FX   ] [ pad 3 ] [ pad 4 ] [ pad 5 ]
[SEQ  ] [ pad 6 ] [ pad 7 ] [ pad 8 ]
[SHIFT] [ pad 9 ] [ pad 10] [ pad 11]

Tap a modifier for its quick action. Hold it and the screen shows what the 12 pads do while it's held.

ModifierTapHold + pad 0..11
MODEnext modeSAM, TALK, BYTE, DRUM, VOL-, VOL+, BANK, voices ROBOT / SAM / ELF / E.T. / BRUTE
FXnext FXCLEAN, CRUSH, ECHO, GRAIN, SWARM, VOX, MEGA, then momentary STUTTER, REVERSE, TAPE, UNDER, and scratch style
SEQREC on/offREC, PLAY, GROOVE, AUTO, BPM-, BPM+, MUTATE, CHORDS, CLR VOX, CLR DRM, CLR BYT, CLR ALL
SHIFTPLAY/STOPper mode, see below
ModePadsSHIFT + pad
SAM12 words; tap = say, hold = scratchscratch the word
TALK12 LPC words, 4 banks (LIFTOFF, SKY, MATH, PHONETIC); tap = say, hold = scrub the framesWHISPER, MONO, FREEZE, STRETCH, PITCH-, PITCH+, PITCH 0, GLITCH, BACKWARD, FORMANT-, FORMANT+, RESET
BYTE12 bytebeat formulas; tap = latch, hold = momentaryRATE/2, RATE*2, A-, A+, B-, B+, SYNC, STOP, CRUSH, REVERSE, RANDOM, RESET
DRUMKICK SNARE CLAP HAT / OPEN 808 ANVIL PIPE / SLAM ZAP CRASH CHUG; tap = hit, hold = rollmute that drum

With REC on, everything you play is quantized into the 16 steps. It boots stopped with an empty pattern.

Sound engine

  • SAM words are pre-rendered into PSRAM, so they can be scratched, stuttered and granulated.
  • Talkie words are decoded to LPC frames at boot and resynthesized live through the 10-pole lattice filter, so pitch, formant, voicing and coefficients can be bent while it talks.
  • VOX is a 16-band vocoder (esp-dsp biquads) with SAM as the modulator and a driven polyBLEP chord carrier. Chord sets: DROP, DREAD, EPIC, MACHINE.
  • Drums are synthesized: driven sine kick with a click, metal snare, multi-burst clap, 808-style hats from six detuned square waves, FM clangs, and CHUG, a fuzz power chord that follows the chord progression.
  • Kick, 808 and SLAM duck the voices; a soft compressor and a 40 Hz highpass sit on the master.
  • tools/drumsim.py is a Python port of the drum engine that prints each hit's level; run it after changing the PERC[] table.

Credits

  • SAM (Software Automatic Mouth, Don't Ask Software, 1982). C port by Sebastian Macke; ESP8266SAM by Earle Philhower.
  • Talkie by Peter Knight; vocabularies converted by Armin Joachimsmeyer. LPC tables and lattice filter via ESP8266Audio's AudioGeneratorTalkie.
  • esp-dsp by Espressif.
  • U8g2 by olikraus.
  • Bytebeat formulas from the viznut (2011) bytebeat scene.

Details in THIRD_PARTY.md.

License

GPL v3. See LICENSE.

Parts

9
QtyValueFootprintReferences
4MountingHole_3.2mm_M3MountingHole:MountingHole_3.2mm_M3H1, H2, H3, H4
1ESP32-S3_SuperMiniks_cnc:ESP32-S3_SuperMini_CNCU1
1Keypad 4x4ks_cnc:EdgePads_Keypad4x4_CNCU4
1MAX98357Aks_cnc:MAX98357A_Module_CNCU2
1OLED 1.5in SH1107ks_cnc:OLED_1.5in_128x128_I2C_CNCU3
1Pot 10kks_cnc:EdgePads_Pot_CNCU5

Questions

How big is the Keypad synth revA PCB?

It measures 96 × 66 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Keypad synth revA use?

9 parts. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Keypad synth revA KiCad files?

From the mhellar/speakhard repository on GitHub, at the commit this page was made from: the board is hardware/keypad_synth_revA.kicad_pcb and its schematic hardware/keypad_synth_revA.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Keypad synth revA design in my own project?

Its repository publishes it under the GPL-3.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

Similar boards

  • 2 layers103 × 30.5 mmTS Back Endcap, the printed circuit board in 3D

    TS Back Endcap

    EEVengers/ThunderScope

    ThunderScope GitHub Repo

    9 parts1.3kMIT
  • 2 layers31.8 × 47.6 mmNGC 38 connector, the printed circuit board in 3D

    NGC 38 connector

    rusefi/rusefi

    rusefi - GPL internal combustion engine control unit

    9 parts1.2k
  • 2 layers24 × 27.3 mmExpansion Card Retrofit, the printed circuit board in 3D

    Expansion Card Retrofit

    FrameworkComputer/ExpansionCards

    Reference designs and documentation to create Expansion Cards for the Framework Laptop

    9 parts1.1kCC-BY-4.0
  • 2 layers15.6 × 17.3 mmSKR Mini TFT Thermistor Board, the printed circuit board in 3D

    SKR Mini TFT Thermistor Board

    VoronDesign/Voron-Hardware

    Cool Hardware designed by the Voron Design group

    9 parts1.1kGPL-3.0
  • 2 layers39.1 × 49.5 mmLearnoliver, the printed circuit board in 3D

    Learnoliver

    hackclub/OnBoard

    💡 Join 1,000 teenagers and make your first PCB with a $100 grant!

    9 parts915
  • 2 layers17.4 × 16.9 mmToolhead, the printed circuit board in 3D

    Toolhead

    tanaes/whopping_Voron_mods

    9 parts787GPL-3.0
  • 2 layers9.8 × 108 mmExpander, the printed circuit board in 3D

    Expander

    wntrblm/Castor_and_Pollux

    A Juno-inspired dual oscillator

    9 parts587
  • 2 layersKeyboard after, the printed circuit board in 3D

    Keyboard after

    adamws/kicad-kbplacer

    KiCad plugin for automatic keyboard's key placement and routing

    9 parts547GPL-3.0