Skip to the content
2 layers165.1 × 101.6 mmWavetableController, the printed circuit board in 3D

Trey sent files reluctantly and in stages: Gerbers+BOM first, then .pro/.sch, then the .kicadpcb last. File mtimes are transfer times, not edit times.

Size
165.1 × 101.6 mm
Copper layers
2
Thickness
1.6 mm
Parts
79
Nets
85
Pads
339
Tracks, vias
816, 94
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
13 Aug 2026
Updated
8 Nov 2026

Overview

WavetableController is an open-source printed circuit board by meandthetrio, from the meandthetrio/PCB_Analysis-Isolated_Screen repository on GitHub. It is a 2-layer board of 165.1 × 101.6 mm with 79 parts on 85 nets, routed with 816 tracks and 94 vias.

It is built around the TPA6110A2DGN, H11L1 and USBLC6-2P6. Its parts include 29 resistors, 17 capacitors, 9 connectors, 7 diodes and 4 ICs.

Main components

3

README

README.md

PCB Analysis — WavetableController (Daisy Seed synth)

Read this first. This folder holds a completed design review of Trey's "WavetableController" board — an Electrosmith Daisy Seed–based wavetable synth controller, 2-layer, 165×102 mm, designed in KiCad 9. The board has been fabbed twice at JLCPCB and the physical boards mostly work. The analysis (all passes complete, 2026-08-13) found several real defects and produced a rev-2 plan.

If you are Claude opening this fresh: the authoritative output is analysis/FINAL_REPORT.md (tiered red flags + open questions for Trey), backed by the full findings ledger F-001…F-035 in analysis/FINDINGS.md. Do not re-derive anything before checking those. Methodology and which-file-is-truth rules are in analysis/SOURCE_OF_TRUTH.md.

Folder contents

PathWhat it is
WavetableController.kicad_pro / .kicad_sch / .kicad_pcbKiCad 9 design files, sent by Trey piecemeal (see provenance below)
Manifold_Gerb_LedFix/The Gerbers + drill files actually sent to JLCPCB ("LedFix" round, 2nd proto). Fab truth for copper.
ManifoldRe_BOM_NEW - Excel Format.xlsJLCPCB-format BOM
analysis/The full review: FINAL_REPORT, findings ledger, SOURCE_OF_TRUTH, PASS1–6 reports, REV2 OLED plan, routing CSVs extracted from Gerbers, board SVG, parser script. Has its own README index.
screen mounting solution.mdMechanical mounting guide for the rev-2 Crystalfontz CFAL12864G-024W COG OLED (tape+gasket sandwich, plus 3D-printed bezel alternative)

Critical provenance warning

Trey sent files reluctantly and in stages: Gerbers+BOM first, then .pro/.sch, then the .kicad_pcb last. File mtimes are transfer times, not edit times. The .kicad_pcb in this folder matches the LedFix Gerbers ~97% but contains NO GND pour (only 5 keepout zones), while the fabbed B.Cu Gerber has a 164×100 mm filled pour covering 44/63 GND pads. It is a stale/wrong version — never regenerate Gerbers from this copy. Standing ask: get Trey's real working .kicad_pcb (the one that shows a filled B.Cu pour when opened). Where sch and pcb disagree (e.g. LED2 wiring), the pcb matches the fabbed boards, so the schematic is the outlier.

