qbrt
qbrt · filtersStereo state-variable filter with vactrol-style ping input.
the faceplate
7 inputs · 2 outputs · 4 params
inputs
| id | cable | what it does |
|---|---|---|
L | audio | Left audio input — the signal the left filter section processes. The PING excitation click is summed in at this same point, so your signal and the ring pass through one and the same filter (the ring is not a parallel voice). audio signal |
R | audio | Right audio input — the signal the right filter section processes, with the same shared controls and the same PING click summed in. The ping excitation is identical on both channels, so a ping alone is dead-centre mono however you patch L/R. audio signal |
ping | gate | The excitation TRIGGER. Each rising edge across 0.5 fires two things at once: a broadband click into both channels' filter inputs (peak amplitude 1.5, decaying to nothing in ~1 ms at 44.1/48 kHz — its 0.98-per-sample coefficient is not sample-rate compensated, so it is half as long at 96 kHz), and a +30 jump in the filter's internal Q on top of whatever RESONANCE is set to, which then decays with PING DEC's time constant. The filter rings at CUTOFF as a result — a pluck. Only the RISING edge matters: how long the signal stays high changes nothing, so drive it from a clock, a drum-sequencer lane, or any trigger source. Because the Q boost is added on top of the knob, PING still plucks convincingly with RESONANCE at zero — and the ring is not level-compensated, so at high RESONANCE it can be far hotter than the dry signal. gate / trigger; trigger — fires once per rising edge |
cutoff | cv | CV for CUTOFF, log-scaled: ±1 multiplies or divides the knob frequency by about 31×, i.e. a roughly ±5-octave sweep centred on wherever you left the knob and pinned at the 20 Hz / 20 kHz ends. Patch an envelope for filter sweeps, or a sequencer/pitch CV to play the ping's ring as a melody. It is control-rate (the knob is internally smoothed at ~7 Hz), so this jack does filter sweeps, not filter FM. control voltage (CV); modulates cutoff (multiplicative ≈ octaves — ±1 CV spans the param’s log range) |
resonance | cv | CV for RESONANCE, linear: ±1 displaces the knob by up to half the 0–0.99 range in each direction (±0.495), clamped at the ends. Use it to open the filter into its sharp, ringing region on accents, or to duck a peaky setting back to flat. It cannot reach self-oscillation — there is none to reach — but at the top of the sweep the peak at CUTOFF is around +26 dB. control voltage (CV); modulates resonance (additive offset — ±1 CV sweeps the full range, centered on the knob) |
mode | cv | CV for MODE — and note this jack is BUCKETED, not continuous (a discrete cv scale): the −1..+1 sweep resolves to only the two ENDS of the morph, negative CV driving the response to the low-pass end and zero-or-positive driving it to the top (input-minus-band-pass) end. So a gate or square LFO here FLIPS the filter's character; it will not slide through the band-pass and high-pass region in between. Use the knob itself for those blends. control voltage (CV); modulates mode (integer buckets — CV selects a discrete step) |
pingDecay | cv | CV for PING DEC, log-scaled: ±1 multiplies or divides the knob time by 10 (the 5 ms–0.5 s range spans 100×, so a full swing covers a decade either way), clamped at the ends. Modulate it per hit to make plucks shorter or longer without touching the resonance. control voltage (CV); modulates pingDecay (multiplicative ≈ octaves — ±1 CV spans the param’s log range) |
outputs
| id | cable | what it does |
|---|---|---|
L | audio | Left filtered output — the left input after the filter, including whatever the PING excitation is currently ringing. Unity in the passband for the taps that HAVE one (low-pass at DC, high-pass up top, the 4th tap at both ends); the band-pass tap at MODE ⅓ has none — it is silent at DC and at the top and only its Q-scaled peak survives. The resonant peak at CUTOFF is NOT gain-compensated in any mode, so high RESONANCE, or a fresh ping, can push this well above the level going in. audio signal |
R | audio | Right filtered output — the right channel of the same stereo pair, identical processing and identical ping excitation. Take L and R together to keep the stereo image of whatever you fed in; a bare ping appears equally on both. audio signal |
params
| id | label | range | default | curve |
|---|---|---|---|---|
cutoff | Cutoff | 20..20000Hz | 1000 | log |
resonance | Res | 0..0.99 | 0.7 | linear |
mode | Mode | 0..1 | 0 | linear |
pingDecay | Ping Dec | 0.005..0.5s | 0.15 | log |
controls
| control | what it does |
|---|---|
| Cutoff | CUTOFF — the filter's corner / centre frequency, 20 Hz to 20 kHz on a log dial (default 1 kHz). It is doing two jobs: it sets where the filter acts on the signal you patch through, and it IS the pitch the filter rings at when PING fires, so on a ping patch this knob is effectively the tuning control. Internally smoothed, so sweeps are click-free. |
| Mode | MODE — one continuous morph across four filter taps rather than a mode switch: 0 = low-pass, ⅓ = band-pass, ⅔ = high-pass, 1 = the input-minus-band-pass tap, with a linear crossfade between each adjacent pair (0.5 sits half band-pass, half high-pass). Low-pass and high-pass pass their band at unity with the resonant peak riding on top at CUTOFF; band-pass keeps only the region around CUTOFF, and its level rises with Q too. One structural quirk worth knowing: the high-pass tap is built as input-minus-low-pass, which puts a second zero at CUTOFF/Q rather than a double zero at DC — so it falls at 12 dB/oct only between CUTOFF/Q and CUTOFF and flattens to 6 dB/oct below that, leaking noticeably more bass than a textbook 2-pole high-pass at high RESONANCE (at Q 20.5 that knee sits around CUTOFF/20). The fourth tap is intended as a notch, but the band-pass it subtracts is itself Q-scaled, so it only truly nulls with RESONANCE around 0.015 — by about 0.065 the dip has closed to flat, and above that it inverts into a large resonant PEAK at CUTOFF (≈ +23 dB at the default RESONANCE) sitting on an otherwise unity-flat signal. Read the top of the sweep as a 'dry plus resonant bell' colour unless you deliberately park RESONANCE near zero for a real notch. |
| Ping Dec | PING DEC — the time constant (5 ms to 0.5 s, log, default 0.15 s) of the Q-boost envelope that PING fires: the +30 of extra Q falls to about a third of its peak after this long, and is essentially spent after roughly five times it. Short reads as a clicky percussive pluck, long as a sustained 'peeeew'. Two things it does NOT do: it leaves the ~1 ms excitation click itself untouched, and it is not the only thing setting the tail — the ring's own decay is governed by RESONANCE and CUTOFF, so a high-Q low-frequency ping rings on well past a short PING DEC. |
| Res | RESONANCE — the filter's Q, mapping the 0–0.99 control onto Q 0.7 to 20.5. At 0 the low-pass and high-pass ends are flat and clean with no peak at all (Q 0.7 is a hair under Butterworth) — the MODE = 1 tap is the exception, where a Q below 1 leaves a dip at CUTOFF instead (about −10.5 dB at RESONANCE 0). As you climb, the peak at CUTOFF sharpens, the ring after a ping lasts longer, and — since there is no gain compensation — the filter also gets substantially louder around CUTOFF (about +26 dB at the top). It never reaches self-oscillation, no matter how far you push it: PING is how you make this filter sing. |
source
qbrt.ts on GitHub.