clouds
clouds · effectsGranular 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.
the faceplate
10 inputs · 2 outputs · 7 params
inputs
| id | cable | what it does |
|---|---|---|
in_l | audio | Left 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_r | audio | Right 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 |
pitch | pitch | V/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_gate | gate | A 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_cv | cv | CV 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_cv | cv | CV 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_cv | cv | CV 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_cv | cv | CV 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_cv | cv | CV 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_cv | cv | CV 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
| id | cable | what it does |
|---|---|---|
out_l | audio | Left 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_r | audio | Right channel of the granular output, blended with the dry input per BLEND. audio signal; L/R stereo pair with out_l |
params
| id | label | range | default | curve |
|---|---|---|---|---|
position | Position | 0..1 | 0.5 | linear |
size | Size | 0..1 | 0.5 | linear |
pitch | Pitch | -24..24st | 0 | linear |
density | Density | 0..1 | 0.5 | linear |
texture | Texture | 0..1 | 0.5 | linear |
blend | Blend | 0..1 | 0.5 | linear |
freeze | Freeze | 0..1 | 0 | discrete |
controls
| control | what it does |
|---|---|
| Blend | Dry / 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. |
| Density | How densely grains are triggered (0..1). Low density leaves audible gaps (sparse, pointillist); high density packs grains into a continuous wash. |
| Freeze | Freeze 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. |
| Pitch | Per-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. |
| Position | Playhead 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. |
| Size | Grain 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. |
| Texture | Grain-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.