« Back to DIY

Opto Duet

Two 555 theremins that play each other, on one stripboard · By Onion Madder · Mess O' Pedals

Two copies of my 555 theremin on one board, coupled by nothing but light. One is the engine: its timing cap is cranked to 10µF so instead of screaming it ticks, and a bare LED flashes with every tick. The other is the voice: a stock audio theremin whose timing chain holds two photocells in parallel - one sealed face-to-face with the engine's LED, one facing the room. Every flash yanks the voice's pitch and lets go. The box chirps, the room light sets the key, your hands bend both, and there is not a single wire between the two oscillators. About 45 minutes at the bench, once you have the parts in front of you.

The Opto Duet layout drawn as a stripboard diagram, titled Opto Duet, 26 x 9 stripboard. Nine orange copper strips lettered a to i run left to right, with twenty-six columns numbered above them. Two pale squares marked IC1 NE555 and IC2 NE555 sit one per half of the board. Gray X marks stand in vertical lines where the strips are cut, splitting the two halves apart and separating each chip's pin rows. Dark blue link wires stand vertically, one running diagonally under each chip. R1 and R3 1k and R2 and R4 100R are outlined rectangles, C2 and C5 10n and C4 100n small outlined boxes, and C1, C3, C6 and C7 pink circles. Holes carrying wires off the board are labeled with fanned leader lines: plus 12V, GND, LDR_T1, LDR_T2, SPK_B, LED_K, LED_A and SPK_A down the left, and LDR_V1, LDR_P1, LDR_V2, LDR_P2, LED2_K and LED2_A on the right. A parts list runs underneath, and a credit line reads Made with Copper Bottom.
The board as the layout file draws it. The cuts down the middle of each chip and the pair down column 13 are what hold the two halves apart.
The finished stripboard held over the open enclosure, solder side toward the camera: rows of holes joined by bright blobs of solder along nine copper strips, with the column numbers printed down the green edge of the board. Below it the open purple enclosure already has its toggle switch and quarter-inch jack mounted, with orange, black, blue, yellow and white wires looping out of them.
The same board, solder side up, over the box it is about to go into. The power switch and the output jack are already mounted. There is no DC jack on this one - it runs on the 9V battery that goes in on top of the board.

It is built and it works. The first attempt died at 90% when a copper strip lifted off a cheap board mid-solder. The second went together on the same cheap board with the iron turned down, and it came up on the first power-up: the mouth LED lights, the box chirps, and it sings from a 12V DC wall wart with ceramic discs in the three small cap positions. The layout above is that board.

The finished board on a dark desk mat, photographed from the solder side: a long narrow strip of copper-clad board, its rows of holes joined by bright blobs of solder, with flying leads in orange, black, blue, yellow and white leaving the top edge. A red mini toggle switch sits at the upper left on yellow and orange wires, and a blue LED burns bright next to it. A teal heat-shrink sleeve swallows one pair of leads, and two small cream photocells stand on their own black wires. A large black round speaker lies to the right of the board.
Built and running. The solder side is up here; the chips are underneath. The red toggle is the power switch, off-board in the positive supply leg, so it is not in the layout file.
Hear it: straight into a practice amp, no pedals in between. One hand over the tempo eye setting how fast it ticks, one over the pitch eye setting where the voice sits. 18 seconds, sound on.

What you'll need

  • NE555 timer, 8-pin DIP - spot it: NE555 printed on top, notch marks pin 1
  • stripboard, 9 strips × 26 holes or larger - a cheap board is fine, but turn your iron down. The first build of this died at 90% when a copper strip lifted off its backing mid-solder; the second went together on the same kind of board at a lower temperature, first try. Short dwell times, and do not lean on a strip
  • photocell (LDR) - the wiggly-line disc. Same type as the theremin guides; a pair that reads a few k lit and hundreds of k dark
  • LED, any color - both run bare, no resistor, and that is deliberate; see the trick below. The first is the engine's, sealed against a photocell to make the vactrol. The second is the indicator: same behind-the-cap position on the voice's half, but nothing is sealed to it, so it just flashes where you can see it
  • 1K resistor (brown-black-red) - one per timing chain, the same guard as every pot in the series: at full light there is still something for the cap to charge through
  • 100R resistor (brown-black-brown) - the output resistors; both boards meet the speaker through them
  • 10µF electrolytic - the engine's timing cap, the part that turns a scream into a tick. Stripe marks the minus leg, stripe to ground
  • 100n ceramic (printed 104) - the voice's timing cap
  • 10n ceramic (printed 103) - control-pin decoupling, one each
  • 100µF electrolytic - two output couplers, one across the rails
  • small speaker and a supply: the pads are labeled +12V, which is what the board in the photo runs from - a 12V DC wall wart, center-negative like every other pedal here, and what I would build it on. A 555 chip will run from 4.5V, but this box wants about 6V and up: below that the LEDs stop flashing, because they light off the swing through the coupling caps and a blue one needs roughly 3V of it before it lights at all. A fresh 9V battery runs it; a tired one takes the LEDs out first and looks exactly like a fault. The pitch and tick rate shift with the supply too
  • Heat-shrink big enough to swallow the LED and one photocell face to face - that is the whole vactrol
  • Optional but worth it: a toggle switch for the positive supply leg, so the box has an off. It lives off the board, in the wire

