soft.systems

granular instrument · the complete manual

Cumulus

Every note casts up to eight playheads across one sample. Spread and variate turn one gesture into a cloud.

A polyphonic granular instrument: up to 16 voices of 8 playheads drifting over one sample, with a drawable modulation matrix and a deep effect rack.

soft.systems · VST3 / CLAP / AUv3 · macOS & Windows & iPadOS · version 1.0

01the instrument

overview

Cumulus is a polyphonic granular instrument. It plays up to 16 voices, and each voice runs up to 8 playheads across a single sample. Per-head spread and variate turn a single gesture into a cloud. A drawable modulation matrix and an 8-slot effect rack shape it from there. Cumulus runs as VST3 and CLAP on macOS and Windows, and as a multitouch AUv3 on iPad.

how this manual is organised

Read signal flow first. Every other chapter refers back to it. Then follow the signal. The wave display, playheads and grains, spread and variate cover the sound engine. Modulation, the fx rack and envelopes cover motion and colour. The remaining chapters (the sample pool, presets, tips and techniques, troubleshooting and specifications) are reference material.

Conventions used in this manual:

  • Control names are set in code, exactly as they are printed on the plugin: SIZE, OVERLAP, VARIATE!.
  • Ranges run from low to high, with the default in parentheses: 2 ms to 10 s (90 ms).
  • "Head" always means a playhead inside a voice. "Voice" always means a single held MIDI note.

a 90-second quick start

  1. Play a note. Cumulus ships with a demo pool and defaults that make sound, so it plays as soon as you load it.
  2. Step through a few factory presets with the ◀ ▶ arrows in the top strip.
  3. Drag a numbered head square on the waveform. Drag horizontally to move it through the sample, and vertically to set its level.
  4. In the grain masters, lower SIZE for grit and raise it for smear. Raise OVERLAP for density.
  5. Press VARIATE!. The patch rolls a bounded random variation of itself. RESET brings back the pure patch.
  6. Open the matrix and tap a source chip (LFO1…). Then touch any head knob or matrix cell to route it. Drag the cell to set the depth, in percent.
  7. Pick an effect in an FX slot. Feedback effects may self-oscillate. Push the FEEDBK cells deliberately, and watch for the cells turning red as you enter the self-oscillation zone.

requirements

You need any VST3 or CLAP host on macOS or Windows, or any AUv3 host on iPadOS (AUM, Logic for iPad, Loopy Pro, Drambo…). A single instance is light on CPU at the default settings. Polyphony, head count and grains per head set the CPU load, and you control all 3. The full table is in specifications.

02the instrument

installation

macos

Run the installer. It places the plugin here:

Format Path
VST3 /Library/Audio/Plug-Ins/VST3/Cumulus.vst3
CLAP /Library/Audio/Plug-Ins/CLAP/Cumulus.clap

Rescan plugins in your host. Most hosts pick up the new bundle on the next launch. User presets live in ~/Library/Application Support/com.drowld.Cumulus/presets, as a single JSON file per preset.

To uninstall, delete the 2 bundles above. Delete the preset folder too if you want to remove everything.

The installer walkthrough (signed and notarised installer, the Gatekeeper first-launch dialog, screenshots) is added with the release build.

windows

Format Path
VST3 C:\Program Files\Common Files\VST3\Cumulus.vst3
CLAP C:\Program Files\Common Files\CLAP\Cumulus.clap

User presets live in %APPDATA%\drowld\Cumulus\data\presets. To uninstall, delete the 2 plugin files, and the preset folder if you want.

The Windows installer walkthrough, per-user and all-users install, and a SmartScreen note are added with the release build.

ipad: auv3 in aum

  1. Install Cumulus from the App Store.
  2. Launch the stand-alone app once. iPadOS registers the AUv3 extension on first launch.
  3. In AUM, add an Audio Unit Instrument and pick Cumulus.

Before your first iPad session, note the following.

  • State saves with the host session. AUM, like any AUv3 host, stores the full plugin state (parameters, drawn curves, matrix, step bars) inside its own session file. Named presets are separate and live in the plugin's own sandbox. See presets.
  • Samples import through the Files app. LOAD… opens the iPadOS document picker. Picked files are copied into the Cumulus local sample store, so a preset keeps playing even if the original file moves. A starter pool of loops is bundled, so you can play before you import anything.
  • The keyboard strip is always there. The iPad layout reserves a bottom band for a multitouch keyboard with an octave ribbon. You need no external MIDI to play.
  • Presets are local to the iPad. The AUv3 sandbox is not shared with the desktop build. Cross-device preset sync is a planned opt-in, not a current feature.

Other AUv3 hosts (Logic for iPad, Loopy Pro, Drambo) follow the same pattern: launch the app once to register it, then add Cumulus as an instrument.

AUM routing screenshots are not added yet.

03the instrument

activation

sign in once

  1. In the plugin's licence panel, choose sign in. Your browser opens this website with a short code.
  2. Sign in if you aren't already, then approve the code.
  3. The plugin installs its licence. From then on it checks the licence on this computer, offline.

One licence covers 3 computers at a time. To free a computer, deactivate it from the plugin or from your account page.

computers without internet

The plugin shows a machine ID. Paste it on your account page, download the licence file, and load it in the plugin. The file uses one of your 3 computers.

staying offline

When the plugin happens to be online, it refreshes its licence about every 60 days. If it can't reach the website, it keeps working.

On iPad, the App Store handles the licence, so there is nothing to activate.

04the instrument

signal flow

A single sample feeds up to 8 playheads inside each voice. The grain engine renders them, and the per-voice envelope shapes the amplitude. The 16 voices sum into the rack, and 8 serial effect slots finish the sound. The modulation block (4 LFOs, 2 MSEGs, a step sequencer, a random source and an envelope follower) reaches every stage through the matrix.

stage by stage

