Four netlist filters, all at onceAll Netlist Effects

Ramjet Complex Quad-Filter

TRACKING COMB · PEAK / TROUGH · CROSS-MOD TRIAD · COUPLED RING

Four filters. All of them at once.

A comb that tracks the note, a field of peaks and notches, three resonances that frequency-modulate each other, and a ring of eight that splits into a cluster of modes. Wire them however you like and put an LFO on any knob.

VST®3 effect · Windows 64-bit No activationmacOS VST3 and Audio Unit are in development.

The Ramjet Complex Quad-Filter's panel on its first page, with the factory preset FOUR, IN PAIRS. A black title strip: RAMJET COMPLEX QUAD-FILTER, PRESET FOUR, IN PAIRS between two arrows, REAL TIME live models on 1 · 2 · 3 · 4, and PANEL % with 75, 100, 125 and 150. Under it, on a warm grey face, the signal strip: an INPUT knob, ROUTING with SERIES, PARALLEL and 1→2 | 3→4 lit, and the four filters as boxes, 1 TRACKING COMB lit black, 2 PEAK / TROUGH, 3 CROSS-MOD TRIAD and 4 COUPLED RING, each ON with bounce netlist, wired as two pairs whose outputs meet, then MIX, OUTPUT and the left and right meters. Below it page 1, TRACKING COMB: a screen of ten orange teeth climbing from 175 Hz to 1.75 kHz, the right channel's in pink beside them, its knobs, and teal and plum chits under the knobs that are modulated. At the foot the MODULATION bank, 16 LFOs · 4 NOISE / S&H: sixteen LFO tiles each drawing its wave, four noise tiles, and LFO 4 open, a square wave at 1/8 synced to the host, routed to two of the comb's teeth.
  • 4 filters, all running at once
  • 95 knobs, a MOD chit under each
  • 20 modulators: 16 LFOs, 4 noise and S&H
  • Every netlist solved on the bounce

What it is

One plug-in. Four filters in it.

Four complex filters, each a whole circuit, all running at once. Wire them one into the next, side by side, or in two pairs, and put any of 20 modulators on any of their 95 knobs.

Each of the four was drawn here as a netlist, a list of every part and where it connects, and run in ngspice, an open-source circuit simulator, before the plug-in existed. Then the plug-in's own solver, which shares no code with ngspice, solved the same files and came back with the figures printed in them, or within half a decibel of them. You play live models of the four; a bounce solves the netlists.
  1. 1TRACKING COMBten teeth on one BBD delay, in stereo
  2. 2PEAK / TROUGH CASCADEfive troughs, then five peaks, in series, in stereo
  3. 3CROSS-MODULATED TRIADthree resonances that frequency-modulate each other, in stereo
  4. 4COUPLED RINGeight resonators that share their modes; pickup A left, pickup B right

Routing

Three ways to wire them. Try them.

ROUTING, at the top of the panel, decides how the four filters meet, and each filter's FILTER switch turns it OFF or ON. An OFF filter passes what reaches it, so any one, two or three of the four make a filter of their own. MIX sets the result against the dry signal.

ROUTING
click a filter to switch it off or on
INOUT÷21TRACKING COMB● ON2PEAK / TROUGH● ON3CROSS-MOD TRIAD● ON4COUPLED RING● ON

Two pairs in series, side by side, their outputs averaged. OUT = the mean of (IN → 1 → 2) and (IN → 3 → 4) Every filter is on.

The four filters

A page each. A circuit each.

Click a filter in the signal strip and its page opens: a screen of its response, drawn from its circuit at the knobs' values, with handles to drag, and every knob it has. Each picture here is the plug-in's own drawing of that page, with the factory preset FOUR, IN PAIRS loaded.

Filter 1, TRACKING COMB

ten teeth on one BBD delay, in stereo