Headline findings (details + evidence in analysis/)

  • Encoder push-buttons dead — ENCL_CLICK / ENCR_CLICK have zero copper in the Gerbers (floating inputs; ENCR lands on a 3.3V-only Daisy pin). Fab-confirmed.
  • RGB LEDs triple-broken — LED1/LED2 (CLS6B-FKW) are unplaced (missing from BOM, though the paste stencil expects them), reverse-biased via 300Ω to +9V_FILT (never light either polarity), and three LED pins sit on Daisy's 3.3V-only pins 24/25/30.
  • I2C has zero pull-ups in-design — the ~203 mm bus relies entirely on the OLED module's onboard pull-ups (open question F-027 for Trey).
  • Duplicate refdes R21 — a layout-only 300Ω footprint at (170.1, 84.8) bridges /OLED_HOT–/+3V3_D in parallel with FB4 (Trey's noise-debug hack, on physical boards, not in schematic). Pick-and-place would put 300Ω where the 10Ω OLED damper belongs; breaks BOM/CPL matching.
  • 0.1 mm traces board-wide — exactly AT JLCPCB's 2-layer 1oz minimum (not below it), zero margin; carries the +3V3_D rail, I2C, SD, MIDI, USB. Recommend 0.2–0.25 mm. DRC min_track_width is 0.0 in the .kicad_pro, so KiCad won't flag them.
  • BOM refdes mismatch — BOM's S1/S2 don't exist in the schematic (real refs are TAC_SWITCH_1/2, TAC_SHIFT_L1/R1 — note: underscore refs escape [A-Z]+[0-9]+ regexes).
  • 3 marginal fab violations (MK1 annular ring, P2 NPTH clearance, SW1 edge copper — the last is a deliberate notch, accepted). Power design: USB-C is data-only by design; 9V barrel → Schottky bridge → +9V_FILT (~8.3V).

Open questions blocked on Trey: F-014 (LED2 sch-vs-pcb, which is intended), F-027 (OLED module pull-up value), and the real .kicad_pcb with the GND pour.

Rev-2 screen work (planning only, no design files changed)

analysis/REV2_OLED_PLAN.md: replace the two HiLetgo SSD1309 modules (boost-coil whine) with bare COG panels on 0.5 mm ZIF, independent I2C addresses 0x3C/0x3D. Two candidate panels:

  • Mono: Crystalfontz CFAL12864G-024W (2.4", SSD1309) — needs 12.5–13.5V VCC, so a 15V adapter + ~13V LDO. Mounting solved in screen mounting solution.md.
  • Greyscale (user's preference): no 2.42" greyscale panel exists anywhere. Best match is Raystar REX012864U / Winstar WEO012864U — 2.7" SSD1357, 16-level grey, VCC 8–10.5V (12V adapter + 10V LDO). Unresolved geometry flag: two 73 mm glasses = 146 mm side-by-side and conflict with the x≈165–200 audio-corridor keep-out. Fallback: stay mono, or 1.54" SSD1327.

Board changes either way: add 2.2k I2C pull-ups, remove J2/FB4/C14/C17/both R21s, use Daisy spare pads 22 & 28 for RES# and VCC_EN sequencing.

Tooling notes

  • KiCad 9.0.9 (Linux / Claude Code on the web): kicad-cli and the pcbnew Python module are on PATH. .claude/hooks/session-start.sh (a SessionStart hook) runs tools/kicad_env_setup.sh automatically in web sessions; run it by hand with sudo tools/kicad_env_setup.sh elsewhere. It installs the stock symbol/footprint libs and seed the user library tables (otherwise ERC/DRC add ~190 "library not found" warnings). tools/kicad_check.sh runs ERC, DRC, netlist, Gerber, SVG and PDF exports into kicad_out/ (git-ignored) as a smoke test.
  • Freerouting 2.4.1 autorouter is installed by the same setup script (needs Java 25, installed alongside the system Java 21; freerouting wrapper on PATH runs it headless with analytics off). tools/autoroute.py IN.kicad_pcb OUT.kicad_pcb [--passes N] does DSN export → route → SES import. It temporarily renames the duplicate R21, because the Specctra exporter refuses boards with duplicate refdes (an independent confirmation of that finding). On the stale checked-in board, 2 passes took 53 unrouted connections to 5. Remaining lib warnings name Trey's private libs (Retroactive_Custom_Parts, Jack_3.5mm_CUI_RetroactiveCustom, SOP-6_...(RetroactiveCustom)), which only exist on his machine; footprints are embedded in the .kicad_pcb, so they are harmless. Note pcbnew.LoadBoard(...).Zones() returns 0 here because the 6 keepout zones live inside footprints, not at board level.
  • On Trey's Mac, KiCad 10.0.5 lives at /Applications/KiCad.app (kicad-cli at Contents/MacOS/kicad-cli; brew cask fails without sudo).
  • analysis/gerber_analyze.py is the Gerber parser/net-matcher that produced the routing CSVs. Other scratch scripts (pcb_parse.py, pcb_audit.py, DRC/ERC reports) lived in a session scratchpad and may be gone — regenerate from gerber_analyze.py patterns if needed.
  • Net names in the routing CSVs are geometrically inferred (anchored at Daisy pins, 6/6 validated on LED nets), not authoritative; island_* = unidentified copper.

Parts

79
QtyValueFootprintReferences
7100NFCapacitor_SMD:C_0603_1608MetricC1, C4, C5, C8, C11, C16, C17
6300RResistor_SMD:R_0603_1608MetricR21, R24, R25, R26, R27, R28
547KResistor_SMD:R_0603_1608MetricR7, R8, R9, R10, R11
5D_SchottkyDiode_SMD:D_SOD-323D1, D2, D3, D4, D5
4FerriteBeadDiode_SMD:D_0603_1608MetricFB1, FB2, FB3, FB4
3470NFCapacitor_SMD:C_0603_1608MetricC2, C3, C10
20RResistor_SMD:R_0603_1608MetricR2, R3
2100UFCapacitor_SMD:CP_Elec_6.3x7.7C6, C7
210RResistor_SMD:R_0603_1608MetricR1, R21
210kResistor_SMD:R_0603_1608MetricR22, R23
22.2UFCapacitor_SMD:C_0603_1608MetricC9, C13
222KResistor_SMD:R_0603_1608MetricR12, R13
233KResistor_SMD:R_0603_1608MetricR14, R15
25K1Resistor_SMD:R_0603_1608MetricR16, R17
2CLS6B-FKWLED_SMD:LED_RGB_5050-6LED1, LED2
2RotaryEncoder_SwitchRetroactive_Custom_Parts:RotaryEncoder_Alps_Vertical_H20mmENCL1, ENCR1
2SW_MEC_5ERetroactive_Custom_Parts:Retroactive_THT_TACTSW_6mm_H9.5mmTAC_SWITCH_1, TAC_SWITCH_2
2SW_PushRetroactive_Custom_Parts:Retroactive_90DegSW_TactileTAC_SHIFT_L1, TAC_SHIFT_R1
1100KResistor_SMD:R_0603_1608MetricR18
110UFCapacitor_SMD:CP_Elec_6.3x7.7C15
1150KResistor_SMD:R_0603_1608MetricR19
1220RResistor_SMD:R_0603_1608MetricR5
1270RResistor_SMD:R_0603_1608MetricR6
12K2Resistor_SMD:R_0603_1608MetricR20
133RResistor_SMD:R_0603_1608MetricR4
14.7UFCapacitor_SMD:C_0603_1608MetricC12
1AUDIO INPUTConnector_Audio:Jack_3.5mm_CUI_RetroactiveCustomJ4
1AUDIO OUTPUTConnector_Audio:Jack_3.5mm_CUI_RetroactiveCustomJ5
1Barrel_JackRetroactive_Custom_Parts:Retroactive_SMDBarrelJack_CLIFFJ1
1CP_Radial_D10.0mm_P7.50mmCapacitor_THT:CP_Radial_D10.0mm_P7.50mmC14
1Electrosmith_Daisy_Seed_Rev4Retroactive_Custom_Parts:Electrosmith_Daisy_Seed_CuzA1
1H11L1Package_SO:SOP-6_3.8x4.1mm_P2.54mm(RetroactiveCustom)U1
1MAX9814Package_DFN_QFN:DFN-14-1EP_3x3mm_P0.4mm_EP1.78x2.35mmU4
1MIDI INPUTConnector_Audio:Jack_3.5mm_CUI_RetroactiveCustomJ6
1MIDI OUTPUTConnector_Audio:Jack_3.5mm_CUI_RetroactiveCustomJ3
1Micro_SD_Card_Det2Connector_Card:microSD_HC_Hirose_DM3AT-SF-PEJM5P1
1Microphone_CondenserSensor_Audio:POM-2244P-C3310-2-RMK1
1PHONESConnector_Audio:Jack_3.5mm_CUI_RetroactiveCustomJ7
1Power ON/OFFRetroactive_Custom_Parts:DigiKey_1101A4VQEA_SPDT_Vertical_SlideSwitchSW1
1SSD1306 OLEDRetroactive_Custom_Parts:Retroactive_2.42_OLED_I2CJ2
1TPA6110A2DGNPackage_SO:HVSSOP-8-1EP_3x3mm_P0.65mm_EP1.57x1.89mmU3
1USBLC6-2P6Package_TO_SOT_SMD:SOT-666U2
1USB_C31-S-RA-CS2-SMT-BK-T/RConnector_USB:USB_C_Receptacle_GCT_USB4105-xx-A_16P_TopMnt_HorizontalP2

Similar boards

  • 2 layers134 × 88 mmTulipcc, the printed circuit board in 3D

    Tulipcc

    shorepine/tulipcc

    The Tulip Creative Computer and AMYboard - portable Python synthesizers

    103 parts978
  • 4 layers327.6 × 186.9 mmPower Supplies, the printed circuit board in 3D

    Power Supplies

    joshieyu/DigitalAudioMixer

    261 parts1
  • 4 layers83 × 106 mmAsynthosc, the printed circuit board in 3D

    Asynthosc

    everedero/asynth2osc

    Modular analog synth to OpenOSC bridge

    268 parts4GPL-3.0
  • 4 layers60 × 94 mmDaisySeedPedal125b, the printed circuit board in 3D

    DaisySeedPedal125b

    bkshepherd/DaisySeedProjects

    A collection of hardware and software projects based around the Electro-Smith Daisy Seed

    80 parts559MIT
  • 2 layers245.2 × 100 mmV5 main, the printed circuit board in 3D

    V5 main

    zynthian/zynthian-hw

    Zynthian hardware stuff: PCBs, schemes, parts specifications, pin assignment, ...

    160 parts156

Questions

How big is the WavetableController PCB?

It measures 165.1 × 101.6 mm and has 2 copper layers, 1.6 mm thick.

What parts does the WavetableController use?

79 parts, built around the TPA6110A2DGN, H11L1 and USBLC6-2P6. 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 WavetableController KiCad files?

From the meandthetrio/PCB_Analysis-Isolated_Screen repository on GitHub, at the commit this page was made from: the board is WavetableController.kicad_pcb and its schematic WavetableController.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the WavetableController design in my own project?

Its repository states no licence, so its author keeps all rights: ask meandthetrio before reusing the design.