From note-on to output:

  1. Voice allocation. MODE decides what a note does. POLY takes a free voice, and steals the oldest if none is free. UNI RT retriggers every voice on every note. UNI LG plays legato: held notes change pitch without retriggering envelopes or the cloud.
  2. Head resolution (where spread applies). Each head in the voice resolves its effective parameters as master value ∘ per-head trim ∘ spread fan ∘ variate offset. Head 1 anchors the fan, and the last head gets the full spread span. With UNTIE on, the masters drop out and the per-head knobs become absolute values.
  3. The grain engine. Each head is a scan position moving through the region between START and END, by wrapping or by ping-pong. It spawns windowed grains at an interval of size ÷ overlap. Each grain has its own position jitter, pitch jitter, direction and equal-power pan. The POS TO block maps the grain's own position to pitch, volume and pan tilts.
  4. The per-voice envelope. This is the ADSR by default, or the drawn amp MSEG when MSEG is on. Either way, velocity scales it. The envelope is per voice, not per head.
  5. The voice sum. Voices sum with a master gain normalised by 1 ÷ √(head count), so adding heads thickens the sound rather than doubling the level. The envelope follower taps the signal here: after the sum, before the FX rack.
  6. The FX rack. The rack has 8 slots in series, from slot 1 into slot 8. It is global: a single rack for all voices. Every feedback loop inside an effect is soft-saturated inside the loop and never gain-compensated, so self-oscillation can build without blowing up.
  7. Master. LEVEL, then a final transparent soft-clip: unity below 0.8, then a tanh knee up to ±1.

where the matrix taps in

Global sources (the 4 LFOs, RND, ENVF, STEP) are computed once per block and reach everything. Per-voice sources (ENV, NOTE, VELO, MS1, MS2) are evaluated inside each voice, so every voice can sit at a different point of its own envelope. Targets cover every per-head parameter (per head, or all heads at once), the 9 spread amounts, master SPD, a few effect parameters, and SEL, the sample-pool selector.

per voice and global

Heads, envelopes, MS1 and MS2 are per voice. The sample pool, the LFOs, STEP, RND, ENVF, the FX rack and everything in the master strip are global.

05the engine

the wave display

The waveform view shows the loaded sample, a ruler in seconds, and a numbered square for each active playhead. You drag heads directly on the wave: horizontally for position, vertically for level. Live grains flicker around each head as the engine renders them.

loading a sample

LOAD… opens a file picker with pool behaviour built in:

  • Pick a single file and its whole parent folder becomes the pool, sorted, with your pick selected. A single action loads a kit.
  • Pick several files and exactly those files become a custom, mixed-folder pool.
  • Drag and drop onto the window to append to the current pool. If the demo pool is all you had, the drop replaces it.

Accepted formats are wav, aif / aiff, flac and mp3, mono or stereo. The pool holds up to 64 samples. Decoding happens on a background thread, so the audio never stutters while files load. The centre pill of the top strip is the pool readout (3/12 · name), and its ◀ ▶ arrows step the selection. See the sample pool for the pool as a modulation target.

On iPad, LOAD… opens the Files document picker instead, and imports are copied into the Cumulus local store. See installation.

working with heads on the wave

  • Drag a head square horizontally to set its position in the sample, and vertically to set its level. The height of the square is the head's level. The head inspector knobs and the wave handle control the same values, so you can move either.
  • Region brackets. START and END bracket the region that all heads scan inside. Grains wrap (or ping-pong) inside the brackets, so long grains loop the region rather than leaving it.
  • Live grains. The flickering marks around each head are the actual grains the engine is rendering. Their spread shows your JITTER, and their density shows your OVERLAP.
  • LINK on the wave. With LINK on, every lane mirrors head 1. The mirrored heads draw dimmed, and any head you grab edits head 1. With LINK off, each square is its own head.
  • Multitouch (iPad). Every finger is independent. Drag 2 heads with 2 fingers, or a head and a region bracket at once. Each finger stays bound to what it grabbed, so crossing fingers never swaps targets.

06the engine

playheads

Each voice runs up to 8 playheads. By default every head is a trim around the masters: effective value = master ∘ trim ∘ spread ∘ variate. The masters move the whole cloud, and the per-head knobs shade individual heads away from it.

per-head parameters

Control Range What it does
POS −100 – +100 % (0) position trim around the master position, as a fraction of the region
PIT −24 – +24 st (0) pitch trim in semitones, whole-step detented
SIZE −6 – +6 oct (0) grain-size trim, as an octave multiplier on the master size
LVL −24 – +12 dB (0) head level
PAN −50 – +50 (0) pan trim
SPD −2 – +2 × (+1) scan-speed multiplier on the master speed. Negative values run this head backwards
GRN −16 – +16 (0) grain-count trim on the master GRAINS
JIT −1 – +1 (0) position-jitter trim
OVL −6 – +6 oct (0) overlap trim, in octaves
DLY 0 – 500 ms (0) onset delay for the head's grains. This head enters late on every note
FRZ off freezes the head's scan position. Grains keep spawning at the held spot
DIR FWD per-grain read direction: FWD · REV · RND · F↔B (alternating)
MUTE off silences the head without losing its settings

adding and removing heads

The HEADS stepper sets the count, 1 to 8 (default 4). Heads are added from the low numbers up, and the spread fan re-spaces itself across the active heads. Head count also sets CPU load. The engine's worst case is voices × heads × grains, so a patch with 6 voices, 8 heads and 12 grains is a heavy load. See troubleshooting.

LINK is on by default. It makes lanes 2 to 8 mirror lane 1: you edit a single lane and the whole cloud follows, while spread still fans the mirrored values apart. This suits cloud-like patches, where a single gesture moves all 8 heads. Turn LINK off to place heads individually, for chords, canons or scattered scenes. COPY TO ALL stamps the selected head's trims onto the other 7 when you want them to converge again. It takes 2 taps, because it overwrites on purpose.

scan modes

The scan system has 3 levers, named as in the engine:

Lever Values Behaviour
SPEED (master) −2 – +2 × (0) how fast heads travel through the region, in multiples of real time. 0 holds still, so grains ring at a fixed spot. 1 is natural speed. Negative values run backwards
PING PONG WRAP / PING-PONG what happens at the region edge: wrap around to the start, or bounce and come back
per-head SPD −2 – +2 × each head multiplies the master. Use it for half-speed drones under a full-speed lead, or for a single head in reverse (F↔B textures without leaving WRAP)

FRZ overrides all of this for a single head: the scan integrator stops and the grains stay. A frozen head under moving heads makes a drone with a narration moving over it.

UNTIE and per-head size

