clouds

clouds · effects

Granular texture processor (Mutable Instruments Clouds archetype, Émilie Gillet, 2014, MIT-licensed) — 2-second stereo ring buffer + overlap-added grain cloud (up to 24 grains) + latched FREEZE. Six macros (Position / Size / Pitch / Density / Texture / Blend) with V/oct grain-pitch tracking on the pitch input. v1 ships GRANULAR mode only; STRETCH / LOOPING-DELAY / SPECTRAL modes deferred to follow-up.

A granular texture processor after Mutable Instruments' Clouds. It continuously records the incoming stereo audio into a short ring buffer, then sprays overlapping grains — tiny windowed snippets — out of that buffer to recombine the sound into a shimmering cloud, a smeared pad, a pitch-shifted drone, or a frozen ambient texture. POSITION picks where in the buffer the grains read from, SIZE sets each grain's length, DENSITY sets how many grains overlap, TEXTURE morphs the grain window from soft to hard, PITCH transposes the grains, and FREEZE latches the buffer so the texture keeps playing with no fresh input. BLEND crossfades the grain cloud against the dry signal. Mental model: it turns any source into a controllable swarm of micro-loops. IT IS SILENT WHEN YOU PATCH IT, and that is the module rather than a fault: the ring is empty at spawn, a grain always starts at least one grain-length behind the write head, and until the head has written that far there is nothing to read — so the wet path is bit-zero for exactly one grain length (300 ms at the shipped SIZE, 60 ms at SIZE 0, 1500 ms at the top) and then runs about 12 dB below its steady level until the whole 2-second ring has been written. Full level arrives at 2.0 s plus one more grain. The same silence recurs on every FREEZE taken before anything was recorded.

the faceplate

cloudsin_laudioin_raudiopitchpitchfreeze_gategateposition_cvcvsize_cvcvpitch_cvcvdensity_cvcvtexture_cvcvblend_cvcvout_laudioout_raudioaudiocvgatepitch
10 inputs · 2 outputs · 7 params

inputs

idcablewhat it does
in_laudioLeft channel of the stereo source continuously written into the granular ring buffer (unless FREEZE is engaged, which stops new writes).
audio signal; L/R stereo pair with in_r — L-only auto-duplicates to R
in_raudioRight channel of the stereo source written into the buffer alongside in_l. If unpatched it is normalled from in_l, so a mono source into in_l alone fills both halves of the buffer and the grain cloud comes back centred rather than hard-left.
audio signal; L/R stereo pair with in_l
pitchpitchV/oct pitch input that sums with the PITCH knob, transposing every grain — patch a sequencer or keyboard here to play the granular cloud melodically.
V/oct pitch CV
freeze_gategateA gate that toggles FREEZE on each rising edge: high-going flips the buffer between live-recording and frozen (looping the captured snapshot). Use it to capture a moment and hold the texture hands-free.
gate / trigger; trigger — fires once per rising edge
position_cvcvCV that displaces the POSITION knob, sweeping the grain read-head through the buffer — modulate it for scanning/scrubbing textures.
control voltage (CV); modulates position (additive offset — ±1 CV sweeps the full range, centered on the knob)
size_cvcvCV that displaces the SIZE knob, modulating grain length (short grains = granular stutter, long grains = smooth smear).
control voltage (CV); modulates size (additive offset — ±1 CV sweeps the full range, centered on the knob)
pitch_cvcvCV that displaces the PITCH knob in semitones (separate from the V/oct pitch input, which sums on top).
control voltage (CV); modulates pitch (additive offset — ±1 CV sweeps the full range, centered on the knob)
density_cvcvCV that displaces the DENSITY knob, modulating how many grains spawn — sweep it for swelling/thinning clouds.
control voltage (CV); modulates density (additive offset — ±1 CV sweeps the full range, centered on the knob)
texture_cvcvCV that displaces the TEXTURE knob, morphing the grain-window shape (soft Hann-like to hard rectangular).
control voltage (CV); modulates texture (additive offset — ±1 CV sweeps the full range, centered on the knob)
blend_cvcvCV that displaces the BLEND knob, modulating the dry/wet balance.
control voltage (CV); modulates blend (additive offset — ±1 CV sweeps the full range, centered on the knob)

outputs

idcablewhat it does
out_laudioLeft channel of the overlap-add granular output (the summed, normalised cloud of all active grains), blended with the dry input per BLEND.
audio signal; L/R stereo pair with out_r
out_raudioRight channel of the granular output, blended with the dry input per BLEND.
audio signal; L/R stereo pair with out_l

params

idlabelrangedefaultcurve
positionPosition0..10.5linear
sizeSize0..10.5linear
pitchPitch-24..24st0linear
densityDensity0..10.5linear
textureTexture0..10.5linear
blendBlend0..10.5linear
freezeFreeze0..10discrete

controls

controlwhat it does
BlendDry / wet balance (0..1): 0 passes the input through, 1 is the granular cloud only, between crossfades the two.
Clouds buffer {n}The RING BUFFER picture: two seconds of tape drawn newest-first, with the read window POSITION selects, one bar per concurrent grain, and the near band no grain can start inside (a grain always begins at least one grain-length behind the write head). It is the only surface that shows what POSITION does, because POSITION changes the output waveform completely while moving its level by 0.17 dB — every level-based reading of this control says it is dead. Drawn from the live macros through the grain scheduler’s own laws, so it says what the cloud IS reading rather than tracing what came out.
DensityHow densely grains are triggered (0..1). Low density leaves audible gaps (sparse, pointillist); high density packs grains into a continuous wash.
FreezeFreeze toggle (0/1): when 1, the module stops writing new audio into the buffer and loops the captured snapshot, so the texture sustains indefinitely with no fresh input. A LATCH — it stays engaged where you leave it, and clicking again releases it. Mirrored by the FREEZE button on the card and by the FRZ gate input, which toggles the same latch on each rising edge. Freezing before anything has been recorded holds the buffer at digital silence.
PitchPer-grain pitch shift in semitones (-24..+24). Sums with the V/oct PITCH input; pitch the grains up for shimmer, down for sub-octave drones.
PositionPlayhead position into the recorded buffer (0..1): where grains are sampled from. Sweep it to scrub through the captured audio; with FREEZE on it scans the held snapshot.
SizeGrain length (0..1), mapped exponentially onto 60 ms at 0 through 1500 ms at 1. Short grains give a fine granular stutter/buzz; long grains overlap into a smooth, time-stretched smear. THE WHOLE TRAVEL IS LIVE — until #1456 a grain was capped at 800 ms while the dial still asked for 1500, so its top 19.5 % rendered bit-identical output; the ceiling is now the law's own top. Two consequences of a long grain, both real and neither obvious: the module is bit-silent for one grain length after a spawn or a clear (1.5 s at the top of this dial), and POSITION's reachable window is the ring MINUS one grain, so it shrinks from 1.94 s of travel at SIZE 0 to 0.50 s at SIZE 1.
TextureGrain-window shape macro (0..1): morphs the envelope each grain fades in/out with, from a soft rounded window (gentle, smooth) to a harder edge (grittier, more pronounced grain attacks).

source

clouds.ts on GitHub.

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