cloudseed

cloudseed · effects

Exact 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.

An algorithmic reverb — an exact port of Ghost Note Audio's open-source CloudSeed. The very first stage is the INPUT MIX cross-feed, and each channel's ENTIRE path — the dry tap included — hears its output. From there the wet path is one serial chain: the cross-fed input passes the input LOW CUT high-pass and HIGH CUT low-pass (when enabled), then the PRE-DELAY, then TAPS (a seeded multitap layer of sparse early echoes, when enabled), then EARLY DIFFUSION (cascaded all-passes that smear the echoes into a cloud, when enabled), and finally feeds the LATE tank — up to 12 parallel modulated delay lines whose feedback is tuned so the tail dies 60 dB in exactly the DECAY seconds (the RT60 hero readout). The output blend is three faders: DRY (each channel's post-INPUT-MIX input, tapped ahead of the cut filters and the rest of the wet chain), EARLY (the wet path tapped just before the tank), and LATE (the tank sum). The EQ shelves + lowpass sit INSIDE each tank line's feedback loop, so their cut compounds with every recirculation — progressive damping that only shapes the late tail. Every stage's layout is rolled from a SEED (tap / diffusion / delay / post-diffusion), and CROSS SEED sets how much the two channels' layouts converge: 0 keeps L and R fully independent (widest), 100% makes both tanks identical. Seven macros (the three output faders, input mix, both cut corners, cross seed) are CV-able AudioParams; the other 38 parameters travel over the worklet's message port. A bundled preset bank jumps between four spaces (DIVINE INSPIRATION / SHORT ROOM / BRIGHT HALL / INFINITE PAD).

the faceplate

cloudseedin_laudioin_raudiodry_cvcvearly_cvcvlate_cvcvinput_mix_cvcvlow_cut_cvcvhigh_cut_cvcvcross_seed_cvcvout_laudioout_raudioaudiocvgatepitch
9 inputs · 2 outputs · 8 params

inputs

idcablewhat it does
in_laudioLeft audio input into the reverb. Pairs with IN R as the stereo source; a signal patched into only one side is mirrored to both channels, so a mono source still excites both stereo tanks.
audio signal; L/R stereo pair with in_r — L-only auto-duplicates to R
in_raudioRight audio input into the reverb, partnering IN L for the stereo source (same mono-mirroring when patched alone).
audio signal; L/R stereo pair with in_l
dry_cvcvCV that offsets the DRY output-mix macro (0..1, ±1 CV sweeps the full span around the knob): raise the level of the un-reverbed (post-INPUT-MIX) signal in the output blend.
control voltage (CV); modulates dry_out (additive offset — ±1 CV sweeps the full range, centered on the knob)
early_cvcvCV that offsets the EARLY output-mix macro: raise the level of the pre-tank stage (pre-delay + taps + diffusion) in the blend.
control voltage (CV); modulates early_out (additive offset — ±1 CV sweeps the full range, centered on the knob)
late_cvcvCV 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_cvcvCV that offsets the INPUT MIX macro — the front-of-path stereo cross-feed that everything (dry tap included) hears — sliding the two channel feeds from fully independent L/R toward the same mono average.
control voltage (CV); modulates input_mix (additive offset — ±1 CV sweeps the full range, centered on the knob)
low_cut_cvcvCV that offsets the LOW CUT macro — the wet-path input high-pass corner — to thin or thicken the lows entering the reverb.
control voltage (CV); modulates low_cut (additive offset — ±1 CV sweeps the full range, centered on the knob)
high_cut_cvcvCV that offsets the HIGH CUT macro — the wet-path input low-pass corner — to darken or brighten what enters the reverb.
control voltage (CV); modulates high_cut (additive offset — ±1 CV sweeps the full range, centered on the knob)
cross_seed_cvcvCV that offsets the CROSS SEED macro, sweeping the L/R tank layouts between fully independent (wide, de-correlated tail) and identical (centered).
control voltage (CV); modulates cross_seed (additive offset — ±1 CV sweeps the full range, centered on the knob)

outputs

idcablewhat it does
out_laudioLeft channel of the output blend — the DRY, EARLY, and LATE faders summed. Pair with OUT R to keep the stereo width.
audio signal; L/R stereo pair with out_r
out_raudioRight channel of the output blend, the partner of OUT L.
audio signal; L/R stereo pair with out_l

params

idlabelrangedefaultcurve
dry_outDry0..10.87linear
early_outEarly0..10linear
late_outLate0..10.66linear
input_mixInput Mix0..10.23linear
low_cutLow Cut0..10.64linear
high_cutHigh Cut0..10.29linear
cross_seedCross Seed0..10linear
preset_indexPreset0..?0discrete

controls

controlwhat it does
Cloudseed clear {n}CLEAR TAIL — flushes the reverb instantly: every tap, early-diffusion all-pass and late-tank delay line (and their in-loop shelves and lowpass) is zeroed, so whatever is still ringing stops on the spot. It changes no setting and is not undoable — the space is unchanged, only its current contents are dropped. The gesture DECAY makes necessary: at the long end the tail runs ~60 seconds, and INFINITE PAD parks near it.
Cross SeedCROSS SEED — L/R layout convergence: at 0 each channel rolls a fully independent seeded layout (the widest, most de-correlated tail); raising it blends both channels toward one shared layout until at 100% the L and R tanks are identical (a centered, mono-correlated wet). CV via the X-SEED input.
DryDRY output level — how much un-reverbed input is in the blend. The dry tap is taken AFTER the INPUT MIX cross-feed (so raising INPUT MIX narrows the dry signal itself) but ahead of the cut filters, pre-delay, and the rest of the wet chain. Internally a dB fader (−30 dB..0 dB; the bottom reads MUTED). CV via the DRY input.
Early diffuse countEARLY DIFFUSION STAGES — number of cascaded all-pass diffusers (1..12); more stages smear the early reflections into a smoother, denser cloud.
Early diffuse delayEARLY DIFFUSION DELAY — the base all-pass delay (10..100 ms); each stage sits at a seeded fraction of it, setting the grain/texture of the early diffusion.
Early diffuse enabledEARLY DIFFUSION enable — switches the cascaded all-pass network (which smears the taps into a denser cloud) in or out.
Early diffuse feedbackEARLY DIFFUSION FEEDBACK — the all-pass feedback coefficient (0..100%); higher thickens and lengthens the early diffusion.
Early diffuse mod amtEARLY DIFFUSION MOD AMT — how deeply the diffusers' delays are modulated, adding chorusing/shimmer to the early field (modulation engages once the depth clears a small threshold).
Early diffuse mod rateEARLY DIFFUSION MOD RATE — the LFO rate (0..5 Hz, per-stage seeded variation) of the early-diffusion modulation.
EarlyEARLY output level — the wet path tapped just before the tank: the pre-delayed input plus TAPS and EARLY DIFFUSION when those stages are on (dB fader, MUTED at the bottom). CV via the EARLY input.
Eq cutoffEQ CUTOFF — the corner frequency (~400 Hz–20 kHz) of the in-loop lowpass.
Eq high freqEQ HI FREQ — the corner frequency (~400 Hz–20 kHz) of the in-loop high shelf.
Eq high gainEQ HI GAIN — cut-only shelf gain (−20..0 dB; 0 = no cut) applied to the highs on every pass, progressively darkening the tail as it decays.
Eq high shelf enabledEQ HIGH SHELF enable — switches the in-loop high shelf in or out; per-pass high damping is the classic dark-tail move.
Eq low freqEQ LO FREQ — the corner frequency (~20 Hz–1 kHz) of the in-loop low shelf.
Eq low gainEQ LO GAIN — cut-only shelf gain (−20..0 dB; 0 = no cut) applied to the lows on every pass through the loop, progressively thinning the tail's bottom as it decays.
Eq low shelf enabledEQ LOW SHELF enable — switches the low shelf inside each tank line's feedback loop in or out; its cut compounds with every recirculation (late tail only — dry/early are untouched).
Eq lowpass enabledEQ LOWPASS enable — switches the in-loop lowpass (set by EQ CUTOFF) in or out for the steepest progressive darkening.
High CutHIGH CUT — the wet-path input low-pass corner (~400 Hz–20 kHz); darkens everything entering the reverb (the dry path is untouched). In circuit only while HIGH CUT ENABLE is on. CV via the HI CUT input.
High cut enabledHIGH CUT enable — switches the wet-path input low-pass (set by HIGH CUT) in or out of circuit.
Input MixINPUT MIX — the stereo cross-feed at the very front of the reverb (0..1), ahead of each channel's ENTIRE path (wet chain AND dry tap alike): at 0 each channel's path is fed its own input untouched; raising it blends in the opposite channel until at 1 both paths receive the same (L+R)/2 mono average. Because the dry tap sits after it, raising it also pulls the DRY signal toward mono — not just the reverb feed. CV via the IN MIX input.
InterpolationINTERPOLATION on/off — enables smooth fractional-delay reads in the late tank's diffusers for cleaner modulation (less zipper/pitch grit) at a small CPU cost.
Late diffuse countLATE DIFFUSION COUNT — number of all-pass stages inside each tank line (1..8); more = a smoother, more washed-out tail.
Late diffuse delayLATE DIFFUSION DELAY — the base all-pass delay (10..100 ms) inside each tank line, shaping the tail's texture.
Late diffuse enabledLATE DIFFUSION enable — switches the all-pass diffuser inside each tank line's feedback loop in or out.
Late diffuse feedbackLATE DIFFUSION FEEDBACK — feedback coefficient of the in-line diffusers (0..100%); higher lengthens and thickens the diffuse tail.
Late diffuse mod amtLATE DIFFUSION MOD AMT — modulation depth of the in-line diffusers, adding shimmer to the tail.
Late diffuse mod rateLATE DIFFUSION MOD RATE — the LFO rate (0..5 Hz) of the late-diffusion modulation.
Late line countLATE LINE COUNT — number of parallel delay lines in the reverb tank (1..12); more lines = a denser, smoother tail.
Late line decayDECAY — the reverb time / RT60 (0.05 s..60 s, the hero readout): each line's feedback is computed so the tail falls 60 dB in exactly this many seconds, from a tight room to a near-infinite pad.
Late line mod amtLATE LINE MOD AMT — how deeply the tank delay lines are modulated, adding movement and de-metallizing long tails.
Late line mod rateLATE LINE MOD RATE — the LFO rate (0..5 Hz, per-line seeded variation) of the tank delay-line modulation.
Late line sizeLATE LINE SIZE — the base delay-line length (20..1000 ms), i.e. the perceived size of the space; each of the 12 lines rolls a seeded 0.5×..1.5× of it.
Late modeLATE MODE (PRE/POST) — where each tank line's output is tapped: PRE taps straight off the delay line (its diffuser + EQ shape only the recirculating feedback); POST taps after the diffuser + EQ, so you hear them directly on every echo.
LateLATE output level — the tank sum in the blend, the main "reverb" you hear (dB fader, MUTED at the bottom). CV via the LATE input.
Low CutLOW CUT — the wet-path input high-pass corner (mapped along CloudSeed's frequency curve, ~20 Hz–1 kHz); rolls off lows before they enter the reverb (the dry path is untouched). In circuit only while LOW CUT ENABLE is on. CV via the LO CUT input.
Low cut enabledLOW CUT enable — switches the wet-path input high-pass (set by LOW CUT) in or out of circuit.
PresetThe active preset slot in the bundled bank (DIVINE INSPIRATION / SHORT ROOM / BRIGHT HALL / INFINITE PAD). Selecting a slot writes that whole preset — every macro AND every message-port value — into the module as ONE undoable edit, so the sound, the saved rack and every collaborator agree. Because the recall is a graph edit rather than a hidden push to the reverb, a rack-mate sees all 46 knobs move.
Seed delayDELAY SEED (000–999) — the random seed for the tank's delay-line lengths; reshapes the tail's modal structure.
Seed diffusionDIFFUSION SEED (000–999) — the random seed for the early all-pass layout; reshapes the diffuse texture without changing the knob settings.
Seed post diffusionPOST-DIFFUSION SEED (000–999) — the random seed for the diffusers inside the tank lines (each line derives its own from it); another dial for re-rolling the late texture.
Seed tapTAP SEED (000–999) — the random seed for the multitap layout; change it to audition a different early-reflection pattern at the same settings.
Tap countTAP COUNT — how many discrete early taps the multitap layer fires (1..256); more taps = denser early reflections.
Tap decayTAP DECAY — the level slope across the tap cluster (0..100%): at 0% every tap is equal; raising it makes later taps fall away exponentially.
Tap enabledTAPS enable — switches the seeded multitap early-echo stage in or out (when on it colors both the EARLY output and what feeds the tank).
Tap lengthTAP LENGTH — the total time span (10..1000 ms) the taps are spread across; longer = the early-reflection cluster lasts longer.
Tap predelayPRE-DELAY — a 0..500 ms gap ahead of the entire wet path (taps, early AND late; dry is unaffected) — the classic reverb pre-delay that pushes the space back behind the source.

source

cloudseed.ts on GitHub.

Generated from packages/web/src/lib/{audio,video}/module-registry.ts · repo