UNTIE changes the whole relationship. The masters drop out and every per-head knob becomes that head's absolute value. POS becomes a place in the region rather than an offset. SIZE becomes a real grain length, anchored at 120 ms and scaled by the knob's octave value, so +1 oct = 240 ms and −1 oct = 60 ms. GRN counts from 4 at centre.

UNTIE is for composed patches. When each head is a distinct part (a sub drone, a mid texture, a sparkle layer), you set each head's values directly instead of following a shared master. TIE, the default, is for clouds, where a single master gesture should move everything. The readouts switch to absolute units while untied, so the knobs always show the true value.

07the engine

grains, spread and variate

The grain masters are global. They set size, overlap, jitter and scan speed for every head at once, and each head then trims around them (see playheads). Spread fans a parameter across the heads in a single gesture. Variate rolls bounded random variations, so the cloud never repeats itself.

grain parameters

Parameter Range What it does
SIZE 2 ms – 10 s (90 ms) grain length. Under about 30 ms it reads as texture and grit. Over about 300 ms it reads as smeared tape
OVERLAP 0.25 – 16 × (1.0) how many grains sound at once per head. The spawn interval is size ÷ overlap. Below 1 leaves gaps. 4 and above gives a dense wash
GRAINS 1 – 16 (4) the grain polyphony cap per head. At the cap, new grains wait rather than cutting old ones short
JITTER 0 – 1 (0.05) random spawn-position scatter, as a fraction of the region
SPEED −2 – +2 × (0) scan speed through the sample, in multiples of real time. 0 holds still. Negative values run backwards
PJ (pitch jitter) 0 – 12 st (0) random per-grain pitch scatter
PAN JIT 0 – 1 (0.2) random per-grain pan scatter
GR ENV 0 – 1 (0.5) grain window shape. 0 is a hard gate (with a tiny anti-click ramp), 1 is a full triangle, and values in between give a trapezoid

The engine also makes 2 refinements on its own. Each grain's length gets ±4 % random variation, which decorrelates the comb-filter ring of identical grains. Positions wrap inside the region between START and END in absolute samples, so even grains a second long loop the region rather than spilling out.

the drawn window

GR ENV is the quick control. The real window is a drawable curve for each head. Open the grain-window editor and draw the envelope each grain plays through, or stamp one of the presets: TRAP · BELL · PERC · REV · GATE · PAD. PERC turns a pad sample into plucks. REV makes every grain a small reversed swell. With LINK on, all heads use the curve of head 1.

POS TO: position colours the grain

POS TO uses 3 depths to map each grain's own position in the region onto that grain. POS TO PITCH (−12 to +12 st) peaks mid-region. POS TO VOL dips the edges. POS TO PAN ramps from the left edge to the right edge. With a moving scan, travel through the sample becomes travel in pitch, level and space.

spread

Spread fans a parameter across the active heads in a deterministic line. Head 1 stays put and the last head gets the full amount. The heads between sit at even steps. You can spread 9 parameters, each with its own amount:

Spread Polarity Full-amount span at the last head
POS bipolar the whole region
SIZE bipolar ±2 octaves of grain size
PIT bipolar ±12 semitones
PAN unipolar full width, symmetric around centre
SPD bipolar ±1× scan speed
JIT unipolar +1 jitter
OVL unipolar +2 octaves of overlap
LVL bipolar ±12 dB
GRN bipolar ±8 grains

The fan is deterministic, with no randomness, so spread pairs well with LINK. Mirror the heads, then let the fan pull them apart by exactly the amount you set. Negative amounts flip the direction of the fan. PAN spread on its own gives a stereo cloud. POS spread across a melodic phrase gives a canon. Every spread amount is also a matrix target, per voice. An LFO on sPOS widens and narrows the arrangement in cycles.

variate

Variate lets you hear a variation of the patch without destroying the patch.

  • AMOUNT (−100 to +100 %, default 30 %) scales the whole variation layer.
  • VARIATE! rolls new random offsets, bounded per parameter. At full amount the bounds are up to a quarter of the region in position, ±1 octave of size, ±3 st of pitch, and a pan nudge per head.
  • The VAR ranges set which parameters may move and how far. Set POS and SIZE high and PIT to 0 for clouds that shift but stay in tune. DIR, FRZ and MUTE are probabilities: how likely each roll is to flip a head's direction, freeze it or mute it.
  • RESET restores the pure patch, every knob and toggle, exactly as it was before the first roll.

Rolls write real, visible values: the knobs move and the host can record them. The patch before the roll is stored as a snapshot, so RESET is always safe. To keep a variation, save it as a preset. What you hear is what gets saved.

08motion and colour

modulation

There are 9 assignable sources: 4 LFOs, 2 MSEGs, a step sequencer, a random source and an envelope follower. With the per-voice envelope, note and velocity, that makes 12 matrix rows in all. Sync divisions run from 4/1 to 1/128 everywhere, straight, dotted or triplet. Routing happens in the matrix: pick a source, touch a target, drag a depth in percent.

the matrix

The matrix is a grid of sources × targets. Every cell is a signed depth, from −100 to +100 %.

  • Add a routing. Tap a source chip to arm it, then touch a target: a matrix row or any head knob. New routes start at +25 %, so you hear them immediately.
  • Set the depth. Drag the cell vertically. Shift-drag for fine control. Double-click (or double-tap) to set it to 0. Depths are bipolar, and negative depths invert the source.
  • Delete. Each visible row has a ✕ with a 2-tap confirm. The first tap arms it, and the second removes the row and clears its cells. A stray touch never deletes anything.
  • Declutter. Only 6 target rows show by default: the all-heads POS · PIT · SIZ · PAN · LVL, plus SEL. Rows appear as you route to them. To show per-head rows, touch a head's knob with LINK off.
  • See it on the controls. A routed control shows a mod band: the live modulated value sweeping around the knob position. You can read the matrix from the main page without opening it.
  • The footer. AMOUNT (−100 to +100 %, default +100 %) scales every routing at once. Pull it down to calm a patch, or set it negative to mirror the whole modulation scheme. TIME (0 to 1000, default 100) scales every LFO and RND rate from 0.1× to 4×. Use it to slow the whole patch down with a single control. The corner bracket expands the matrix to a fullscreen touch editor.