The layout file is the guide

Like the 555 theremin layout, the build document for this one is the file itself: ↓ Download Opto_Duet.json - import it into Copper Bottom and the editor gives you the board picture, the placement walkthrough, the electrical checks and a printable build sheet. The layout was generated from the bench capture and machine-verified against it: every connection below was asserted against the strip-and-cut geometry before the file was written. Coordinates are deliberately not retyped onto this page; the editor is the viewer, so there is no display convention to get wrong.

The trick: the LED lives behind the cap

This is the discovery the whole box turns on, found by moving one bare LED strip by strip until the loop came alive. Put the LED on the engine's output strip and it just glows steady - twice over. Bare, it clamps the output at its own ~2V forward drop; and even resistored, a DC-coupled LED reports a level, and a feedback loop fed on a level finds a comfortable equilibrium and parks there.

Move it to the far side of the 100µF output cap - the strip between the coupling cap and the output resistor - and both problems vanish at once. The cap limits what a bare LED can draw, and a cap only conducts while the voltage moves, so on that strip the LED reports change. A loop fed on change has no resting point: if it ever sits still the LED starves, the photocell drifts, and the sitting-still is over. It has to hunt forever, at the tempo of the photocell's slow memory. That is why every classic opto-feedback synth AC-couples its lamp driver - and why this one was rediscovered at a bench with a lifted eyebrow instead of a datasheet.

If the LEDs fade, dim, or come back after a rest and then die again, look at your supply before you look at the board. They flash off the swing through the coupling cap, that swing tracks the rail, and a blue LED needs about 3V of it before it lights at all - while the 555s keep oscillating happily down to 4.5V. So the LEDs go dark first and the box carries on making noise, which reads as a wiring fault and is not one. Mine did exactly this on a dying 9V battery: rest it, it works for a minute, then fades. Back on the 12V wall wart it is fine.

The netlist - what the layout was verified against

This is the netlist embedded in the file, verbatim. It was written from the finished board, so checking that board against it can only agree with itself - what it is good for is carrying the circuit somewhere else, and giving your meter something to walk:

The off-board wiring

Fourteen pads leave the board. Everything with a face goes where its job says:

PadGoes to
+12V / GNDThe supply, one for both oscillators. Mine is a 12V DC wall wart, center-negative, through an on/off toggle in the positive leg - the switch is off-board and not in the layout file. A 9V battery snap works too
SPK_A / SPK_BSpeaker hot / return. Both boards mix at SPK_A through their own 100Rs - no extra mixing resistors, see below
LED2_A / LED2_KThe indicator. Same wiring as the first LED but on the voice's half - across the strip between C6 and R4, cathode to the ground rail - so it flashes with the voice. Nothing is sealed against this one; it is there to be looked at
LED_A / LED_KThe bare LED - anode to LED_A, cathode to LED_K. It seals face to face with the vactrol cell inside heat-shrink
LDR_V1 / LDR_P1
LDR_V2 / LDR_P2
Four pads, two nodes. LDR_V1 and LDR_P1 are the same strip; so are LDR_V2 and LDR_P2. Two photocells bridge those two nodes, which is what puts them in parallel: the vactrol cell, sealed in heat-shrink with the LED, and the pitch eye, facing out of the box for room light and your hands. Take any upper pad and any lower pad for each cell - on my board the vactrol sits on LDR_V1 and the pitch eye on LDR_V2
LDR_T1 / LDR_T2The tempo eye, one cell across the engine's two timing strips. It faces out of the box too: room light and your hands set the tick rate

That pad doubling is the parallel wiring, and parallel is load-bearing: the lit cell wins, so each engine flash yanks the pitch up and releases it. In series they would politely average and the chirp would die. It also means the pad names are a convenience, not an assignment - nothing electrical changes if your vactrol lands on the pads labeled for the pitch eye.

Boxing it up

Mine lives in a 125B, horizontal: the two eyes and the indicator LED on the face, the power switch and a 1/4" output jack on the top edge. The two speaker pads feed that jack instead of a speaker - tip to SPK_A, sleeve to SPK_B - so the box plays through an amp.

Six holes, and none of them are fussy: 5 mm for each photocell and for the LED, 6.5 mm (1/4") for the toggle bushing, 9.5 mm (3/8") for the jack, and 8 mm if you want a barrel jack for the supply rather than passing the wall wart lead through a grommet. Wire that barrel jack center-negative. Keep every hole at least 12 mm in from an edge: the corner bosses and the lid lip live in there.

