Plugin Experiments
Working notes on running analog audio circuits as circuits and other plugins.
Circuit simulated plugins are expensive to run and may not run at all in the browser. Each solves a nonlinear circuit at every output sample.
DM808
Open in browserRoland TR-808, sixteen voice circuits
The Roland TR-808 is an analog drum machine whose sounds are not samples but sixteen small discrete circuits, one per voice, triggered from a common bus. All sixteen are here: bass drum, snare, three toms, three congas, rim shot, claves, maracas, hand clap, cow bell, cymbal and the two hi-hats, mixed on the machine's own eleven-channel bus, with its sequencer implemented from the operation manual.
Each voice is transcribed from the factory service manual as a netlist of its own and solved as drawn, roughly two thousand components in total across the set. Two of them are worth naming because they decide whether the result is right. Where the manual's own change list says a shipped unit differs from the schematic, the change list wins: read from the drawing alone the snare's two bridged-T resonators land three and a half semitones sharp, and the change list is what puts them at 174 and 336 Hz. And the tuning diodes in the toms are germanium because the parts list says so where the schematic does not; read as silicon, every one of those six voices comes out more than a semitone flat.
The cow bell, the cymbal and the two hi-hats share a bank of six free-running relaxation oscillators, which is why they have no LTspice reference below: an oscillator that never rests has no operating point for a reference solver to start from. They are checked against the manual's own published voicing table instead, and against recordings of a real machine.
Builds
Measured
The first page puts every voice next to a recording of the machine it was transcribed from, serial 103852, one voice at a time: the recording, our circuit, and a second machine to say how much of any disagreement is just spread between units. Twelve of the sixteen also carry an LTspice trace of the same netlist; the cow bell, the cymbal and the two hi-hats do not, because their oscillators free-run and LTspice finds no operating point to start from. You can play all of them, and the decay times, spectra and pot sweeps are under each one. The second page is the bass drum alone, the same netlist through two solvers on one shared stimulus.
Posted September 9, 2026 · updated September 10, 2026
Nothing happens, or no sound?
The browser build needs WebGPU and a cross-origin isolated context, and the audio runs on the browser's own audio thread. A recent desktop Chrome or Edge has all three. Desktop Safari and Firefox do not run it. See the notice at the top of the page: even where it loads, the circuit may not keep up with real time.
No sound at first: browsers hold audio until the page has been interacted with once.
Blank page: a hard reload (Shift and reload) clears a half-cached first visit. Hardware acceleration has to be on.
No MIDI: the browser builds take no MIDI input. The downloadable builds do.
SH101
Open in browserRoland SH-101, three circuits and two measured models
The Roland SH-101 is a monophonic subtractive synthesizer: one oscillator with a sub, a noise source, a four-pole lowpass filter, a VCA and one envelope, plus a step sequencer and an arpeggiator. Monophonic with last-note priority, as the instrument is. The sequencer and the arpeggiator are implemented from the owner's manual, including HOLD, key transpose and its two-mode load and play behaviour.
Three of its blocks run as circuits, chained per sample: the source mixer together with the filter ladder as one network, the VCA at transistor level, and the envelope. Two of the blocks are built around Roland custom chips whose die was never published: the filter's is reconstructed to fit what its datasheet does specify, the VCA's comes from a published reverse-engineering of the part, and in both cases everything outside the chip is transcribed from the service manual. That line is kept explicit in the notes, because a reconstruction is not a transcription and should not be read as one. The remaining two blocks are deliberately not circuits: the oscillator and the noise generator were each traced against their netlists and found to be well described by a much cheaper model over the range this instrument uses them, so they run as those measured models instead. Both exceptions are measurements, not guesses, and the circuit each replaces is kept as the reference it was measured against.
Builds
Posted September 2, 2026 · updated September 9, 2026
Browser version does nothing, or has no sound?
The browser build needs WebGPU and a cross-origin isolated context, and the audio runs on the browser's own audio thread. A recent desktop Chrome or Edge has all three. Desktop Safari and Firefox do not run it. See the notice at the top of the page: even where it loads, the circuit may not keep up with real time.
On iPhone and iPad: every browser there is Safari's engine underneath, and Chrome and Edge on it report no GPU to draw with, so the page tells you so rather than loading. Safari is the one to try.
No sound at first: browsers hold audio until the page has been interacted with once.
Blank page: a hard reload (Shift and reload) clears a half-cached first visit. Hardware acceleration has to be on.
No MIDI: the browser build takes no MIDI input. The downloadable builds do.
macOS won't open it? (unsigned build)
These builds are signed ad-hoc, not notarized by Apple, so Gatekeeper blocks them by default.
Standalone app: right-click SH101.app → Open → Open, once. After that it launches normally.
VST3 / AU: your DAW's plugin scanner won't prompt you, it just fails silently. Clear the quarantine flag yourself after unzipping, then move the plugins into place:
xattr -dr com.apple.quarantine SH101.vst3 SH101.component
mv SH101.vst3 ~/Library/Audio/Plug-Ins/VST3/
mv SH101.component ~/Library/Audio/Plug-Ins/Components/
Then rescan plugins in your DAW.
Windows blocks it? (unsigned build)
These builds aren't code-signed, so SmartScreen shows a "Windows protected your PC" dialog the first time you run them.
Standalone app: click More info, then Run anyway. 64-bit Windows 10 or later.
VST3: copy SH101.vst3 into:
C:\Program Files\Common Files\VST3\
Then rescan plugins in your DAW.
TB303
Open in browserRoland TB-303, filter and amplifier circuits
The Roland TB-303 is a monophonic bass line synthesizer whose character is almost entirely its filter: a four-pole diode ladder with a resonance path that distorts as it is driven, followed by a VCA under a very short envelope and an accent circuit that feeds back into the filter. All of that runs here as circuits, driven by a sixteen step sequencer with the slide and accent the instrument encodes per step.
Both halves of the relevant service manual sheet are transcribed and solved as drawn: 74 components for the filter, 18 of them transistors plus the ladder diodes, and 91 more for the amplifier, envelope, accent and mixer. Three errors in the published sheet were found by measuring the result rather than by reading it again, two of them in the drawing itself and one a diode with its anode on the wrong node; four more in the amplifier half only showed up on playing it. The oscillator is the one block treated differently, as a driven shaper rather than a free-running circuit, because the free-running form sits on a numerical knife edge.
Builds
Posted August 27, 2026 · updated September 9, 2026
Nothing happens, or no sound?
The browser build needs WebGPU and a cross-origin isolated context, and the audio runs on the browser's own audio thread. A recent desktop Chrome or Edge has all three. Desktop Safari and Firefox do not run it. See the notice at the top of the page: even where it loads, the circuit may not keep up with real time.
On iPhone and iPad: every browser there is Safari's engine underneath, and Chrome and Edge on it report no GPU to draw with, so the page tells you so rather than loading. Safari is the one to try.
No sound at first: browsers hold audio until the page has been interacted with once.
Blank page: a hard reload (Shift and reload) clears a half-cached first visit. Hardware acceleration has to be on.
No MIDI: the browser build takes no MIDI input. The downloadable builds do.
macOS won't open it? (unsigned build)
These builds are signed ad-hoc, not notarized by Apple, so Gatekeeper blocks them by default.
Standalone app: right-click TB303.app → Open → Open, once. After that it launches normally.
VST3 / AU: your DAW's plugin scanner won't prompt you, it just fails silently. Clear the quarantine flag yourself after unzipping, then move the plugins into place:
xattr -dr com.apple.quarantine TB303.vst3 TB303.component
mv TB303.vst3 ~/Library/Audio/Plug-Ins/VST3/
mv TB303.component ~/Library/Audio/Plug-Ins/Components/
Then rescan plugins in your DAW.
Windows blocks it? (unsigned build)
These builds aren't code-signed, so SmartScreen shows a "Windows protected your PC" dialog the first time you run them.
Standalone app: click More info, then Run anyway. 64-bit Windows 10 or later.
VST3: copy TB303.vst3 into:
C:\Program Files\Common Files\VST3\
Then rescan plugins in your DAW.
SSLCOMP
SSL-style bus compressor, full sidechain
The SSL-style bus compressor is a stereo VCA compressor whose behaviour comes from its sidechain: a rectifier feeding an RC network whose time constants are switched, not swept, so attack, release and ratio take the discrete positions the hardware's rotary switches give them rather than a continuum between them. Threshold and make-up are continuous. A sidechain highpass, a key input and a dry/wet mix are included.
129 components, including the whole sidechain rather than an envelope follower standing in for it, solved as one network at audio rate. The VCA cells contribute their own exponential control law directly, which is what makes the knee program-dependent instead of a fixed curve. This is the module with the cleanest reference: against a full LTspice run of the same netlist it agrees down to the numerical noise floor, which is the result to expect when a circuit has a well-defined operating point and nothing in it is free-running.
Builds
Posted August 20, 2026 · updated September 9, 2026
macOS won't open it? (unsigned build)
These builds are signed ad-hoc, not notarized by Apple, so Gatekeeper blocks them by default.
Standalone app: right-click SSLComp.app → Open → Open, once. After that it launches normally.
VST3 / AU: your DAW's plugin scanner won't prompt you, it just fails silently. Clear the quarantine flag yourself after unzipping, then move the plugins into place:
xattr -dr com.apple.quarantine SSLComp.vst3 SSLComp.component
mv SSLComp.vst3 ~/Library/Audio/Plug-Ins/VST3/
mv SSLComp.component ~/Library/Audio/Plug-Ins/Components/
Then rescan plugins in your DAW.
Windows blocks it? (unsigned build)
These builds aren't code-signed, so SmartScreen shows a "Windows protected your PC" dialog the first time you run them.
Standalone app: click More info, then Run anyway. 64-bit Windows 10 or later.
VST3: copy SSLComp.vst3 into:
C:\Program Files\Common Files\VST3\
Then rescan plugins in your DAW.
BD808
Open in browserRoland TR-808 bass drum, two model tiers
The TR-808's bass drum is a bridged-T oscillator kicked into a decaying ring by a trigger pulse, with a pulse of the trigger itself mixed in as the attack. Its three controls are the hardware's own pots for tone, decay and level, and the fourth is the trigger voltage on the common accent bus, which is what makes an accented hit a different sound rather than a louder one. MIDI triggered.
51 components solved as drawn. This module is the one that exists to make a measurement, so it ships in two builds from the same netlist and lets you switch between them: one with every semiconductor on a simplified model, one where the two transistors that were identified as carrying the audible difference get the full device model instead. The trace page below is the evidence for that choice, and the point of publishing it is that the cost of a device model is a per-circuit question with a measurable answer, not a general one.
Builds
Measured
The same netlist through two solvers on one shared stimulus: full LTspice against both of the plugin's builds, plotted as waveforms and spectra you can overlay and zoom. The Accurate build nulls against the reference at -38 dB on a plain hit where the Basic one reaches -16 dB.
Posted August 19, 2026 · updated September 9, 2026
Browser version does nothing, or has no sound?
The browser build needs WebGPU and a cross-origin isolated context, and the audio runs on the browser's own audio thread. A recent desktop Chrome or Edge has all three. Desktop Safari and Firefox do not run it. See the notice at the top of the page: even where it loads, the circuit may not keep up with real time.
No MIDI in the browser: the browser build takes no MIDI input. The downloadable builds do.
No sound at first: browsers hold audio until the page has been interacted with once.
Blank page: a hard reload (Shift and reload) clears a half-cached first visit. Hardware acceleration has to be on.
macOS won't open it? (unsigned build)
These builds are signed ad-hoc, not notarized by Apple, so Gatekeeper blocks them by default.
Standalone app: right-click BD808.app → Open → Open, once. After that it launches normally.
VST3 / AU: your DAW's plugin scanner won't prompt you, it just fails silently. Clear the quarantine flag yourself after unzipping, then move the plugins into place:
xattr -dr com.apple.quarantine BD808.vst3 BD808.component
mv BD808.vst3 ~/Library/Audio/Plug-Ins/VST3/
mv BD808.component ~/Library/Audio/Plug-Ins/Components/
Then rescan plugins in your DAW.
Windows blocks it? (unsigned build)
These builds aren't code-signed, so SmartScreen shows a "Windows protected your PC" dialog the first time you run them.
Standalone app: click More info, then Run anyway. 64-bit Windows 10 or later.
VST3: copy BD808.vst3 into:
C:\Program Files\Common Files\VST3\
Then rescan plugins in your DAW.
YUTANI
Ported synthesizer, not a circuit simulation
Yutani is a monophonic bass synthesizer: two oscillators, a sub, unison, noise, and a bank of 14 filters, nine of them nonlinear analog-style models. The oscillators are anti-aliased and the engine runs at up to 8x oversampling, so the filters can be driven hard without breaking up. It is not a circuit simulation, and it costs a small fraction of what the other modules here do.
Original design and DSP by Joep Vanlier (Saike), written as a REAPER JSFX plugin. This is a native VST3, AU and standalone port of that engine, released under the same MIT license. The port is the only part of it that is our work.
Builds
Posted August 17, 2026 · updated September 8, 2026
macOS won't open it? (unsigned build)
These builds are signed ad-hoc, not notarized by Apple, so Gatekeeper blocks them by default.
Standalone app: right-click Yutani.app → Open → Open, once. After that it launches normally.
VST3 / AU: your DAW's plugin scanner won't prompt you, it just fails silently. Clear the quarantine flag yourself after unzipping, then move the plugins into place:
xattr -dr com.apple.quarantine Yutani.vst3 Yutani.component
mv Yutani.vst3 ~/Library/Audio/Plug-Ins/VST3/
mv Yutani.component ~/Library/Audio/Plug-Ins/Components/
Then rescan plugins in your DAW.
Windows blocks it? (unsigned build)
These builds aren't code-signed, so SmartScreen shows a "Windows protected your PC" dialog the first time you run them.
Standalone app: click More info, then Run anyway. 64-bit Windows 10 or later.
VST3: copy Yutani.vst3 into:
C:\Program Files\Common Files\VST3\
Then rescan plugins in your DAW.