cloudseed
cloudseed · effects · schema v1Exact algorithm port of Ghost Note Audio's CloudSeed reverb (MIT-licensed, github.com/GhostNoteAudio/CloudSeedCore). Stereo input cross-mixes then per-channel passes through: optional 1-pole HP + LP pre-EQ → modulated pre-delay → multitap early-reflection field (up to 256 taps, seed-deterministic) → AllpassDiffuser (up to 12 stages) → 12 parallel late-field DelayLine voices, each with optional in-loop AllpassDiffuser + LowShelf + HighShelf + LP, with T60-targeted feedback that produces a precise decay-seconds tail. Cross-seed control divides the L/R seeded delay layouts for stereo decorrelation. 45 parameters total — 7 macros (DRY / EARLY / LATE faders, INPUT MIX, LOW CUT, HIGH CUT, CROSS SEED) are exposed as AudioParams for CV summing; 38 toggle/integer/seed/modulation parameters live on the worklet's message port. Bundled v1 preset bank: DIVINE INSPIRATION (DarkPlate from Programs.h verbatim), SHORT ROOM, BRIGHT HALL, INFINITE PAD. Card footer cycles through the preset bank with click-numbered slots, prev/next arrows, and a live DECAY readout that reflects LateLineDecay's computed RT60.
the faceplate
inputs
| id | cable | what it does |
|---|---|---|
in_l | audio | Left audio input into the reverb tank. Pairs with IN R as the stereo source; patch a mono signal into either to feed both via the input-mix stage. audio signal; L/R stereo pair with in_r — L-only auto-duplicates to R |
in_r | audio | Right audio input into the reverb tank, partnering IN L for the stereo source. audio signal; L/R stereo pair with in_l |
dry_cv | cv | CV that offsets the DRY output-mix macro (0..1, ±1 CV sweeps the full span around the knob): raise the level of the unprocessed signal in the output blend. control voltage (CV); modulates dry_out (additive offset — ±1 CV sweeps the full range, centered on the knob) |
early_cv | cv | CV that offsets the EARLY output-mix macro: raise the level of the early-reflections/diffusion layer in the blend. control voltage (CV); modulates early_out (additive offset — ±1 CV sweeps the full range, centered on the knob) |
late_cv | cv | CV that offsets the LATE output-mix macro: raise the level of the long reverberant tank in the blend — modulate it for swells. control voltage (CV); modulates late_out (additive offset — ±1 CV sweeps the full range, centered on the knob) |
input_mix_cv | cv | CV that offsets the INPUT MIX macro (pre-tank mid/side balance), shifting how the stereo source is summed into the reverb. control voltage (CV); modulates input_mix (additive offset — ±1 CV sweeps the full range, centered on the knob) |
low_cut_cv | cv | CV that offsets the LOW CUT macro — the input high-pass corner — to thin or thicken the lows entering the tank. control voltage (CV); modulates low_cut (additive offset — ±1 CV sweeps the full range, centered on the knob) |
high_cut_cv | cv | CV that offsets the HIGH CUT macro — the output low-pass corner — to darken or brighten the wet signal. control voltage (CV); modulates high_cut (additive offset — ±1 CV sweeps the full range, centered on the knob) |
cross_seed_cv | cv | CV that offsets the CROSS SEED macro, de-correlating the left/right tank layouts for a wider (or narrower) stereo image as it moves. control voltage (CV); modulates cross_seed (additive offset — ±1 CV sweeps the full range, centered on the knob) |
outputs
| id | cable | what it does |
|---|---|---|
out_l | audio | Left channel of the wet+dry reverb mix (dry + early + late, post-EQ and post-high-cut). Pair with OUT R to keep the stereo width. audio signal; L/R stereo pair with out_r |
out_r | audio | Right channel of the wet+dry reverb mix, the partner of OUT L. audio signal; L/R stereo pair with out_l |
params
| id | label | range | default | curve |
|---|---|---|---|---|
dry_out | Dry | 0..1 | 0.87 | linear |
early_out | Early | 0..1 | 0 | linear |
late_out | Late | 0..1 | 0.66 | linear |
input_mix | Input Mix | 0..1 | 0.23 | linear |
low_cut | Low Cut | 0..1 | 0.64 | linear |
high_cut | High Cut | 0..1 | 0.29 | linear |
cross_seed | Cross Seed | 0..1 | 0 | linear |
preset_index | Preset | 0..? | 0 | discrete |
controls
| control | what it does |
|---|---|
| Cross Seed | CROSS SEED — inter-channel seed offset: blends the left tank's random layout toward an inverted seed so the two channels de-correlate, widening the stereo image (0 = identical L/R, up = wider). CV via the X-SEED input. |
| Dry | DRY output level — how much of the unprocessed input is in the blend (0 = fully wet/muted dry, up = louder dry). Internally a dB fader (−30 dB..0 dB; the bottom reads MUTED). CV via the DRY input. |
| Early diffuse count | DIFFUSION STAGES — number of cascaded all-pass diffusers (1..12); more stages smear the early reflections into a smoother, denser cloud. |
| Early diffuse delay | DIFFUSION DELAY — the per-stage all-pass delay length (ms), setting the grain/texture of the early diffusion. |
| Early diffuse enabled | DIFFUSION enable (the panel ON/OFF) — switches the early all-pass diffusion network (which smears the taps into a denser cloud) in or out. |
| Early diffuse feedback | DIFFUSION FEEDBACK — the all-pass feedback coefficient (0..100%); higher thickens and lengthens the early diffusion. |
| Early diffuse mod amt | DIFFUSION MOD AMT — how much the early diffusers' delays are modulated, adding chorusing/shimmer to the early field. |
| Early diffuse mod rate | DIFFUSION MOD RATE — the LFO rate (Hz) of the early-diffusion modulation. |
| Early | EARLY output level — the early-reflections/diffusion layer in the blend (dB fader, MUTED at the bottom). CV via the EARLY input. |
| Eq cutoff | EQ CUTOFF — the corner frequency (Hz) of the wet-path lowpass. |
| Eq high freq | EQ HI FREQ — the corner frequency (Hz) of the wet-path high shelf. |
| Eq high gain | EQ HI GAIN — boost/cut (dB) of the high shelf, brightening or darkening the tail. |
| Eq high shelf enabled | EQ HIGH SHELF enable (the HS pill) — switches the wet-path high shelf in or out. |
| Eq low freq | EQ LO FREQ — the corner frequency (Hz) of the wet-path low shelf. |
| Eq low gain | EQ LO GAIN — boost/cut (dB) of the low shelf, warming or thinning the reverb tail. |
| Eq low shelf enabled | EQ LOW SHELF enable (the LS pill) — switches the wet-path low shelf in or out. |
| Eq lowpass enabled | EQ LOWPASS enable (the LP pill) — switches the wet-path lowpass (set by EQ CUTOFF) in or out. |
| High Cut | HIGH CUT — the output low-pass filter corner (~400 Hz–20 kHz); darkens the wet signal. Engaged by the HIC ON/OFF toggle. CV via the HI CUT input. |
| High cut enabled | HIGH CUT enable (the HIC pill) — switches the output low-pass filter (set by HIGH CUT) in or out of circuit. |
| Input Mix | INPUT MIX — the pre-tank mid/side balance of the stereo source feeding the reverb (0..1). CV via the IN MIX input. |
| Interpolation | INTERPOLATION on/off — enables fractional-delay interpolation in the tank for smoother modulation (cleaner pitch movement) at a small CPU cost. |
| Late diffuse count | LATE DIFFUSION COUNT — number of all-pass diffusers in the late tank (1..8); more = a smoother, more washed-out tail. |
| Late diffuse delay | LATE DIFFUSION DELAY — the per-stage all-pass delay (ms) inside the late tank, shaping its texture. |
| Late diffuse enabled | LATE DIFFUSION enable (the panel ON/OFF) — switches the all-pass diffusion stage inside the late tank in or out. |
| Late diffuse feedback | LATE DIFFUSION FEEDBACK — feedback coefficient of the late-tank diffusers (0..100%); higher lengthens and thickens the diffuse tail. |
| Late diffuse mod amt | LATE DIFFUSION MOD AMT — modulation depth of the late-tank diffusers, adding shimmer to the tail. |
| Late diffuse mod rate | LATE DIFFUSION MOD RATE — the LFO rate (Hz) of the late-diffusion modulation. |
| Late line count | LATE LINE COUNT — number of parallel delay lines in the reverb tank (1..12); more lines = a denser, smoother tail. |
| Late line decay | LATE LINE DECAY — the reverb time / RT60 of the tank (the live DECAY readout): how long the tail takes to die away, from a short room to the near-infinite pad. |
| Late line mod amt | LATE LINE MOD AMT — how much the tank delay lines are modulated, adding movement and de-metallizing long tails. |
| Late line mod rate | LATE LINE MOD RATE — the LFO rate (Hz) of the tank delay-line modulation. |
| Late line size | LATE LINE SIZE — the delay-line length (ms) of the tank, i.e. the perceived size of the space (short = small room, long = big hall). |
| Late mode | LATE MODE (PRE/POST) — whether the late tank's diffusion sits before (PRE) or after (POST) its delay lines, changing how the tail builds. |
| Late | LATE output level — the long reverberant tank in the blend, the main "reverb" you hear (dB fader, MUTED at the bottom). CV via the LATE input. |
| Low Cut | LOW CUT — the input high-pass filter corner (mapped along CloudSeed's frequency curve, ~20 Hz–1 kHz); rolls off lows before they enter the tank. Engaged by the LOC ON/OFF toggle. CV via the LO CUT input. |
| Low cut enabled | LOW CUT enable (the LOC pill) — switches the input high-pass filter (set by LOW CUT) in or out of circuit. |
| Preset | The active preset slot in the bundled bank (DIVINE INSPIRATION / SHORT ROOM / BRIGHT HALL / INFINITE PAD). Clicking a footer slot, or the ‹ / › arrows, writes that whole preset (every macro + message-port value) into the module so all collaborators see the same space. |
| Seed delay | DELAY SEED — the random seed for the late tank's delay-line lengths; reshapes the tail's modal structure. |
| Seed diffusion | DIFFUSION SEED — the random seed for the diffusion all-pass layout; reshapes the diffuse texture without changing the macro settings. |
| Seed post diffusion | POST-DIFFUSION SEED — the random seed for the post-tank diffusion stage; another knob for re-rolling the late texture. |
| Seed tap | TAP SEED — the random seed for the multitap layout; change it to audition a different early-reflection pattern at the same settings. |
| Tap count | TAP COUNT — how many discrete early taps the multitap layer fires (1..256); more taps = denser early reflections. |
| Tap decay | TAP DECAY — how quickly successive taps fall in level (0..100%); higher = the early taps die away faster. |
| Tap enabled | TAPS enable (the panel ON/OFF) — switches the multitap early-echo layer in or out. |
| Tap length | TAP LENGTH — the total time span (ms) the taps are spread across; longer = the early-reflection cluster lasts longer. |
| Tap predelay | TAP PRE-DELAY — a gap (ms) before the first tap, pushing the early reflections later for a sense of a larger or more distant space. |
source
cloudseed.ts on GitHub.