Check the plug before you power it, every single time. Pedal supplies are center-negative; most generic wall warts sold for everything else are center-positive, and they fit the same barrel jack perfectly. Backwards, the supply goes straight through both 555s and reverse-biases every electrolytic on the board, and there is nothing on here to stop it. I swapped to a center-positive plug without looking and killed a working board with it.

Die-cast aluminum is not a tin, and it does not drill like one:

  • Pilot every hole at 1/8" and step up. A 3/8" bit started cold on a casting walks.
  • Back the panel with scrap wood, clamp it, and drill through into the wood.
  • Moderate speed, a drop of cutting oil, and let the bit cut. Die-cast is gummy: clear the swarf often and do not lean on it, because it grabs as the bit breaks through.
  • A step drill is the easy way to the 3/8" jack hole and the 8 mm supply hole.
  • Deburr both sides. The jack nut needs a flat seat or it will not tighten.
  • Test-fit the jack and the switch before you drill the small holes - hardware varies more than drawings do.
  • The cells and the LED go in on flying leads, so nothing inside has to line up with them. That is the whole reason this box is easy to drill.
The board going into the enclosure with a strip of orange insulating tape stuck across its whole solder side and two blobs of white mounting putty pressed onto the tape. The purple box below already holds the jack and the switch, and a teal heat-shrink sleeve lies inside it.
Tape over the solder side, putty to hold it down. Bare copper against a metal box is a short waiting to happen.
Looking down into the open enclosure with everything inside: a yellow 9-volt battery lying across the top, a red toggle switch mounted through the left wall, the stripboard flat in the middle with its electrolytic capacitors standing up off it, the quarter-inch jack at the lower right, and orange, black, blue, yellow and white wires running between them. A teal heat-shrink sleeve sits along the right-hand wall.
Everything in. The teal heat-shrink on the right is the vactrol, the LED and its cell sealed face to face.
A red 9-volt alkaline battery on a black snap connector, with a blob of white putty stuck to its side, held above the open enclosure and about to be pressed down on top of the wired board.
A 9V fits on top with a blob of putty. Worth knowing: this is the supply that later sagged and took the LEDs out while the box kept playing.
The finished pedal held face up: a purple hammered-finish enclosure in landscape, with two photocells and a clear LED spaced in a row across the middle of the face, a silver toggle switch standing up from the top left edge and a quarter-inch jack at the top right.
Closed up. Tempo eye, indicator, pitch eye across the face; switch and output on the top edge, which is what the drill template draws.
Don't eyeball the holes. There is a 1:1 drilling template for the 125B - the box drawn unfolded, so you wrap the sheet around it and every hole lands by folding instead of by measuring. Face plus four walls, true-size circles with a punch dot in the middle, and the DC hole dashed because it is optional.
Print at 100% / “Actual size”, never “Fit to page” - check the bar measures exactly 4″ before you touch a drill. The sheet is landscape on purpose: a horizontal 125B unfolds wider than a portrait page can print.

What the Hive would have added, and why this box doesn't

The Hive's mix bus runs a 10K and a 1µF NP cap per voice. Copying that here failed twice at the bench, both times for the same reason: the Hive's bus feeds a jack into an amp and its voices are DC-coupled, and neither is true here. A bare speaker is a current-hungry ~8 Ω load - 10K mixers hand it under 1% of the signal and the box goes silent. And each 555 board already carries its own 100µF coupler and 100R, which do both jobs. So: outputs join the speaker rail directly through their built-in 100Rs, nothing else. If this box ever grows a jack to an amp, that is where 10K mixers belong.

How it works, in one breath

Both halves are the same astable 555 you already know: charge through the 1K and the photocells, threshold, dump, repeat. The engine's 10µF makes its repeat rate slow enough to hear as ticks and see as flashes; the voice's 100n keeps its rate up where pitch lives. The LED behind the engine's cap converts each tick into a pulse of light; the sealed cell converts the light back into a resistance dip on the voice's timing node; the dip is a chirp. Two oscillators, one conversation, zero wires between them.

Things to try

  • Retune the engine. The 10µF sets the tick rate - 4.7µF doubles the tempo, 22µF halves it. Same move as retuning a Hive voice.
  • Retune the voice. Its 100n is the stock theremin value; the breadboard guide's cap-swap logic applies unchanged.
  • If an LED ever dies young on the coupling node, ~100R inline should tame the edge pulses without killing the effect - untested, call it an experiment.
  • Aim the eyes. Both outside cells respond to angle as much as light - mounting them as a creature's eyes is not just decoration, it is the interface.
  • Add a jack. Line the bus out to an amp - and then bring the Hive's 10Ks back, because at that point they are correct again.

The 555 astable core is the same public circuit as my 555 Optical Theremin guides. The opto-coupled engine-and-voice arrangement - the LED behind the cap, the vactrol-plus-eye parallel pair, the chirp - is my own, found at the bench in August 2026. The layout, the file, and the words are mine. Build it, bend it, make it yours.