Staff

21 Mar 2026

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

  • 4cda123 schmeatic drafted, layout started (2026-03-21)
  • fd719bb added power switch and set up kicad9 on windows (2026-03-11)
  • e6f1725 seeting up folder for staff_v3 (2026-03-11)
  • 3570373 working first draft of flex proto firmware lgithing up coresponding LEDS on capa (2024-11-22)
  • 4db1334 working CAP1188 sensor with FPC ribbon cable (2024-05-08)

Languages

  • C++: 100%