Skip to the content.

PALETTE

A 4-slot serial multi-effect for Ableton Move (Schwung) — a shared palette of 24 effects, reorderable, with per-effect instability, live randomization, feedback, and tempo sync.

PALETTE is a reinterpretation of the Hologram Electronics Chroma Console. It keeps the Chroma’s reorderable-module soul and its DRIFT instability philosophy, but drops the rigid one-effect-per-category rule: four fully generic serial slots, each loading any of 24 effects (or Off). The Chroma’s most-cited limitation — no delay and reverb at once — disappears by construction. Every effect has a breakup/instability sweet-spot near its maximum, in the Chroma spirit of “exploit the limitations.”

Author: Filliformes · License: MIT · API: audio_fx_api_v2 · 44100 Hz, stereo.

🌐 Web manual: filliformes.github.io/palette-move · 📦 Releases · 🔧 INSTALL.md


Table of contents

  1. Concept & signal flow
  2. The three knobs: Amount · Macro · Drift
  3. Effect uniqueness (the “skip” rule) — read this first
  4. The five pages
  5. The 24 effects
  6. The GLOBAL page: feedback + tempo sync
  7. Presets & randomizers
  8. Live-use tips
  9. Install
  10. Build from source
  11. Credits & license

1. Concept & signal flow

IN → [Input Vol] → SLOT a → SLOT b → SLOT c → SLOT d → [Mix] → OUT     (stereo)
                     ↑______________ Global Feedback send ______________|
                     (a,b,c,d = the four slots in FX-Reorder order, switchable live)

2. The three knobs: Amount · Macro · Drift

Every effect exposes exactly three controls, Chroma-style:

Knob response is accelerated: fine (~1%) when turned slowly for precision, up to ~7% on a fast spin, so a full 0→100 % sweep is one brisk turn.


3. Effect uniqueness (the “skip” rule)

Each of the 24 effects can occupy at most one slot at a time. (Off is exempt — any number of slots can be Off.) When you scroll a slot’s Select onto an effect another slot already holds, the encoder skips past it to the next free effect, in the direction you’re scrolling.

⚠️ This trips up new users. If turning a slot’s Amount/Macro seems to “do nothing,” check that the effect you think is there didn’t get skipped — the same effect may be sitting on a different slot. Every patch is always four distinct effects.


4. The five pages

The module opens on the PALETTE console. Pages:

Page Knobs
PALETTE the Chroma-style 8-knob console — FX1–4 Amount/Macro pairs
PRESETS&RND Current Preset · Rnd Patch · Rnd Effect · Rnd Amount · Rnd Macro · Rnd Values · Input Vol · Mix · (menu) FX Reorder
FX 1&2 FX1 Select/Amount/Macro/Drift · FX2 Select/Amount/Macro/Drift
FX 3&4 same for slots 3 & 4
GLOBAL Feedback · Tempo Src · Tempo · Time Division

Amount and Macro are the same parameters on the PALETTE console and the FX pages.


5. The 24 effects

Grouped only for organisation — any effect fits any slot. Columns are Amount · Macro · Drift. ★ = the four originals not found on the Chroma. All real DSP — see vendor/SOURCES.md for the per-effect sourcing record.

Character (saturation / dynamics)

| Effect | Amount | Macro | Drift | Engine | |—|—|—|—|—| | Drive | drive (keeps low end) | tone tilt | bias wander | split-band + asymmetric anti-aliased tanh | | Sweeten | comp + saturation | tone (dark↔air) | level drift | Airwindows Density/Mojo density fold | | Fuzz | sustain / gain | tone / bias | bias instability | two-stage Big-Muff cascade | | Howl | drive + resonance | resonant freq | freq wander | fuzz → near-self-oscillating SVF (sings) | | Fold ★ | fold depth | offset / symmetry | fold wobble | authentic Warps wavefolder LUT | | Swell | swell time | sensitivity | threshold jitter | Airwindows Swell auto-volume |

Movement (modulation)

| Effect | Amount | Macro | Drift | Engine | |—|—|—|—|—| | Doubler | mix | time | momentary detune | ADT / slapback double-track | | Vibrato | depth | rate | waveshape + FM | fully-stereo modulated delay | | Phaser | stages / intensity | rate | sweep randomness | stereo (quadrature) allpass phaser | | Tremolo | depth | rate | AutoPan | Airwindows skew/density; Drift pans the field | | Pitch | mix | pitch (±1 oct) | resolution drop | dual-tap pitch shifter | | Shift ★ | mix | shift Hz (±) | shift wander | Bode single-sideband (Warps Hilbert) |

