SD-Reverb is an algorithmic reverb built on a two-stage feedback delay network. Its late-field mixing matrix varies continuously, so the modal structure of the room reorganises while a tail decays. Two identical inputs twenty seconds apart decay through measurably different rooms. It runs as CLAP, VST3 and an Audio Unit, on macOS, Windows and Linux, and it is free.
Householder morph path
The late-field mixing matrix is rebuilt every block, so no two moments in a tail use the same configuration. The matrix is a Householder reflection whose defining unit vector drifts across the unit 5-sphere by spherical interpolation. A Householder reflection preserves the norm of the vector it acts on. Every point along the path therefore describes a network that cannot gain energy. That is what allows a 50-second decay to morph without the feedback loop diverging.
Recorded comparisons
Each player below plays both takes in sync and switches between them by volume. Nothing restarts on a switch, so both takes are heard at the same instant in the file.
One phrase, twenty seconds apart
One short phrase, played twice with twenty seconds between. With morph off the second decay is identical to the first. On Drift with a high Morph Depth it lands in a different room.
Repeated snare at two Entry Drift settings
At zero, every hit enters the room the same way and the responses stack into one composite response. At 0.8, each hit takes a different entry path.
Cathedral tail, bounced offline
Rendered faster than real time and complete to the end of the tail. The plugin reports its tail length to the host, so the bounce does not stop at the region edge.
Two sources of variation
SD-Reverb varies the tail in two independent ways, on separate controls.
Noise injection into the regeneration path gives the tail a low-level moving floor. The room is fixed and the content inside it moves. This is the Air group.
Variation of the feedback matrix moves the room itself. Resonances wander, the decay envelope reshapes, and the spatial structure changes around the sound. This is the Morph group. The two are audibly separate phenomena and can be set independently.
Mixing order and detail
Smoothness in a reverb comes from diffusion, and diffusion smears spectral detail.
SD-Reverb uses six late-field channels rather than sixteen, with sparse and structured matrices. Echo density still builds to a dense tail, and phase relationships in the source are scrambled less than a higher order would scramble them. The design target is a source that stays legible under its own reverb.
Four room modes
Hall is warm and deep, with the top end intact. It is the default mode.
Chamber has more early energy, a tighter delay spread, and a shorter front-to-back distance. It suits drums and close sources.
Cathedral is built for long decay times and supports the 50-second setting.
Drift is a wide morph loop with deliberately audible evolution. It is the mode that demonstrates what the matrix morph does.
Morph controls
Morph Rate sets how fast the room reorganises, from a drift that takes minutes to cross to motion that is audible as motion. At the default rate the change is slow enough that its absence registers before its presence.
Morph Depth sets how far the matrix travels along its path. A small depth breathes. A large depth reaches a different room and returns.
Morph Adapt holds the matrix still while an event is sounding and moves it between events. The tail that is audible stays coherent, and the room has changed by the next event.
Entry drift controls
At zero the input path is fixed and two identical inputs produce identical tails. Above zero each event enters through a different path, so first reflections and the spread of energy differ per event. Repeated hits stop stacking into one composite response. That stacking is a large part of why dense material turns muddy in a fixed-input reverb. The decay itself is untouched.
Entry Rate sets how quickly the entry paths rearrange between events.
Air controls
Air Level sets the amount of a low-level room-tone bed under the tail. Air Motion sets how restless that bed is. The layer is independent of the matrix morph.
Remaining parameters
Eighteen parameters sit in five groups. Three of those groups, Morph, Entry and Air, are described in the sections above. The other ten parameters are:
- Size
- Decay, 0.2 to 50 s
- Predelay
- Early Level
- Diffusion
- Tone Tilt
- Low Cut
- Width
- Mix
- Trim
Factory presets
Twenty-six presets ship with the plugin, filed by room mode. Close Ambience and Vast Nave are the two extremes of size. Held Breath runs thirty seconds. Every Door Different exists to demonstrate Entry Drift.
Each preset is a plain text file that can be read and edited in any text editor. All three formats read one shared library from one folder. A preset saved in the CLAP build is present in the VST3 and Audio Unit builds immediately.
Plugin formats
SD-Reverb is written for CLAP first. CLAP provides per-parameter sample-accurate modulation, which is what the morph path requires.
The VST3 build comes from clap-wrapper, the community project that presents a CLAP plugin to a VST3 host. CLAP’s parameter and event model crosses into VST3 intact, and using the wrapper means there is one implementation rather than two.
The Audio Unit is a native adapter written against the same DSP core and the same editor, not a wrapped build. It exists because the wrapper’s Audio Unit path broke window resizing, truncated offline bounces and reported no tail length. It is AUv2 and macOS only. On Windows and Linux the product is CLAP and VST3.
Host behaviour
Automation records as one continuous lane rather than a single point or a staircase, because parameter gestures are bracketed for the host.
Automation plays back sample-accurately, including host-scheduled parameter ramps.
Offline bounces keep the whole tail. The plugin reports a tail length of up to about 75 seconds, so a fast bounce does not cut a Cathedral decay off at the region edge.
The editor window resizes and the panel scales with it in every host.
Editor panel
Eighteen controls in five labelled groups, input and output metering down both sides, and a preset browser. Four skins are compiled into the binary and the choice of skin follows the user across formats.
Panel screenshots are not published yet. Expected at panel-01.png, panel-02.png, panel-03.png and panel-04.png.
Signal architecture
The topology is a two-stage feedback delay network. A 3x3 early-reflection stage feeds a 6x6 late field.
The morph is a Householder matrix, A(t) = I - 2 v(t) v(t)^T, where v(t)
drifts continuously across the unit 5-sphere by spherical interpolation. The
matrix preserves vector norm at every point along the path.
The late-field order is six channels. See mixing order and detail for the reason.
Air is room-tone injection, layered independently of the matrix morph.
The DSP core is C++20 with no dependencies and no framework types crossing its boundary.
The audio path performs no allocation, takes no locks and does no I/O. A test asserts this and fails the build when it is violated.
Prior work
The delay-length tables and several coefficients derive from the MIT-licensed Airwindows sources by Chris Johnson. His work on sparse structured reverb topologies is the foundation of this design. The notice is retained in full.
Johnson’s networks are time-invariant, and their liveness comes from perturbing the input to a fixed system. The time-varying matrix in SD-Reverb is this project’s own contribution.
System requirements
macOS 11 Big Sur or later, on Apple Silicon or Intel. One universal installer covers both.
Windows 10 or later, 64-bit, on x86_64 or arm64, each with its own installer. The editor requires Microsoft’s Edge WebView2 runtime. Windows 11 ships it, and on Windows 10 it arrives with Edge.
Linux on x86_64 or arm64, with glibc 2.34 or newer and GCC 11’s libstdc++. That covers Ubuntu 22.04, Debian 12 and later releases. The editor is WebKitGTK, and GTK 3, WebKitGTK 4.1, libsoup3 and X11 are linked in rather than loaded on demand, so all four are hard requirements. A host cannot load the plugin without them. This excludes the RHEL 9 family, which meets both code floors but ships an older WebKitGTK, and every musl distribution such as Alpine.
A CLAP, VST3 or Audio Unit host. Logic Pro, Bitwig Studio, Reaper and Ableton Live are among them. The Audio Unit is macOS only.
Downloads
No version has been cut, so there is nothing to download from this page yet and no release date is set.
The macOS release will be one installer covering Apple Silicon and Intel together. It includes CLAP, VST3, the Audio Unit and the preset bank, and offers a choice of which formats to install.
The Windows release will be two installers, one for x86_64 and one for arm64, each offering CLAP and VST3.
The Linux release will be two archives, one for x86_64 and one for arm64. Each
carries CLAP, VST3, the preset bank and an install.sh that installs into the
user’s home directory. It never requires root and it can remove what it
installed.
The manual ships as a PDF alongside.
None of it will be code-signed. There is no Apple Developer ID and no Authenticode certificate. The annual fee changes nothing about the software. macOS and Windows both refuse an unsigned installer on first open. That refusal reports the absence of a certificate, and getting past it takes one action on the downloaded file. Step-by-step instructions will sit beside the download and ship inside the package. They will never ask for Gatekeeper or SmartScreen to be turned off.