Page 1 of the panel, TRACKING COMB, ten teeth on one BBD delay, in stereo. A response screen from 175 Hz to 1.75 kHz shows ten orange teeth climbing in a staircase from about 2 dB to 20 dB, each a numbered handle, with the right channel's teeth in pink just above each one at SPREAD +0.12 oct, and teal bars where an LFO swings teeth 3, 5 and 8. Under it ten tooth knobs from 2.0 dB to 20.0 dB, their chits L4 -30 on tooth 3, L4 +30 on tooth 5 and L7 +45 on tooth 8. To the right FREQ on 175.2 Hz with the chit L1 +8, WIDTH f0 / 4.0 with S2 +35, REST 0 %, SPREAD, DRIVE +0.0 dB and MIX 100 %, the FREQ FOLLOWS switch on FIXED, and four readouts: f0 LEFT 175 Hz, f0 RIGHT 190 Hz, DELAY 5.71 ms and BBD CLOCK 45.2 kHz.

A comb filter is a delay fed back into itself, and it lifts every frequency whose period fits the delay a whole number of times: its teeth. This one's delay is a bucket brigade of 512 stages, and ten band-passes sit inside its loop on the first ten teeth, each through a level of its own. So the first ten teeth are ten knobs, TOOTH 1 to 10, each from 0 to 20 dB, and REST sets every tooth above them. WIDTH sets how far each tooth reaches either side.

One current tunes the whole comb, the delay and all ten band-passes together, so the teeth stay on their harmonics wherever FREQ puts them. With FREQ FOLLOWS on MIDI NOTE, tooth 1 sits on the note you play and the ten teeth are its first ten harmonics. SPREAD sets the right channel's teeth apart from the left's, up to an octave either way.

It is the comb that Cinderblock puts after its oscillators, here as an effect, in stereo, on anything you send it.

Checked: Its staircase

Set as a staircase, TOOTH 1 at 2 dB up to TOOTH 10 at 20 dB, the netlist's own run reads 2.0 to 20.1 dB, its largest error +2.0 dB. Solved by the plug-in: 2.1, 4.1, 6.3, 8.4, 10.7, 13.1, 15.5, 18.0, 20.2, 20.5 dB, its largest error +2.2 dB.

Filter 2, PEAK / TROUGH CASCADE

five troughs, then five peaks, in series, in stereo

Page 2 of the panel, PEAK / TROUGH CASCADE, five troughs, then five peaks, in series, in stereo. A response screen from 20 Hz to 20 kHz: blue troughs T1 to T5 at 210 Hz, 595 Hz, 1.68 kHz, 4.76 kHz and 13.5 kHz, from -30 dB to -6 dB, and orange peaks P1 to P5 at 125 Hz, 354 Hz, 1.00 kHz, 2.83 kHz and 8.00 kHz, from +6 dB to +22 dB, the right channel in pink 0.30 octave higher, with a plum bar where a noise source swings T2 and teal ones where LFOs swing P4 and P5. Under it a POS knob and a DEPTH or HEIGHT knob for each of the ten. To the right AMOUNT 100 %, SHIFT with the chit L2 +50, SCALE ×1.00, SPREAD +0.30 oct with L5 +25, DRIVE, Q TROUGH 2.00, Q PEAK 2.00 and MIX, over SECTIONS, IN SERIES: T1 to T5, then P1 to P5.

Ten filter sections in series: five troughs, T1 to T5, then five peaks, P1 to P5. Each has its own position, anywhere from 20 Hz to 20 kHz, and its own depth, up to 40 dB for a trough and 24 for a peak. Drag a handle across to move it, up or down for its depth.

AMOUNT scales all ten back to flat. SHIFT moves the whole cluster, five octaves either way, SCALE spreads it, gathers it or turns it over, and Q TROUGH and Q PEAK set how sharp they are. A peak is a trough turned inside out, the same parts with one wire moved, so a peak and a trough at the same place and setting cancel: checked in ngspice, a +20 dB peak on a -20 dB trough is flat within 0.005 dB.

It is the cascade the Overtime Eight-Tone hangs over its eight voices, here on its own, in stereo.

Checked: Its ten features

At the defaults, measured with a steady sine on each feature, the troughs read -28.8, -22.7, -16.6, -10.6, -5.3 dB and the peaks +5.3, +8.6, +12.6, +16.7, +20.7 dB. Nine of the ten are the netlist's own figures exactly; the other is 0.1 dB off.

Filter 3, CROSS-MODULATED TRIAD

