Truce Fundsp Reverb (worker)
Stereo plate reverb built on the fundsp graph DSL — production-shaped integration pattern. Not for production use.

This is a teaching example for integrating the fundsp graph DSL inside a truce plugin. The signal flow is straightforward — high-pass → low-pass → reverb_stereo bussed against a dry path — but the interesting part is the thread structure around the graph rebuild.
The worker variant rebuilds the fundsp graph on a dedicated background thread and hands the finished graph to the audio thread through three lock-free queues (`requests`, `ready`, `discard`). `process()` never calls `Box::new`, never calls `graph.allocate()`, and never drops a graph. This is the shape you want for shipping fundsp-backed DSP.
Not intended for production use. fundsp's `reverb_stereo` bakes RT60 into the FDN's feedback gains at construction, so every Time change forces a full graph rebuild — and a fresh graph means the reverb's delay lines reset, dropping the tail. Moving the Time knob mid-playback audibly cuts the reverb. The example exists to demonstrate the integration shape (Shared atomics, `var()` reads, the worker-thread + atomic-swap pattern), not to be a usable plate reverb.
For the simpler variant that rebuilds inline on the audio thread (rt-unsafe but easier to read top-to-bottom), see Truce Fundsp Reverb (simple).
See the fundsp integration guide on this site for a walk-through of both variants, the rebuild trigger, and why the threshold + raw-target read are wired the way they are.
Formats
Platforms