The targets are every per-head parameter (H1 POS … H8 LVL), the same 7 as all-heads rows (A POS …), the 9 spread amounts (sPOS … sGRN, per voice), master speed (SPD), the feedback, band and mix of the first PRISM slot, the feedback and mix of the first DIFFUSION slot, and SEL. SEL is the sample-pool selector. When you sweep it, it hot-swaps samples per block.

lfos

The 4 LFOs share a single waveform set:

SIN · TRI · SAW · SQR · S&H · SRND · MRG · USER

  • Rate runs from 0.02 to 40 Hz free, or tempo-synced from 4/1 down to 1/128 with a straight, dotted (·D) or triplet (·T) feel.
  • USER is the default, so every LFO is drawable from the start. The curve editor is the same one the MSEGs use (points, per-segment curvature, snap, shape stamps), and the drawn loop is the waveform.
  • SRND (soft random) is a smooth random curve: new random values interpolated with a Catmull-Rom spline, with no steps. MRG (random merge) is the average of a held S&H step and that same smooth curve: a stepped pedestal with a wander on top.
  • REV plays the selected shape backwards: the same course, reversed, not mirrored. It is hidden for the random shapes, which have no fixed course to reverse.
  • The previews draw the engine's live random state, not an illustration. What you see is what is modulating.

mseg 1 and 2

