DROP 004 · 2026
TWIN POLIVOKS-STYLE STEREO FILTER · LÖVE 11.5

CATCH—22

a digital implementation of a classic
Soviet-chip stereo filter

Two 12 dB multimode filters that are not identical — and are not supposed to be. Real units drift apart: gains, resonance, bias. CATCH-22 models that mismatch as the instrument's voice. Two channels, one soul, and the slow breathing space between them.

FREE DOWNLOAD — DROP 004

browse all drop files →

REQUIRES LÖVE 11.5 → love2d.org
linux via PipeWire/ALSA · windows via WASAPI · ~230 KB download · boots already filtering — the drone plays before you touch anything

The CATCH-22 panel — twin filter columns, LINK bay, noise, out, and the APP bay with scope, spectrum, mismatch and presets
The twin skin — warm cream and bone, identical geometry
THE PANEL — BAND A IS THE HARDWARE: SOURCE / NOISE / FILTER 1 / LINK / FILTER 2 / OUT. BAND B (DARK, MARKED APP) IS THE DIGITAL BAY: SCOPE · SPECTRUM · MISMATCH · PRESETS.

THE TWIN LAW

"The UD1208 chips used in the filter are very sensitive and are never the same. Therefore you will not mathematically get two identical filters. Which is an advantage when using the unit in stereo."

— the classic hardware's own manual, warning about its filter

Seeded mismatch

Each channel carries its own unit spread — g ±3%, k ±4%, drive bias, self-osc threshold — seeded at boot. Zero the mismatch and the two channels cancel bitwise; the difference you hear is the model.

Slow drift

An ultra-slow random walk (30–120 s time constant, clamped at ±0.4% of cutoff) makes the twins breathe apart over minutes. Audible on drones, invisible on drums — exactly like hardware settling.

Warm-up

Like the original, the unit settles as it warms: the applied range grows from ±1.2% to the full ±3% over 90 seconds. The MISMATCH bay has the gauge and a WARM bypass for A/B work. NEW TWIN re-rolls the pair.

THE FILTERS

Two 12 dB multimode stages

LP · BP · HP · NOTCH from one state-variable core, with the original's character: crossover-distortion bias that rises below 1.28 kHz, a state clipper that catches self-oscillation level-consistently, odd grit that grows with resonance, and bass retention — the sub survives the sweep within half a dB.

Three wirings

Dual mono, series (the two 12 dB stages stack into a 24 dB chain — the patch cord draws itself across the panel), and stereo parallel. LINK FREQ lets one cutoff knob drive both channels; LINK CV shares the control voltage.

FOUR RESPONSES, ONE KNOB

Low pass response

LOW PASS

Removes content above the cutoff. The default muscle of the filter.

Band pass response

BAND PASS

Removes above and below — the noise bay's best friend.

High pass response

HIGH PASS

Removes below; nasally, aggressive, great against a bass.

Notch response

NOTCH

Removes a band at the cutoff — sweep it for pseudo-phaser motion.

Measured at the engine: the notch nulls a sine at its center by −65 dB, the high pass falls −40 dB a decade below. Original diagrams, drawn for this manual.

THREE WAYS TO PATCH IT

Mono single filter patch

MONO SINGLE

Feed IN 1, take OUT 1: one 12 dB voice. The second filter stays free for a second signal — two performers, one unit.

Mono dual / series patch

MONO DUAL — SERIES 24 dB

Patch OUT 1 into IN 2: the panel draws the cord and the two stages stack into a 24 dB chain. LINK FREQ ties both cutoffs to one knob — the classic wall.

Stereo patch

STEREO

Left into IN 1, right into IN 2: two channels, two modes, two filters that never quite agree. The default — and the point.

The hardware manual taught these three patches; the instrument draws them for you — the series cord and the LINK cord render across the panel exactly as you patch them. Full recipes in the field manual.

SPECIFICATIONS

FILTERS2 × 12 dB multimode (LP / BP / HP / NOTCH), TPT/ZDF core, EXP cutoff law 20 Hz–20.5 kHz
CV±5 V ≙ ±3.5 oct around the knob, or 0..+10 V ≙ +7 oct from 20 Hz; attenuator + peak-hold LED mirror per channel
LFOs (APP)2 × sine/triangle/saw, 0.03–30 Hz, bipolar; envelope follower on ext input
NOISEwhite (unit variance) and pink (−3.0 dB/oct measured), RMS-matched, pre-filter injection with balance pan
ENGINE48 kHz stereo, C kernels (PGO-built, AVX2 dispatch) bit-exact against the Lua reference; ~38 µs per 512-frame block vs the 60 µs budget
PRESETSschema v1, bitwise round-trip, factory bank of 8, mismatch seeds included
MIDICC learn on any knob (right-click), panic on double-Escape, persistent map — clock-less
LICENSEMIT · original artwork · no samples — everything is synthesized in code