three resonances that frequency-modulate each other, in stereo

Page 3 of the panel, CROSS-MODULATED TRIAD, three resonances that frequency-modulate each other, in stereo. A response screen marked before FM · CROSS does not change this curve, with F1, F2 and F3 peaking at 110, 220 and 330 Hz and a teal bar where an LFO swings F2. Under it POS, RES and LEVEL for each of F1, F2 and F3, every RES on 26.0 dB, then DRY and BASE Q; CROSS on 0.50 with the chit L9 +40, RESONANCE ×1.00, SHIFT -3.18 oct, SPREAD and DRIVE; the SHIFT FOLLOWS switch on FIXED, and SELF-OSCILLATION off. To the right the CROSS-MOD MATRIX, nine knobs from 1→1 to 3→3 with 1→2, 2→3 and 3→1 at 1.00 and 3→1 on the chit S4 +50, drawn beside it as a triangle of F1 at 110 Hz, F2 at 220 Hz and F3 at 330 Hz; and PEAK FM DEPTH bars reading 1.36, 2.47 and 0.88.

Three resonant filters side by side, F1, F2 and F3, each with its own position, resonance and level. Then a three-by-three matrix: each filter's band-pass output can move the frequency of any of the three, its own included, at audio rate. CROSS scales the whole matrix; at zero the triad is an ordinary filter with three peaks.

A broad filter barely notices being moved. A resonant one rings with sidebands, the way an FM operator does, and the more it resonates the more it is changed. Push RESONANCE past full and the three ring on their own: the triad is three FM operators, playing off each other and off whatever you feed them. Checked in ngspice, an oscillating filter's sidebands match the Bessel functions FM theory predicts within 0.2 dB, every line above -40 dB.

With SHIFT FOLLOWS on MIDI NOTE, SHIFT is measured from the note you play: at 0, F1 sits on it. The modulation moves each frequency by a share of itself, so a patch keeps its character all the way up the keyboard.

Checked: Its three resonances

Set to 26 dB on 110, 220, 330 Hz, the solved triad reads 26.09, 26.10, 26.12 dB at 109.89, 219.91, 330.68 Hz.

Filter 4, COUPLED RING

eight resonators that share their modes; pickup A left, pickup B right

Page 4 of the panel, COUPLED RING, eight resonators that share their modes; pickup A left, pickup B right. A response screen from 200 Hz to 3 kHz with the ring's modes as dashed lines around 1 kHz, pickup A's curve in orange and pickup B's in pink, and beside it the ring drawn as eight numbered nodes joined by springs round a centre marked IN, A·L at the top and B·R at the foot. Under them TUNE and INPUT for each node N1 to N8, N3's TUNE on the chit L14 +20 and N1's INPUT at 1.00. To the right COUPLING on c 0.20 with S3 +10, RES 34.0 dB, RESONANCE ×1.00, SHIFT, SPREAD, PICKUP A 0.00, PICKUP B 4.00 with L12 +50, BASE Q, DRIVE and MIX, and the MODES table at c = 0.200, f0 1000 Hz: 1183, 1133, 1000, 847 and 774 Hz, each single or a pair, with how loud pickup A and pickup B hear it.

Eight resonators in a ring, each pushed by its two neighbours like masses joined by springs. With COUPLING at zero and all eight tuned alike there is one resonance. Turn COUPLING up and it splits into the ring's modes: five frequencies, three of them pairs, spreading further apart the further it goes. Each node has its own TUNE, an octave either way, and its own INPUT, how much of the signal it takes; by default only N1 is fed.

PICKUP A is heard on the left and PICKUP B on the right, each a place round the ring, and where a pickup sits decides which modes it hears. At the defaults, A sits on N1 and hears the modes with deep dips between them; B sits across the ring on N5, where the dips are gone and only a ripple is left. With SHIFT FOLLOWS on MIDI NOTE, SHIFT is measured from the note you play: at 0, the ring's f0 sits on it.

0.883 V · c 0.20

Five modes at 1183, 1133, 1000, 847, 774 Hz. The three in the middle are pairs.