MS1 and MS2 are note-triggered envelope sources, drawn in the same editor as the amp MSEG. The editor has breakpoints with per-segment curvature (drag a segment's belly), a snap grid (default 16 × 4, adjustable to 64), and shape stamps that tile a cycle per grid cell: RAMP · SAW · TRI · SINE · SQR · RND.

Each MSEG has a TIME control (0.05 to 20 s) for the full drawn shape, and the 4 modes described in envelopes: 1-SHOT, HOLD, LOOP, PNG-PNG. In LOOP mode with a short time, an MSEG works as a per-voice shape LFO. In HOLD mode it is a second envelope.

The MSEGs are per voice: route MS1 to A SIZ and every note in a chord blooms on its own clock. They run whenever they are routed. The matrix depth is the on-switch.

step sequencer, random, envelope follower

STEP

STEP has up to 16 bars, drawn directly. With multitouch you can paint with several fingers. COUNT runs from 1 to 16 (8). The rate runs from 4/1 to 1/128 (1/16), with ·D and ·T. The direction is FWD · BACK · PNG. There are 3 clock modes:

  • TRSP locks steps to the host timeline. It only advances while the transport runs.
  • FREE runs at the tempo rate regardless of the transport.
  • NOTE is FREE, restarted by every note-on.

BIP re-centres the bars around 0. A half-height bar then means no change, and full and empty bars push in opposite directions.

RND

RND is a single global random voltage, 0.02 to 40 Hz (2 Hz), or synced. With SMOOTH on it gives the Catmull-Rom wander. With SMOOTH off it gives stepped sample-and-hold. A slow, smooth RND into A POS gives a cloud that never sounds the same twice.

ENVF

ENVF is an envelope follower with ATK 1 ms to 2 s (10 ms), REL 5 ms to 4 s (200 ms) and GAIN 0 to 10×. By default it tracks the Cumulus output before the FX rack, so the instrument can duck or excite itself. Turn on SC and it tracks the plugin's sidechain input instead. Route a kick into the sidechain and the drums pump the cloud. Its value reaches the matrix 1 block late. This is by design: it breaks the feedback loop.

09motion and colour

the fx rack

The rack has 8 serial slots and 16 effect kinds. The first 8 kinds keep compact dedicated layouts. The newer 8 share a uniform cell grid of up to 12 cells, each showing a label, a value and a real unit, so you learn the layout once. Feedback effects may self-oscillate, and are soft-saturated inside the loop. Cells that can run away (FEEDBK and similar) turn red as you enter the saturation zone.

the 16 kinds

Kind In one line
PRISM resonator delay: a resonant band-pass inside a feedback delay
DIFFUSION modulated allpass diffusion field
DELAY clean stereo feedback delay with damping
FILTER state-variable filter, continuous LP↔BP↔HP morph
FOLD sine wavefolder
EQ a single band that morphs shelf → peak → shelf
RESON 4 tuned comb resonators on a chord pattern
VERB comb/allpass reverberator
LOFI tape: drive, flutter, head bump
DARK 4-tap modulated-delay pitch smearer
TIDE flanger: a feedback comb with an 8-shape LFO
CLOUD granular pitch-cloud delay
DUB delay whose echoes darken and diffuse as they regenerate
FREEZE dual-buffer beat-repeat / freeze with a polyrhythmic gate
FSHIFT single-sideband frequency shifter, barberpole feedback
ZEBRA multi-mode tuned comb resonator, 7 topologies

prism

A resonator delay: a stereo delay line with a resonant 4-pole band-pass inside the feedback path, and bipolar feedback. Push FBK and the band rings. The delay time turns the ring into pitch.

Control Range Default Notes
FBK −100 – +100 % 0 % bipolar. Negative values hollow the resonance
BPF 40 Hz – 8 kHz 800 Hz the colour of the ring
RES 0 – 100 % 40 % band-pass resonance
DEL 1 – 950 ms 120 ms loop time
MIX 0 – 100 % 0 % dry/wet

The matrix rows sFB · sBP · sMX reach the first PRISM slot in the rack.

diffusion

The companion diffusor to PRISM: 4 LFO-modulated allpass diffusers per channel in a damped cross-feedback loop. It sits between a chorus and a reverb.

Control Range Default Notes
FBK 0 – 95 % 50 % cross-channel regeneration
DIFF 0 – 100 % 60 % allpass diffusion amount
SIZE 0.2 – 2.0 1.0 scales all diffuser lengths
LP 500 Hz – 18 kHz 9 kHz damping in the loop
MIX 0 – 100 % 0 % dry/wet

The matrix rows dFB · dMX reach the first DIFFUSION slot.

delay

A clean stereo feedback delay with fractional reads, 1-pole damping in the loop and a smoothed time control. Moving TIME glides like tape instead of zipping.

Control Range Default
TIME 1 – 980 ms 250 ms
FBK 0 – 95 % 40 %
DAMP 0 – 100 % 30 %
MIX 0 – 100 % 0 %

filter

A 2-pole state-variable filter. Its TYPE knob morphs continuously from LP to BP to HP. The cutoff is slewed per sample, so even fast modulation sweeps stay free of zipper noise.

Control Range Default
CUTOFF 20 Hz – 16 kHz 800 Hz
RES 0 – 100 % 20 %
TYPE LP ↔ BP ↔ HP LP
MIX 0 – 100 % 0 %

fold

A wavefolder that drives the signal into a sine fold. THR blends the character of the fold from hard clipped edges to full folding. FOLD sets how many times the wave folds back on itself.

Control Range Default
DRIVE 0 – 100 % 10 %
FOLD 0 – 8 0
THR 0 – 100 % 100 %
OUT 0 – 100 % 100 %
MIX 0 – 100 % 0 %

eq

A single parametric band with a morphing character. 3 filters (low shelf, peak, high shelf) run in parallel, and TYPE crossfades between them. The band slides from bass weight to presence to air.

Control Range Default
GAIN −18 – +18 dB 0 dB
TYPE LOSHELF ↔ PEAK ↔ HISHELF PEAK
FREQ 33 Hz – 16 kHz 700 Hz
BW 0.3 – 10 1.0
MIX 0 – 100 % 0 %

reson

RESON runs 4 parallel comb resonators, tuned to a chord pattern around PITCH. The loop gain is pre-scaled, so the resonators ride the edge of self-oscillation but cannot blow up.

Control Range Default Notes
PITCH C1 – C7 C4 root note, semitone steps
PATTERN 8 patterns OCTAVES OCTAVES MAJOR MINOR7 FIFTHS SUB PENTA CLUSTER BELL
FB 0 – 100 % 60 % ring length
BRIGHT −100 – +100 % 0 % in-loop tone
MIX 0 – 100 % 0 % dry/wet

verb

A pure time-domain comb/allpass reverberator in true stereo. Every comb has a low shelf in its feedback, and LOW sets the low-band decay. A 1-pole treble damp follows, and HIGH sets the brightness of the tail.

Control Range Default
SIZE 0 – 100 % 70 %
LOW 0 – 100 % 45 %
HIGH 0 – 100 % 50 %
MIX 0 – 100 % 0 %

lofi

A tape stage. The signal runs through input drive → wow/flutter → tape-head saturation → head-bump resonance → HF soften → a soft inter-sample limiter.

Cell Range Default What it does
DRIVE −12 – +12 dB 0 dB input gain into the tape stage
FLUTTER 0 – 100 % 0 % wow/flutter depth and rate
TONE 0 – 100 % 0 % HF soften. Higher values are darker
BUMP 0 – 100 % 0 % low head-bump resonance
OUT −12 – +12 dB 0 dB output trim
MIX 0 – 100 % 0 % dry/wet

dark

A 4-tap modulated-delay pitch smearer with bipolar feedback. MODE picks the modulator character:

  • DEMON sums 4 harmonically related sine taps (harmonic FM).
  • WITCH crossfades saw-ramp taps into a steady Doppler transpose with granular smear.
  • ZOMBIE combs sine and cosine taps at a single rate.

The aliasing grit is the effect.

Cell Range Default What it does
SPREAD 1 – 20 ms 6.7 ms static offset between the 4 taps
MODE 3 modes DEMON DEMON · WITCH · ZOMBIE
RATE 0.1 – 2 Hz × range 1.2 Hz modulator rate
R·RNG ×0.5 – ×800 MID rate range: SLOW MID FAST AUD. AUD pushes the modulator into audio rate
AMOUNT 0 – 1 ms × range 1.2 ms modulation depth (= pitch depth)
A·RNG ×1 – ×40 ×4 depth range
FEEDBK −100 – +100 % 0 % bipolar regeneration
PATTERN P1 – P8 P1 tap phase pattern
MIX 0 – 100 % 0 % dry/wet

tide

A flanger: a feedback comb with in-loop damping, an 8-shape LFO and mid/side width. A single DELAY knob covers the whole range from flanger to chorus. The comb rings up to the edge of self-oscillation under a transparent in-loop limiter.

Cell Range Default What it does
DELAY 0.02 – 45 ms 2.2 ms centre delay, which sets the comb pitch
FEEDBK −100 – +100 % +40 % bipolar comb feedback
DAMP 0 – 100 % 30 % in-loop treble damping
DEPTH 0 – 100 % 50 % LFO sweep width
RATE 0 – 20 Hz 1.25 Hz free LFO rate
SHAPE 8 shapes SINE SINE RMP+ RMP− TRI SQR S&H GLIDE SMTH
OFFSET −100 – +100 % +50 % right-channel LFO phase offset
HIPASS 20 Hz – 20 kHz 28 Hz input high-pass
STEREO 0 – 100 % 50 % mid/side width
SYNC on/off OFF tempo-syncs the LFO
NOTE 1/1 – 1/8T 1/4 synced division
MIX 0 – 100 % 0 % dry/wet

cloud

A granular pitch-cloud delay. A freezable record ring feeds a pool of windowed grains that play back at a pitch ratio. It sits between a shimmer, a delay and a texture generator.

Cell Range Default What it does
PITCH ± RANGE 0 st grain transpose, bipolar
CLOUD 0 – 100 % 60 % grain length and how far back grains read. Small values give a tight shimmer, large values a deep smear
DENSITY 0 – 100 % 45 % grain overlap (loudness-compensated)
JITTER 0 – 100 % 20 % random spawn scatter
RANGE 4 steps 2OCT pitch span: 1ST (±1 st) · 1OCT · 2OCT · 4OCT
FREEZE on/off OFF stops recording. The cloud plays from the held buffer
REV on/off OFF grains read backwards
HUGE on/off OFF ×8 grain length and reach, for very long smears
GRID on/off OFF quantises PITCH to whole semitones
MIX 0 – 100 % 0 % dry/wet

dub

A stereo delay with a heavily processed feedback path: a high-pass, then a resonant low-pass, then an allpass cascade, then polynomial saturation. INTENS raises the saturation drive, filter resonance and allpass depth together, so every echo comes back darker, softer and more diffuse. Feedback runs past unity into self-oscillation. The in-loop saturator acts as the limiter.

Cell Range Default What it does
TIME L 5 ms – 2 s 55 ms left delay time
TIME R 5 ms – 2 s 74 ms right delay time
FEEDBK ×0.10 – ×1.10 ×0.50 loop gain. Above ×1.00 it blooms into self-oscillation
INTENS 0 – 100 % 40 % the dub macro: darker, softer and more swirling with each echo
HP 20 Hz – 2 kHz 32 Hz loop high-pass
LP 200 Hz – 16 kHz 2.8 kHz resonant loop low-pass
FREQ 20 Hz – 16 kHz 290 Hz centre of the allpass cascade, where the swirl sits
STAGES OFF – 3 1 allpass stages in the loop
SYNC on/off OFF tempo-syncs the times
NOTE 1/1 – 1/8T 1/4 synced division
X-FB on/off OFF cross-feedback L↔R (ping-pong regeneration)
MIX 0 – 100 % 0 % dry/wet

freeze

A tempo-synced dual-buffer beat-repeat. There are 2 loop sets, A and B, and both are always recording. Engaging FREEZE latches the last LEN of audio and loops it with a windowed, de-clicked seam. The GATE is bipolar. To the right, it mutes later portions of the current set's own period. To the left, it chops in a polyrhythm derived from the length of the other set.

Cell Range Default What it does
FREEZE on/off OFF latches and loops (the rising edge captures)
LEN A 1/1 – 1/8T 1/4 loop length, set A
LEN B 1/1 – 1/8T 1/8 loop length, set B
A/B A / B A which set plays
GATE −100 – +100 % 0 % bipolar gate. Right mutes later portions, left gives a cross-set polyrhythm
WINDOW 0 – 100 % 30 % seam crossfade width
SMOOTH 1 – 200 ms 41 ms gate edge smoothing
X.GATE on/off ON while not frozen: passes the dry signal (on) or mutes it (off)
TILT −100 – +100 % 0 % tilt EQ on the frozen loop
MIX 0 – 100 % 0 % dry/wet

fshift

A single-sideband frequency shifter, not a pitch shifter. It moves every partial by the same number of hertz, so harmonic material turns inharmonic, bell-like, then metallic. Bipolar feedback with an in-loop delay gives a barberpole spiral.

Cell Range Default What it does
SHIFT L 0 – RANGE Hz 20 Hz left shift amount
SHIFT R 0 – RANGE Hz 20 Hz right shift amount
U/D −100 – +100 % +100 % sideband blend: up, down, or both (the centre gives ring modulation)
FB −100 – +100 % 0 % feedback. Positive values feed back into the same channel, negative values cross channels
FBMIX 0 – 100 % 50 % sideband blend inside the feedback path
LP 20 Hz – 20 kHz 2.5 kHz in-loop low-pass
TIME 25 ms – T·RNG 48 ms in-loop delay time
RANGE 5 steps 100 shift range: 1Hz 10Hz 100 1k 10k
T·RNG 4 steps 100 time range: 25ms 100 500 1s
DELAY on/off OFF enables the in-loop delay
MIX 0 – 100 % 0 % dry/wet

With DELAY on, a small SHIFT and some FB, each repeat arrives a few hertz higher (or lower) than the last. The spiral never lands.

zebra

A multi-mode tuned comb resonator: 7 comb topologies tuned to a note, sharing a damped feedback path that can be driven into distortion. CTX-A and CTX-B are character controls for each mode (tap ratio, structure or harmonic spacing, depending on MODE).

Cell Range Default What it does
TUNE −24 – +24 st 0 st comb tuning around middle C
MODE 7 modes SIMPLE SIMPLE DISS CMPX4 CMPX8 FDN BLOWN VERB
CTX-A 0 – 100 % 50 % mode character A
CTX-B 0 – 100 % 50 % mode character B
DAMP 0 – 100 % 60 % loop damping
FEEDBK −100 – +100 % +50 % bipolar. Negative values give a hollow, octave-down colour
DETUNE −50 – +50 ct 0 ct L/R detune, which adds width
DISTORT 0 – 100 % 0 % in-loop drive
WIDTH 0 – 100 % 50 % stereo width
OSC on/off OFF raises the feedback ceiling past unity. The comb becomes an oscillator playing TUNE
MIX 0 – 100 % 0 % dry/wet

slots, order and mute

  • Choosing a kind. Each slot has a kind picker. Picking a kind writes that effect's musical defaults into the slot, since each kind keeps its own neutral starting point. Effects run in slot order, 1 into 8.
  • Building the chain. A new kind builds in the background as soon as you pick it. A live kind switch goes dry briefly while the new DSP arrives. This is by design. Loading a session pre-builds every slot, so presets start wet.
  • MUTE bypasses a slot and greys out its control region. The settings are kept, and the slot steps out of the chain.
  • Wet/dry. Every kind ends in a MIX cell, and all mixes default to 0 %. A freshly picked effect is not heard until you bring it in.
  • Sync cells. TIDE, DUB and FREEZE have a SYNC toggle and a NOTE division: 1/1 · 1/2 · 1/4 · 1/8 · 1/16 · 1/4T · 1/8T.
  • The saturation warning. Feedback cells that can run away (DUB and ZEBRA FEEDBK, FSHIFT FB, TIDE FEEDBK) turn red as you approach the self-oscillation zone. The zone is intended. The warning lets you enter it on purpose.

10motion and colour

envelopes

Every voice has a single amplitude envelope that works in 2 ways: as an ADSR (the default), or as a freely drawn segment shape when you turn MSEG on. Velocity scales the result either way.

the adsr

Stage Range Default
ATTACK 1 ms – 5 s 10 ms
DECAY 1 ms – 20 s 200 ms
SUSTAIN 0 – 100 % 80 %
RELEASE 5 ms – 30 s 400 ms

Granular patches often need extreme settings: a 1 ms attack on PERC-windowed grains for plucks, or attacks of 4 s so the cloud condenses rather than starts. Both are in range.

the amp mseg

Turn MSEG on and the drawn envelope replaces the ADSR. You edit it in the shared curve editor:

  • Points. Tap to add, drag to move. Each shape holds up to 64.
  • Curvature. Drag a segment's belly to bend it, from fast-start to slow-start.
  • Snap. A toggleable snap grid, default 16 × 4, steppable up to 64 divisions. Grid lines always draw.
  • TIME. The duration of the full drawn shape, from 0.05 to 20 s.
  • Shape chips. Stamp shapes as starting points and edit from there.

envelope modes and retriggering

The MSEG has 4 modes, set with the chips in the editor:

Mode Behaviour
1-SHOT plays the whole shape once per note, ignoring the gate
HOLD plays to the hold point, sustains there while the note is held, then runs the rest on release. This is the drawn equivalent of ADSR. SET HOLD places the point
LOOP loops forward between points A and B while the note is held, then runs out. SET A and SET B place the loop
PNG-PNG as LOOP, but bounces back and forth between A and B

LOOP and PNG-PNG blur the line between envelope and LFO. A looping amp MSEG is a tremolo with a composed attack.

Retriggering follows the play mode (see signal flow). POLY starts a fresh envelope for each note. UNI RT retriggers the envelope of every voice on every note. UNI LG plays legato: a new note while another is held changes pitch without restarting envelopes.

11reference

the sample pool

Cumulus never plays "a sample". It plays the selected sample from the pool. The pool is a list of up to 64 decoded samples held in memory. Selection is a parameter (SEL), so you can automate and modulate the loaded sound itself.

managing the pool

  • Filling it. LOAD… with a single file pools its whole folder. With several files, it pools exactly those. Drag and drop appends. See the wave display for the full loading behaviour.
  • The pool panel lists every entry (SAMPLE POOL · 12), with a delete control on each row. It is a 2-tap ✕, so a stray touch never drops a sample.
  • The nav pill in the top strip shows n/N · name. Its arrows step the selection, and stepping is glitch-free: samples are pre-decoded, so switching never reads the disk during a performance.
  • SEL as a target. The selector is a continuous parameter from 0 to 1 across the pool. Automate it, or route any matrix source into SEL. A stepped RND hot-swaps the source sample per block, which is the fastest route to glitch collage. All 12 sources can drive it.
  • What persists. The DAW session stores the exact pool file list and restores it on load. Presets carry their own pool references too. Loading a preset that was saved with a pool brings those samples back. A preset saved without a pool plays over whatever you have loaded, and leaves your selection alone. References are per device.

On iPad the pool starts with a bundled set of loops. LOAD… imports through the Files picker, and imported files are copied into the Cumulus local store. You can delete them from the store list, also with a 2-tap confirm. Pool audio stays in RAM while the plugin runs. A full pool of 64 long stereo files uses a lot of memory, so prune the pool on iPads with limited memory.

12reference

presets

Presets store everything: parameters, the drawn curves (amp MSEG, both mod MSEGs, all 4 LFO shapes, all 8 grain windows), the step bars, the matrix and the sample-pool references. The browser strip at the top steps through them. The factory bank is organised by texture.

the factory bank

The factory bank has 20 patches. Each is a starting point built on a single idea. Each leaves most of the instrument at its defaults, so what you hear is the idea and not a stack of adjustments.

Category Preset The idea
pads Init Cloud the neutral start: a medium cloud and a little VERB. Build from here
pads Cirrus Drift 5 heads spread in position and pan. A 0.07 Hz sine drifts the cloud through the sample
pads Stratus Bed an octave down, half-second grains, a closed-down FILTER into a large VERB. A dark floor
pads Shimmer Stack 6 heads fanned in pitch and pan, with PRISM ringing at 1.2 kHz. The bright one
keys Granular Keys 12 voices, tight 70 ms grains, instant attack, slap DELAY. Plays like an instrument
keys Plucked Cloud the PERC grain window does the plucking. Short decay, a little VERB
textures Rain on Glass 26 ms grains, high jitter, RND flickering the levels
textures Frozen Aurora 4 frozen heads, 420 ms grains, 2 slow LFOs bending size and pan
lo-fi Tape Ghost every head in reverse, an octave down at 0.6× speed, a 4.5 Hz wobble on pitch
lo-fi Vinyl Memories warm low shelf, softened top, slapback. Worn media
rhythmic Pendulum ping-pong scan in a tight region with speed spread. The heads swing
rhythmic Chop Gate the step sequencer ducks the cloud through a gate mask. DELAY fills the gaps
harmonic Swarm of Fifths LINK off. Heads voiced root · fifth · octaves and panned wide: a chord from a single note
harmonic Sub Choir heads at −12 and −24 under the root, filtered, for weight
glitch Microscopic 9 ms grains, with stepped RND throwing the position
noise Dust Storm random-direction grains through FOLD and VERB
fx Reso Bloom PRISM past half feedback, with an LFO sweeping the band. The effect is the instrument
fx Comb Cathedral RESON on FIFTHS at 85 % feedback into a large VERB
cinematic Slow Motion 0.08× scan, 900 ms grains, a very large VERB, softened top
wild Total Chaos VARIATE! is the play surface: amount at 85 %, everything unlocked

Factory presets install once into your user folder, and then they are yours. You can edit them, retag them or delete them. A deleted factory preset stays deleted.

saving and sharing

  • Save captures the complete current state under a name. Saving under an existing name overwrites it, and its favourite status and tags survive. A * next to the preset name means the live state differs from the saved file.
  • The palette opens when you click the preset name. It lists every preset with search, filtering, tags and favourites. Deletes use a 2-tap confirm.
  • On disk, a preset is a single human-readable JSON file: ~/Library/Application Support/com.drowld.Cumulus/presets on macOS, %APPDATA%\drowld\Cumulus\data\presets on Windows. To share a preset, copy the file. Sample audio is not embedded. Presets reference pool files by path, so share the samples with the preset.
  • On iPad, presets live inside the AUv3's own sandbox and persist across sessions and hosts. They are not shared with the desktop build. Cross-device sync is a planned opt-in.
  • Presets are independent of the host's own state save. Your DAW session restores exactly what you had. Named presets are the library you carry between sessions.

13reference

tips and techniques

Each tip is a starting point, built on the 2 or 3 parameters that matter.

one tap, endless pad

Turn a short percussive hit (a rim, a glass tap, a single piano note) into a pad that does not end.

  1. Set HEADS to 8 with LINK on. Set SIZE to around 300 ms and OVERLAP to 4 or more.
  2. Spread SIZE wide (±2 oct at full) so the heads disagree about time, and spread PAN for width.
  3. Route RND (smooth, about 0.1 Hz) into A POS at 10 to 20 %. The cloud wanders across the hit without leaving it.
  4. Put VERB last in the rack, with SIZE high and MIX to taste.
  5. Use the amp MSEG in HOLD mode with a slow attack, or push ATTACK and RELEASE past 1 s each.

The percussive transient disappears into the overlap. What remains is the body of the sound, held open.

clouds that stay in tune

Random pitch is the fastest way to lose the tonal centre. To build wide clouds that still sit in a key:

  1. Keep PJ (pitch jitter) at 0 and JITTER low.
  2. Voice the heads instead. Turn LINK off, then set the PIT trims to intervals: +7, +12, +19, −12. This is the Swarm of Fifths recipe. Spread LVL slightly negative so the upper heads sit behind the root.
  3. For shimmer without smear, add a CLOUD effect with GRID on and RANGE at 1OCT. Its transposes then land on exact semitones.
  4. For sustain, use head FRZ (freeze the scan where the note blooms), or latch the FREEZE effect on a bar of the result.

rhythms from texture

You can turn any pad patch into a groove without changing the sound itself:

  1. Draw a gate mask in STEP, with full bars and empty bars. Set COUNT to 8 or 16 and the rate to 1/16.
  2. Route STEP into A LVL at −100 %. Full bars now duck the cloud to silence, and empty bars let it through. Inverting the routing is what makes the edges hard.
  3. Clock mode TRSP locks the pattern to the host timeline. NOTE restarts it on every played note.
  4. DUB after the gate turns the chops into answers: SYNC on, NOTE at 1/4, X-FB on for ping-pong. TIDE before it, slow and deep, keeps the sustained parts moving.
  5. Tighten the amp envelope: ATTACK a few ms, RELEASE short, SUSTAIN full.

14reference

troubleshooting

the auv3 does not appear in my ipad host

Launch the stand-alone Cumulus app once, then restart the host and rescan its plugin list. iPadOS registers extensions on the first launch of the app.

no sound

Work down the signal path:

  1. Is MIDI arriving? Play the on-screen keyboard (iPad) or check the host's MIDI routing into the plugin. If the VU meter moves, MIDI and the engine are working, and the problem is after Cumulus.
  2. Levels. Check that master LEVEL is up. The grain master LVL goes down to −60 dB, so check it has not been automated down. For each head, check that MUTE is off and LVL is above the floor.
  3. The envelope. An ADSR with SUSTAIN at 0 and a short DECAY is silent on held notes. With MSEG on, a drawn shape that ends early behaves the same way. Check the mode: HOLD sustains, 1-SHOT does not.
  4. The region and the scan. A tiny region between START and END that sits on silence, with SPEED at 0, plays that silence indefinitely. Move a head or widen the region.
  5. The step sequencer. STEP routed into A LVL at −100 % is a gate. In TRSP mode it only advances while the host transport runs, so a stopped transport can hold the gate closed.
  6. The rack. A FREEZE slot with X.GATE off mutes the dry path whenever it is not frozen. That is its job, but it sounds like a fault if you forget it. MUTE the slots one at a time to find the cause.

crackles or high cpu

The engine's load is voices × heads × grains per head. The defaults (8 × 4 × 4) are light. The worst case (16 × 8 × 16) is over 2,000 simultaneous grain reads. It is meant for freezing to audio, not for a busy live set.

  • Lower VOICES first. It multiplies everything.
  • Then lower GRAINS and OVERLAP. Concurrent grains per head are roughly grains × overlap (capped at 16), so halving either halves the work.
  • In the rack, DIFFUSION, VERB, CLOUD and the FDN and VERB modes of ZEBRA are the heavier kinds. MUTE them to test.
  • Host buffer sizes of 256 samples and above leave comfortable headroom. Granular spawning is bursty by nature.
  • On iPad, a live FX kind switch goes dry briefly while the new DSP builds in the background. This is by design, not a glitch. Switching presets pre-builds everything.

something else

Write to hello@softsystems.app with your OS, host, plugin version and, if it crashed, the crash report. The version and build stamp are in the top-right corner of the plugin.

15reference

specifications

engine

Spec Value
Polyphony up to 16 voices (default 8) · play modes POLY / UNI RT / UNI LG
Playheads up to 8 per voice (default 4)
Grains up to 16 per head, 128 streams per voice, 2048 engine-wide. Pre-allocated, with no allocation on the audio thread
Interpolation 4-point Hermite sample reads
Grain window drawn per-head curves (6 presets) or the GR ENV trapezoid
LFOs 4, with 7 shapes plus a drawable USER curve (the default)
MSEG envelopes 2 mod sources plus the amp MSEG, up to 64 points each
Other sources STEP (16 steps) · RND (smooth or stepped) · ENV FOLLOW (sidechain-capable) · note · velocity
Matrix 12 sources × 79 targets, bipolar depths
Sync divisions 4/1 … 1/128, straight, dotted or triplet (FX sync cells: 1/1 … 1/8T)
FX rack 8 serial slots · 16 effect kinds, built on demand off the audio thread
Sample pool up to 64 samples · wav aif aiff flac mp3 · selection is a modulation target
Presets a single JSON file each · 20-patch factory bank
Window 1280 × 780 logical (iPad 1280 × 900) · UI zoom 50 – 250 % · dark / OLED / light · 6 accents

formats and platforms

Platform Formats
macOS VST3 · CLAP
Windows VST3 · CLAP
iPadOS AUv3 + stand-alone

Sample rate and block size follow the host. There is no internal resampling.

Minimum OS versions, Apple silicon and Intel notes, disk footprint and the tested host list are added at release.

credits

The LOFI tape stage is a port of Airwindows ToTape by Chris Johnson, used under the MIT licence.

16reference

version history

Version Date Notes
1.0 beta 2026 current (on-device iPad rounds in progress)

The full changelog is added at release.

still stuck?

Write to hello@softsystems.app with your system, your host and the plugin's version. If it crashed, attach the crash report.

Back to Cumulus