NEW IN DROP 004 — THE ROOM IN THE PANEL, THE FILTER BREATHES OVER THE WIRE

NYDUS room overlay (P)

The family link gets a face: sibling cards with their protocol-§8 peer dots (green local / blue LAN / hollow absent), the three family links — LUNAR bus → twin filter IN, filtered return OUT, PULPO clock IN — drawn as lit nodes with live activity, the trio badge, and an honest state footer. Presentation only: the links self-assemble on presence, exactly as they always did.

Inbound PARAM surface

A sibling score can now breathe the twin filters over the family bus: bounded, validated cutoff / resonance / mode messages, clamped at the engine — documented in the field manual. The room can move the filter without touching the panel.

Family capture

CATCH22_REC=1 records the post-return master to the save dir — the filtered bus, as heard by the trio. CATCH22_WINDOW=WxH sizes the boot window for multi-instrument session hosts.

NEW IN DROP 003 — THE ROOM GOES LAN, THE FILTER GETS ITS TEMPERAMENT

LAN discovery (Tier-2)

Machines on the same network find each other over a multicast beacon and link over TCP — still zero configuration. A peer from another machine lights the blue LED and shows measured milliseconds. No multicast on your network? Point units at each other once with NYDUS_LAN_DIAL; NYDUS_TIER2=0 keeps the unit local-only; NYDUS_LOCKDOWN=1 is the venue switch. If a daemon ever dies, the unit respawns and re-links it within seconds — the room heals itself.

CHARACTER — starve & drip

The twin filters now carry the cell's temperament (research transfer from LUNAR-24, validated against Barton's Atomika breadboard notes and the programmable-op-amp datasheets): at maximum resonance the ring starves — strangled, yet it still rings — and the new DRIP knob in the app bay drives the amplitude-conditional "dripping water" instability. Intrinsic at rest; APP-badged; presets carry it.

Fused installers

A single-file Linux AppImage, a fused Linux zip and a fused Windows exe — each carries the real-time audio bridge, the kernels and the nydus daemon. Unzip (or don't) and play; the bare .love is still there for LÖVE 11.5 users.

NEW IN DROP 002 — NYDUS, THE FAMILY LINK

Zero-touch discovery

Instruments on the same machine find each other automatically — no settings, no pairing dialogs. The status LED in the app bay is an honest meter: amber searching, green when a local peer is patched, blue for LAN peers (v2). When LUNAR-24 + PULPO-23 + CATCH-22 are all present, the set announces itself.

FX destination mode

Another instrument streams its bus into the twin filters and gets the filtered return — measured 2.67 ms round trip on a local machine. Jitter depth is tunable per link; stale audio is dropped, never queued.

Hardened wire

Framed control + media with per-peer queues: control reliable, stale media dropped. The conformance suite (discovery, clock alignment, parameter determinism, wire hostility, teardown) runs in every instrument's CI — wire compatibility by tests, not hope.

THE FAMILY

CATCH-22 is the second instrument of the ZRGRT family — the filter unit that pairs with LUNAR-24, the microtonal ambient drone workstation. Family compatibility is the same design system, the same fonts, the same honest NO AUDIO state — but every instrument keeps its own soul: the moon had teal and void, the filter has Polivoks red, steel and amber. Family link-up over NYDUS shipped in drop 002 — run the trio on one machine.

FAMILY SESSIONS — HEAR THE TRIO

Four public-domain works, played live by LUNAR-24 + PULPO-23 + CATCH-22 over one NYDUS wire, captured as heard — no samples, no overdubs. Full notes on the LUNAR-24 page.

01 · MOONLIGHTBeethoven · 2:24

LUNAR the triplet arpeggios · PULPO one soft pulse per bar · CATCH filters the room

02 · CANON IN DPachelbel · 2:12

LUNAR two voices eight seconds apart · PULPO the ground bass · CATCH blooms at the third entry

03 · MOUNTAIN KINGGrieg · 2:08

the room steps 138→154 bpm over the wire · PULPO's march · CATCH blooms at the climax

04 · SYMPHONY NO. 5Beethoven · 3:15

fate knocks — the exposition · PULPO states the motif on timpani · CATCH the hall