The ring's modes by the formula in its netlist's notes, f = f0 · √(1 + 2c · cos θ), θ every 45 degrees round the ring, with f0 at 1 kHz and c from COUPLING's own law, which spreads three decades across the knob so the bottom gives slow beating and the top a wide cluster. Solved in ngspice, the modes land within 0.3 percent of the formula from c = 0.08 to 0.45. Drag COUPLING to its top and c reaches 0.45, where the lowest mode is closing on 0 Hz; that is why it stops there.

Checked: Its modes and its pickups

At the defaults, pickup A hears peaks at 1187, 1133, 1000, 846, 771 Hz, the netlist's own figures exactly: a few hertz off the formula above, where neighbouring modes lean on each other. At 2 kHz pickup A is -3.5 dB and pickup B -91.2 dB, against the netlist's -3 and -91.

Modulation

95 knobs. A chit under every one.

Every knob on the four filter pages has a MOD chit under it. Click one and pick a source, or drag a source's tile from the bank onto it. One source per knob, and its DEPTH is a share of the knob's travel, either way.

The MOD chit's picker, open over the tracking comb's WIDTH knob: ROUTE INTO COMB · WIDTH, keys 1 to 16 under LFO, keys S1 to S4 under NOISE / S&H with S2 lit plum, NONE, and DEPTH on +35 % on a slider from -100 to +100, over the line: One source per knob. Depth is a share of the knob's travel, either way; the outer ring shows the swing.
The picker, open over the comb's WIDTH.

A CHIT, PLAYED

DEPTH +35 % swings the knob 17.5 percent of its travel either way. The outer ring shows the swing, as it does on the panel.

16 LFOS

Every one its own.

SINE, TRI, RAMP UP, RAMP DN or SQUARE. FREE from 0.01 to 40 Hz, or SYNC to the host from 8 bars to 1/32 T. SKEW sets how much of the cycle it spends rising, or a square's duty, and PHASE offsets it. STEREO runs the right side up to 180 degrees ahead of the left, so one LFO can push the two sides opposite ways. RETRIG on FREE lets it run, on TRANSPORT locks it to the song's position, and on MIDI NOTE starts it again at every note, and FADE IN brings it up from nothing after each restart.

4 NOISE / S&H

Noise, held or not.

Each is NOISE or SAMPLE & HOLD, and COLOR tilts its noise from blue through white, pink and red to brown. As NOISE it wanders, smoothed to its RATE. As a sample and hold it samples the noise at its own RATE or at each cycle of an LFO it is clocked from and holds it until the next, with LAG to round the steps off. STEREO LINKED gives both sides the same draw; SPLIT gives each its own.

Playback and bounce

Live models to play. The netlists on the bounce.

Solving four circuits takes longer than the music does. So playback always runs a live model of each filter, and an offline render can solve the netlists instead. Every filter page says so beside its switch:

real time always runs live

LIVE

The same parts, as equations.

Each live model is its filter's own circuit worked into equations, part for part: every integrator a prewarped section with its transconductance amplifier's curve, the comb's limiter solved sample by sample, the ring's eight resonators solved together on every sample. The whole chain runs at twice the host's rate up to 48 kHz, for about a fifth of one core at 48 kHz with all four on.

With 10 mV at a filter's input, -40.0 dBFS at the default DRIVE, every live model is within 0.1 dB of its solved netlist at every feature. At 0.3 V, -10.5 dBFS, into the amplifiers' curves and the comb's limiter, the widest gaps are 0.31 dB on the comb, 0.18 dB on the cascade, 0.19 dB on the triad and 0.05 dB on the ring.

BOUNCE ENGINE: NETLIST

The netlists, solved.

Each filter has its own BOUNCE ENGINE switch, NETLIST or LIVE, and all four start on NETLIST. When your DAW renders offline, each filter on NETLIST is solved from its netlist, every part, each channel its own copy of the whole circuit, starting from the circuit's resting state at the knobs as they stand. The title strip says what is running: REAL TIME, or BOUNCING and which filters run their netlists.

Both engines have the same latency, 48 samples at 44.1 and 48 kHz and none above, so a bounce lines up with playback to the sample. A bounce starts every LFO and every noise source from the same place, so the same render comes out the same every time.

