Staff
Staff v3 — Capacitive Touch Stave
A touch-capacitive musical stave (staff) instrument designed around an ESP32-S3. Capacitive touch inputs for note entry, with LED, OLED, and audio feedback.
System Overview
MCU
- ESP32-S3 (prototyping on DFRobot FireBeetle 2)
Touch Input
- 17x stave strips — 3x CAP1188 (I2C: 0x28, 0x29, 0x2A), connected via FPC ribbon from flex PCB
- 12x note buttons — additional CAP1188 ICs (TBD addressing)
- 4x arrow buttons — 2 either side of the OLED screen, additional CAP1188 or shared IC
Display
- OLED screen (central, flanked by arrow buttons)
Audio Output
- PCM5102 DAC (I2S)
- MAX98357 3W amplifier driving onboard speakers
- 3.5mm headphone/line out (TBD)
Audio Input
- Onboard MEMS microphone for audio capture
MIDI
- MIDI in via 3.5mm TRS jack
- MIDI out via 3.5mm TRS jack
Storage
- SD card
Power
- Power switch (added in latest revision)
- INA219 current sensor for power monitoring
LEDs
- 34x WS2812 addressable LEDs — mirrored pairs mapped to each stave strip
PCBs
| Board | Description | Layers | Status |
|---|---|---|---|
| CTRL_Staff03 | Main controller — ESP32-S3, audio, MIDI, SD, power | 4 | Gerbers exported (v03) |
| FLEX_Staff03 | Flex PCB — capacitive touch pads for stave strips | — | Gerbers exported |
| HMI_Staff03 | HMI — OLED, note buttons, arrow buttons | — | Gerbers exported |
Mechanical
Work in progress — finalising physical layout before next PCB revision:
- Speaker cutouts
- Capacitive touch pad geometry and spacing
- OLED screen mounting
- Overall enclosure / staff form factor
- FPC ribbon routing and connector placement
- Button pad layout (note buttons + arrow buttons)
Firmware
PlatformIO / Arduino framework. Current state: touch input + LED feedback prototype.
Working
- 3x CAP1188 initialisation and polling (17 inputs)
- INA219 power monitoring
- WS2812 LED control — touch-reactive rainbow hue
- Pin remap workaround for first 3 cap inputs (CTRL PCB routing error)
To Do
- Note button and arrow button input
- OLED display driver
- I2S audio output (PCM5102)
- Speaker amplifier (MAX98357)
- MIDI in/out
- SD card read/write
- Microphone input
- Mapping touch inputs to musical notes / MIDI events
Project Structure
Staff/
├── 3D/ # Board outlines and mechanical files
├── electronics/ # KiCad 9 schematics, PCBs, and gerbers
│ ├── CTRL_Staff03.* # Main controller board
│ ├── FLEX_Staff03.* # Flex touch PCB
│ ├── HMI_Staff03.* # HMI / display board
│ └── GERBERS/ # Fabrication outputs
└── firmware/ # PlatformIO project (ESP32-S3)
├── src/main.cpp
└── platformio.ini
Recent Activity
4cda123schmeatic drafted, layout started (2026-03-21)fd719bbadded power switch and set up kicad9 on windows (2026-03-11)e6f1725seeting up folder for staff_v3 (2026-03-11)3570373working first draft of flex proto firmware lgithing up coresponding LEDS on capa (2024-11-22)4db1334working CAP1188 sensor with FPC ribbon cable (2024-05-08)
Languages
- C++: 100%