Granular · glitch · delay · looper multi-effect for the Ableton Move. The panel above is a live synth — and every control named in these docs can be nudged inline, right where it's explained.
War Bells chops whatever runs through it into tiny pieces and rebuilds them — as shimmering loops, grain clouds, glitchy stutters, or rhythmic delays — then sweetens the result with pitch wobble, reverb, a filter, and a 60-second looper.
Four families. Tap a family to see its effects; tap an effect to load it — then tweak its variables right on the card, just like the knobs above.
This visualiser reacts to Activity (how many grains), Shape (their size) and the effect family's colour. Twist the knobs above (or the inline ones) and watch.
Eight root knobs: the first two pick the sound, the rest shape it. Each re-interprets per effect — Activity = more of the effect's thing; Repeats = how long it rings on.
Density / complexity.
How long it sustains.
Reverb high-/low-pass; centre = flat (Shape moved to the Tone page).
Dry vs. effect (100% can fully cut the dry).
Reverb + delay wash.
Global resonant low-pass; full = open.
On the Tone page, Grain Env sets each grain's volume shape — a small control with a big character change.
Smooth fade — round, clickless (default).
Abrupt onset then fade — percussive.
Ramps up — the reverse feel.
Flat on/off — gated, stuttery.
Loops, grains and delays retrigger in time. Subdiv sets how fast relative to the beat. Clock picks the source:
Free-running internal tempo that drifts gently — breathes, never locks. A free-running, never-quite-locked feel.
Locks hard to the Move's host clock.
Fixed BPM via Tempo.
Subdivision:
The Space knob blends a delay + reverb tail. Four rooms:
Rv Tone shapes the reverb's character from its own root knob. Centre is flat; turn down to high-pass the tail (thins the lows — tames the low-end build-up ambient reverbs are prone to), turn up to low-pass it (darker, warmer). It filters the reverb send, so it stops mud at the source rather than masking it.
Stereo sets the overall output width (Space FX page). Centre is neutral; turn down to narrow toward mono, up to widen. It boosts the side of the image, so it opens up a mono source's stereo halo (the panned grains, the ping-pong delay, the reverb) while leaving a centred mono dry untouched — mono-safe.
One tap sets effect + all macros to a curated character:
Four ways to take the same sound somewhere distinct — musical, moving, and self-evolving — without leaving the palette.
Feeds the reverb tail through a pitch-shifter for rising octave/fifth shimmer (Space FX page).
Sustain pushes the space-delay feedback toward unity so repeats accumulate instead of decay — sound-on-sound "storing up", kept safe by a soft-limit + DC blocker. Warp sweeps the delay time, which is secretly a pitch shifter (ρ = 1 − D'): move it to bend/dive, or point the Motion lane at it for vibrato. Stack them and the stored swells re-pitch as they cycle (the Spiral preset).
Snaps pitched grains/glides to a scale so everything stays in key (Tone page).
A tempo-synced LFO that modulates a chosen macro — built-in movement.
Clocked, bounded re-rolling for textures that drift and never repeat; Dice re-rolls now.
Gives each of the 6 grain voices its own slow, independent LFOs on level, pan & pitch — the cloud breathes and moves continuously, each layer on its own clock. Where Evolve jumps and Motion sweeps one macro, Drift is the per-voice wander.
Ducks the wet under your playing so the effect swells back in the gaps between notes (Perform page) — internal self-sidechain, distinct from a chain ducker.
Backwards grain/loop playback.
Freezes the last moment into an endless bed.
Latch (toggles) vs Gate (while held).
Record, overdub, re-speed. Transport: (buffers allocate only when you record — idle instances cost no RAM; the loop doesn't survive a Move clip/patch change, so save it to a User Slot to keep it).
Post = capture the processed sound; Pre = capture dry, then process the loop.
Plays only the loop (mutes the live signal).
Save your own sounds — params and the recorded loop — to 16 on-device slots. Pick then .
Writes all params + loop to the slot.
Recalls params + loop, arms the looper.
Clears the slot.
Trails (Avalanche-style): when you bypass, the delay/reverb tail rings out and decays naturally (length follows Repeats/Space) while dry passes clean — hard bypass cuts the tail instead. Eco = lighter 4-comb reverb + caps the granular voices at 4 (only thins dense patches) for stacking instances — ~24% less CPU per instance. Both off by default.
| CC | Controls | CC | Controls |
|---|---|---|---|
| 6 | Activity | 15 | Resonance |
| 7 | Shape | 16 | FX Vol |
| 8 | Filter | 19 | Mod Depth |
| 9 | Mix | 20 | Reverb |
| 11 | Repeats | 22 | Looper |
| 12 | Space | 28–35 | Transport |
| 33 | Rv Tone | 47 | Reverse |
| Program Change selects effect + variation (effect = PC÷4, var = PC mod 4). | |||
This page is dual-purpose. Served from GitHub Pages it's an interactive demo + manual. Opened from your Move it becomes a live controller of the real plugin.
Go live: with War Bells loaded in a chain slot, open this page from the device:
http://move.local:7700/api/remote-ui/module-assets/war_bells/web_ui.html
It connects to the Schwung Manager's WebSocket, finds War Bells in your slots, and every control here drives the DSP — while hardware-knob moves flow back into this page. (Live control needs an http origin; an https page can't open an insecure socket, so the Pages copy stays in demo mode.)
From the catalog (easiest): open the Module Store in Schwung on your Move, search War Bells, and install. (Available there once it's listed.)
Manual install: download the latest war_bells-module.tar.gz from the
releases page, then from your computer:
scp war_bells-module.tar.gz ableton@move.local:/data/UserData/ ssh ableton@move.local 'tar -xzf /data/UserData/war_bells-module.tar.gz \ -C /data/UserData/schwung/modules/audio_fx/'
Then reload Schwung (or restart the Move) and add War Bells as an audio FX in a chain. Full instructions, source & releases: github.com/seajaysec/war-bells.