CATCH—22
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
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 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
Removes content above the cutoff. The default muscle of the filter.

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

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

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
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 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
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
| FILTERS | 2 × 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 |
| NOISE | white (unit variance) and pink (−3.0 dB/oct measured), RMS-matched, pre-filter injection with balance pan |
| ENGINE | 48 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 |
| PRESETS | schema v1, bitwise round-trip, factory bank of 8, mismatch seeds included |
| MIDI | CC learn on any knob (right-click), panic on double-Escape, persistent map — clock-less |
| LICENSE | MIT · 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.
LUNAR the triplet arpeggios · PULPO one soft pulse per bar · CATCH filters the room
LUNAR two voices eight seconds apart · PULPO the ground bass · CATCH blooms at the third entry
the room steps 138→154 bpm over the wire · PULPO's march · CATCH blooms at the climax
fate knocks — the exposition · PULPO states the motif on timpani · CATCH the hall