What it is, and what it is not

The netlists as written. What the plug-in adds.

None of the four copies a machine. Each was designed here, written out as a netlist and checked in ngspice, and the plug-in reads those files as they are. These are the things it does to them as it loads them, and why.

THE KNOBS

Each knob moves what its netlist says it moves: a control voltage the circuit already has, or the resistors the netlist's own laws set, changed in place while the circuit runs.

THE COMB'S DELAY

The comb's netlist draws a bucket brigade and its clock, and offers a mode in which the brigade is an ideal delay. The plug-in solves that mode. The delay's length follows the brigade's own clock law, so FREQ and its modulation retune it, but there is no clock residue and no brigade noise. The clock is cut from the solve; the load it puts on the tuning current is kept.

THE RING'S PICKUPS

The ring's netlist reads its two pickups through formulas evaluated during the run. The plug-in solves the eight resonators and then takes each pickup from their outputs by the netlist's own weights: the same sum, done after the solve.

THE SAMPLE RATE

A solver that steps at a fixed rate tunes an integrator a little away from where the circuit puts it, more so near the top of the band. The plug-in corrects each filter's tuning for its rate, so the teeth, the sections, the resonances and the modes land where the netlists put them.

A SEED OF NOISE

A tenth of a microvolt of noise on the triad's and the ring's inputs, so a resonance pushed past full can start from silence, as a circuit's own noise would start it.

THE LEVEL

0 dBFS is 1 V at a filter's input, times its DRIVE, -12 to +24 dB. At -20 dBFS each filter runs at the level its netlist was measured at. Louder, its transconductance amplifiers bend and compress, and that is part of the sound.

Four netlist filters, all at once

Ramjet Complex Quad-Filter

Four filters. All of them at once.

VST®3 effect · Windows 64-bit No activationmacOS VST3 and Audio Unit are in development.

At a glance

Ramjet specifications

Technical specifications for Ramjet, Complex Quad-Filter
FormatVST®3 effect · Windows 64-bit
In developmentmacOS VST3 and Audio Unit
Requires64-bit Windows 11, in any version Microsoft still supports. When the Mac version ships: macOS 15 or later, on Apple silicon or Intel.
ChannelsStereo in, stereo out · every filter in stereo
The filtersTRACKING COMB · PEAK / TROUGH CASCADE · CROSS-MODULATED TRIAD · COUPLED RING, all four at once
RoutingSERIES · PARALLEL · 1→2 | 3→4 · each filter ON or OFF
CombTen teeth on a 512-stage bucket brigade, each 0 to 20 dB · REST · WIDTH · FREQ on the note or fixed
Cascade5 troughs to 40 dB and 5 peaks to 24 dB, each placed from 20 Hz to 20 kHz · AMOUNT, SHIFT, SCALE, Q TROUGH, Q PEAK
TriadThree resonances to 40 dB · a three-by-three cross-modulation matrix · CROSS · RESONANCE past full
RingEight coupled resonators, five modes · TUNE and INPUT on every node · PICKUP A left, PICKUP B right
Modulation16 LFOs, 0.01 to 40 Hz or 8 bars to 1/32 T · 4 noise and S&H sources · a MOD chit under each of 95 knobs
MIDIThe comb, the triad and the ring follow the note you play, or stay fixed
PlaybackA live model of each filter, worked from its netlist's parts · about a fifth of one core at 48 kHz
BounceEach filter's BOUNCE ENGINE: NETLIST solves its netlist · LIVE runs its live model
Bounce timeAbout five times slower than real time with all four solved in series, about three in PARALLEL
Latency48 samples at 44.1 and 48 kHz, none above, the same in playback and the bounce
PresetsINIT · COMB ON THE NOTE · SLOW FORMANTS · FM ON THE NOTE · RING CLUSTER · FOUR, IN PAIRS
The panel1440 by 1000 · four filter pages over the modulation bank · PANEL 75 to 150 percent
Validation47 of 47 validator tests · host-tested
ActivationNone. No license server, no phone-home
Security updatesUntil November 2031
LicenseLicense agreement · Facts sheet
VST Compatible

VST is a registered trademark of Steinberg Media Technologies GmbH.