Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Delays & Reverb

Source of truth: the doc comments on each module struct in patches-modules/src/ define the canonical port names, parameter ranges, and behaviour. This page is kept in sync with those comments.


Delay — Mono multi-tap delay

One shared 4-second delay buffer with N independent read taps. Each tap has its own delay time, gain, feedback, tone, and drive. All tap feedbacks sum back into the buffer write before the next sample. N is set by channels.

module dly : Delay(channels: 2) {
    delay_ms[0]: 250,
    delay_ms[1]: 375,
    feedback[0]: 0.4,
    feedback[1]: 0.3,
    dry_wet:     1.0
}

Parameters (global)

ParameterTypeRangeDefaultDescription
dry_wetfloat0–11.0Crossfade between dry input and wet tap sum

Parameters (per tap i)

ParameterTypeRangeDefaultDescription
delay_ms[i]int0–2000500Tap delay time in milliseconds
gain[i]float0–11.0Tap output gain
feedback[i]float0–10.0Tap feedback amount (sent back into write)
tone[i]float0–11.0High-frequency roll-off in the feedback path (1 = bright, 0 = dark)
drive[i]float0.1–101.0Soft-clip drive in the feedback path

Inputs

PortDescription
inMono audio input
drywet_cvAdditive CV for dry_wet
sync_ms[0]sync_ms[n-1]When connected, overrides delay_ms[i] with the input value in ms
delay_cv[0]delay_cv[n-1]Additive CV for delay time (±1 scales ±100%)
gain_cv[0]gain_cv[n-1]Additive CV for tap gain
fb_cv[0]fb_cv[n-1]Additive CV for feedback amount
return[0]return[n-1]Pre-gain return signal per tap (added after the raw tap read)

Outputs

PortDescription
outDry/wet mixed output
send[0]send[n-1]Pre-gain tap signal per tap (before return mixing)

StereoDelay — Stereo multi-tap delay

Two 4-second delay buffers (L and R) sharing a single set of N read taps. Each tap has pan, and an optional pingpong mode that cross-routes feedback (L→R, R→L). N is set by channels.

module dly : StereoDelay(channels: 2) {
    delay_ms[0]: 300,
    delay_ms[1]: 450,
    feedback[0]: 0.35,
    feedback[1]: 0.35,
    pingpong[0]: true,
    pingpong[1]: true,
    pan[0]:      -0.3,
    pan[1]:       0.3
}

Parameters (global)

ParameterTypeRangeDefaultDescription
dry_wetfloat0–11.0Crossfade between dry input and wet tap sum

Parameters (per tap i)

ParameterTypeRangeDefaultDescription
delay_ms[i]int0–2000500Tap delay time in milliseconds
gain[i]float0–11.0Tap output gain
feedback[i]float0–10.0Tap feedback amount
tone[i]float0–11.0HF roll-off in feedback path (1 = bright, 0 = dark)
drive[i]float0.1–101.0Soft-clip drive in feedback path
pan[i]float−1–+10.0Stereo pan position (−1 = full left, +1 = full right)
pingpong[i]boolfalseCross-route feedback: L feedback→R buffer, R feedback→L buffer

Inputs

PortDescription
inStereo audio input
drywet_cvAdditive CV for dry_wet
sync_ms[0]sync_ms[n-1]When connected, overrides delay_ms[i] with the input value in ms
delay_cv[0]delay_cv[n-1]Additive CV for delay time
gain_cv[0]gain_cv[n-1]Additive CV for tap gain
fb_cv[0]fb_cv[n-1]Additive CV for feedback amount
pan_cv[0]pan_cv[n-1]Additive CV for tap pan
return[0]return[n-1]Pre-gain stereo return per tap

Outputs

PortDescription
outStereo dry/wet mixed output
send[0]send[n-1]Pre-gain stereo tap signal per tap

FdnReverb — Stereo FDN reverb

An 8-line feedback delay network (FDN) with Hadamard mixing matrix, per-line high-shelf absorption, Thiran all-pass interpolation for LFO-modulated reads, and stereo output via orthogonal output gain vectors. Five character archetypes control the room model; size and brightness sweep within each archetype.

module verb : FdnReverb {
    character: hall,
    size:       0.6,
    brightness: 0.5,
    pre_delay:  0.3,
    mix:        0.8
}

Parameters

ParameterTypeRangeDefaultDescription
characterenumplate / room / chamber / hall / cathedralhallRoom archetype — sets delay-line scaling, LFO rate/depth, pre-delay length, and decay curve shape
sizefloat0–10.5Room size within the archetype: 0 = smallest/shortest, 1 = largest/longest
brightnessfloat0–10.5High-frequency decay ratio: 0 = dark (HF decays much faster), 1 = bright (HF/LF decay close together)
pre_delayfloat0–10.0Additional pre-delay (additive with size): 0 = no extra, 1 = maximum for the archetype
mixfloat0–11.0Dry/wet mix: 0 = fully dry, 1 = fully wet

Character archetypes

NameRT60 range (LF)Pre-delayCharacter
plate0.3 s – 1.5 sup to 10 msDense, smooth; no sense of room geometry
room0.4 s – 2.5 sup to 25 msSmall to mid-size room with clear early reflections
chamber0.3 s – 2.0 sup to 20 msTight, controlled decay; studio chamber character
hall0.8 s – 5.0 sup to 50 msConcert hall — the default
cathedral1.5 s – 8.0 sup to 80 msVery long, diffuse reverb tail

Inputs

PortDescription
inStereo audio input (mono sources are silently broadcast L = R)
size_cvAdditive CV for size
brightness_cvAdditive CV for brightness
pre_delay_cvAdditive CV for pre_delay
mix_cvAdditive CV for mix

Outputs

PortDescription
outStereo reverb output

Convolution reverb (external bundle)

ConvReverb and StereoConvReverb are not part of the in-tree patches-modules crate. They ship from the external patches-fft-bundle and are loaded at runtime by the plugin scanner — see Implementing a native plugin for how host-loaded bundles work.