Diffusion (time-based)

| Effect | Amount | Macro | Drift | Engine | |—|—|—|—|—| | Cascade | feedback | time | degrade | BBD bucket-brigade — dark, fast clock warble | | Reels | feedback (self-osc) | time | tape degrade | RE-201 tape echo — bright, wow + flutter + hiss | | Collage | feedback | loop time | glitch grains | granular looping delay | | Reverse | mix | segment time | pitch mod | reverse delay | | Space | wet | size | tone wander | Mutable Clouds reverb | | Bloom ★ | wet | size | shimmer / tone | Clouds reverb + octave-up shimmer |

Texture (destruction)

| Effect | Amount | Macro | Drift | Engine | |—|—|—|—|—| | Filter | HP↔LP sweep (centre = open) | resonance | cutoff wander | DJ-style TPT SVF | | Squash | compression | mu character | threshold jitter | Airwindows Pressure4 vari-mu | | Cassette | degrade | tone | warble depth | wow + flutter + tape comp + saturation | | Broken | breakdown | rate | dropout randomness | periodic motor-stall pitch drops + AM/FM | | Interference | crush | carrier / tone | static | Airwindows DeRez2 telecom crush | | Halo ★ | resonance / sustain | root + brightness | voice detune | Karplus harmonic resonator pad (Qi / Dark-Star vibe) |

Delay- and LFO-time effects (Cascade, Reels, Doubler, Reverse, Collage; Vibrato, Tremolo, Phaser) glide smoothly when you turn their time/rate Macro — no zipper or pitch-click.


6. The GLOBAL page: feedback + tempo sync

The performance layer.

Tempo Src = Move depends on the Move forwarding MIDI clock to audio-FX; if it doesn’t, PALETTE falls back to the Int tempo automatically. Int always works.


7. Presets & randomizers

50 factory presets, grouped utilitarian → character → weird → experimental, each a chain the Chroma can’t do. Every preset loads four distinct effects — the featured ones up, the rest at 0 % (loaded, silent, ready to bring in). Tempo and Feedback are global, so changing presets keeps your performance settings. Init is the classic chain Drive → Doubler → Cascade → Filter, transparent by default.

Six momentary randomizers (one tap = one fire), all across the four slots at once:

The randomizer is voiced for musicality: ~70 % of Rnd Patch/Effect rolls are balanced (one effect per category, in random slot order — the Chroma feel), ~30 % are free stacks — and a hard rule caps it at no more than two drive/distortion effects at once. It’s seeded from OS entropy (random from the first tap) and ducks click-free when it fires.


8. Live-use tips


9. Install

No build required. Grab palette-module.tar.gz from the Releases page and side-load over SSH:

scp palette-module.tar.gz ableton@move.local:/tmp/
ssh ableton@move.local 'mkdir -p /data/UserData/schwung/modules/audio_fx && \
  tar -xzf /tmp/palette-module.tar.gz -C /data/UserData/schwung/modules/audio_fx/ && \
  rm /tmp/palette-module.tar.gz'

Then power-cycle the Move and add PALETTE as an audio FX. Full steps + troubleshooting → INSTALL.md. (Once PALETTE is in the Schwung Module Store, you can also install it from the Manager at http://move.local:7700.)


10. Build from source

./scripts/build.sh          # Docker ARM64 cross-compile (Docker Desktop must be running)
./scripts/install.sh        # SCP to ableton@move.local, then power-cycle the Move

Architecture: host + 21 pure-C effects in src/dsp/palette.c; the two Clouds reverbs (SPACE/BLOOM) in src/dsp/fx_clouds.cc; authentic Warps lookup tables in src/dsp/warps_data.c. Three translation units, cross-compiled for aarch64 and compiled -Wall -Wextra clean. See CLAUDE.md for the full build notes.


11. Credits & license

MIT © Filliformes. Built on MIT-licensed DSP from Mutable Instruments (Clouds, Warps — Émilie Gillet), Airwindows (Chris Johnson), Signalsmith Audio (Geraint Luff), and the Filliformes Move-plugin family (super-boom, mello, krautdrums). Inspired by the Hologram Electronics Chroma Console. Per-effect sourcing is documented in vendor/SOURCES.md.