September 12, 2026

the synth didn’t fit on one breadboard

By Geoffrey Broomfield · 4 min read

A three-quarter view of the synth case design, rendered in SCAD.

Every component was supposed to fit on a single breadboard. It didn’t take long to find out it wasn’t going to: encoders, a display, buttons, and all the wiring between them were fighting over the same rows, and the board ran out before the parts did. So the display came off and the rest of the wiring went floating, which is plan B — the same plan, with the parts hanging in the air. That’s when the wiring stopped being a chore and became the actual project. Everything after that is wiring with extra steps.

A breadboard loaded with components during an attempt to fit all of them onto one board.
Unsuccessfully trying to test fit every component on a single breadboard.
Wiring lifted off a breadboard and left floating, with the display disconnected.
Realizing quickly that this was going to be a wiring effort, after deciding to remove the display and wire it floating.

The case came off a printer on my desk. It wasn’t a considered decision. The first faceplate fit the board and not the screen, because I hadn’t printed the standoffs that hold the screen in, so it got electrical tape, and the tape held. I’m not going to pretend that was the plan. rev1 didn’t have enough knobs either. I built a synthesizer and forgot that synthesizers have knobs. That’s why rev2 exists, and rev2 was a SCAD file for a while before it was an object.

A 3D printer part-way through printing a faceplate.
3D printer, making the first iteration of the faceplate.
A 3D-printed faceplate with electrical tape holding the screen where standoffs should be.
rev1 of the faceplate. I didn’t print standoffs to hold the screen in place, so I got creative with some electrical tape.
A screen showing the rev2 faceplate design in SCAD.
rev2 faceplate in SCAD, after realizing I needed a lot more knobs.

The encoders and buttons run through MCP expanders, so I spent a few nights soldering pins onto those. The board itself spent that time back on the breadboard with everything taken off it, which about sums up how the plan was going. None of this happened in a workshop. The soldering desk is the dining room, because that’s the budget, and I’ve made my peace with it.

Soldering pins onto an MCP expander board.
Soldering the pins on one of the MCPs.
A Teensy board on a breadboard with the other components removed.
The Teensy itself, on the breadboard, after giving up and floating the rest of the components.
A makeshift soldering setup on a dining table.
Makeshift soldering desk in my dining room. When budgets are low, get creative.

At 2:37 in the morning on August 9, the synth engine ran on hardware for the first time. The interface is rough and the photo is dark, and both are true. The LCD fit the rev2 faceplate with four knobs still missing. I colored the sliders in and added a pile of features, which is how I figured out that features need menus. Nobody warns you that features need somewhere to live.

Menus don’t cooperate. I found that out over several days, having already built the features that needed them. What follows is the rest of that night and most of the week after: rev2 of the interface, then rev2.5 with context labels along the bottom, then more of the same that afternoon with the menus still not cooperating. They’re all shot against the grey faceplate, because that was the only way to see how the interface would look.

The first run of the synth engine, with a rough interface on a small display.
1st run of the synth engine on the Teensy and display. UI looking kinda rough.
An LCD test-fitted into a 3D-printed faceplate.
Test fitting the LCD into the rev2 faceplate. It fits. Still missing 4 knobs.
The interface with colored sliders.
Colorizing the sliders. Added a bunch of features, quickly realized I need to build menus.
The rev2 interface on the display, fitted into a grey faceplate.
rev2 of the UI. Another faceplate test fit, to see how the UI looks against the grey faceplate.
The rev2.5 interface, with menus and context labels along the bottom.
rev2.5 of the UI. Added menus and context labels at the bottom.
The interface during a further round of menu work.
More UI work. Menus aren’t cooperating.

While I was fighting the menus, the case got drawn: a front view and a three-quarter view, both still in SCAD, both still way cheaper to change than a printed part. Drawing it is the part of this I’m actually good at.

A front view of the synth case design, rendered in SCAD.
Front view of the full case design in SCAD.
A three-quarter view of the synth case design, rendered in SCAD.
3/4 view of the case in SCAD.

Three clips survived. Between them they cover what a photo can’t. One is the printer running, making a replacement for a faceplate I broke, which is entirely on me. Another is a power-on test, mostly about the wake-up screen, which was crashing the UI. The last is fifty-two seconds of the menus finally responding to knobs and presses, after hours of fighting them. That’s the one I’d show somebody.

3D printer humming away, making another faceplate because I broke it.
Power on test, making sure the wake up screen stops crashing the UI.
Showcasing different menus after hours of fighting, and showing responsiveness to knobs and presses.

So: the components never fit on one breadboard, the faceplate was wrong twice, and the menus took almost a week. It works now. I’m aware all three of those were my fault.