Action Buttons
Action buttons are one-touch macros that change parameters during a performance. Each button lives on a source, has its own color and label, and can be triggered from the on-screen grid, a keyboard shortcut, or a MIDI pad.
There are two types of buttons, each tailored to a different job:
| Type | What it does | When to use |
|---|---|---|
| Action button | Fires an operation (nudge, set, cycle, snapshot, random, …) | Trigger a one-shot or repeating change |
| Toggle button | Switches a parameter’s modulation on or off | Bring an LFO, audio reactivity, or beat sync in and out of a mix |
Both live in the action button grid at the bottom of the parameter panel for the currently selected source.
Creating a button
Click the + in the top-right of the grid. The Button Editor opens with a Start from… strip at the top showing template chips (strobe, beat cycle, nudge ±, randomize, invert, snapshot recall, …). Pick one to seed a working button, or ignore the strip and wire up the pipeline manually.
Toggle and snapshot buttons have dedicated shortcut entry points that pre-fill the editor — right-click a modulated parameter for toggles, the Snapshot entry in the parameter panel or a chain card for snapshots. See the palette shortcuts below for swatch-targeted variants.
The editor
Click the gear icon on any tile to open the editor. The modal splits into two columns:
- Left — the pipeline. A visual flow of your button from left to right: one or more
TRIGGERtiles (keyboard / MIDI / BPM) → one or more action rows, each aTARGET · OPERATION · VALUESchain → oneOUTPUTtile (the button itself). Manifolds split and join around multi-action buttons so it reads as “one press fans out into these N things.” - Right — the Advanced column. Every schema field the button supports, grouped by kind. Clicking any tile on the left lights up the matching group on the right with a colored edge and a kind badge; clicking outside any tile dims all groups evenly.
Edits autosave live — the button’s runtime behavior updates as you tweak. Click outside the modal to save and close. Press Escape to cancel (or delete the button if you just created it).
Button name & color
At the bottom of the Advanced column:
-
Label — the text shown on the tile
-
Color — one or more color states. The picker auto-derives semantics from the number of states:
- 1 state → simple color, used always
- 2 states → active / inactive —
state[0]shows when the button is pressed,state[1]when at rest - 3+ states → cycle on press, advances modulo length
Click
+ Add stepto add another state. Click the×next to any state to remove it. The picker shows a “Targeting:” label indicating which controller’s LED palette these colors will translate to (APC40 MkII,Generic MIDI, orOn-screen onlyif no controller is connected).
Actions — target, operation, values
Each action row on the left is configured with three groups on the right:
- Target — what the action controls. Two-step picker: pick a Source kind (
Source,Palette,Show ctrl), then pick a Parameter. The Parameter popover groups items by node + category, with colored pills matching the parameter panel.Show ctrlis reserved for future scene/set/BPM targets (disabled in v1). - Operation —
nudge,set,cycle,random, orinvert. Shown as a segmented control. Each op tile has a one-line hint underneath explaining what it does. - Values — operation-specific fields in the param’s display range with units (e.g.
90°,0.5s), not raw 0–1.cyclegets a list of steps + a Direction control (forward / reverse / pingpong);nudgegets a signed amount;setgets a single value;randomgets min/max bounds.
Multi-action buttons fire every row simultaneously on one press. Use the tab strip above the Action groups to switch which row you’re editing, or click a TARGET / OPERATION / VALUES tile on the left to jump to that action. + Add action appends a new row with the previous action’s source pre-filled (parameter blank).
Snapshot actions
Snapshot actions have a dedicated creation path — they’re not selectable from the Operation segmented. To make one, use the Snapshot entry points in the parameter panel or a chain card’s context menu. The editor then shows a full inspector for that action listing every captured param with:
- The param’s human label (not the raw key)
- Captured value in display units
- Current live value
- A drift indicator dot — filled when the live value differs from the snapshot, hollow when they match
- A
×button to remove that param from the snapshot
Captured mods get a similar list showing source type (LFO / Audio / Beat / Button), an arrow, and the target param.
A red banner appears if the source node was deleted, and a small warning explains that pressing the button replaces existing mods on the target param (LFO timing will reset).
Palette operations
Action buttons can drive the color palette directly instead of a single parameter. Pick one of the two Palette targets at the bottom of the target dropdown, and the op dropdown narrows itself to the combinations that make sense for that target.
- Palette group (global preset) — acts on the whole 7-swatch palette at once.
- Source · color-group (e.g.
Voronoi · color,CubeGrid · bg) — acts on one source’s binding to a single swatch channel, without touching the swatch colors themselves.
The op then decides what actually happens:
| Target | Op | Behavior |
|---|---|---|
Palette group | set | Load a chosen preset. All seven swatches are replaced in one shot. |
Palette group | cycle | Walk an ordered list of presets. Each press loads the next; wraps at the end. |
Palette group | nudge | Step ±N through every saved preset in order (factory + custom). Negative values go backwards, wrap at edges. |
Source · color-group | set | Bind the group to a specific swatch (1–7, or 0 for Off — slider values take over). |
Source · color-group | cycle | Advance the binding 1 → 2 → … → 7 → 1 on each press. |
Source · color-group | nudge | Bump the binding by ±N swatches per press. Wraps at 1 and 7. |
Source · color-group | random | Pick a random swatch for the group on each press. |
invert isn’t meaningful on palette targets — the Operation segmented hides it. snapshot isn’t applicable either (it has a separate entry point).
Editor fields
Each combination gets its own purpose-built sub-editor. The inline copy below the target row tells you exactly what the button will do, so you rarely need to flip back here.
Palette group+set— pick a preset from the Palette dropdown. A tiny swatch strip previews it. The button also stores a snapshot of the swatches at the time of assignment, so the action keeps working even if the preset is later deleted.Palette group+cycle— build a list of presets. Rows render as numbered entries with the preset name, a swatch strip, and an×to remove. Use the Pick a palette… dropdown and the explicit + Add button to append. Presets already in the list disappear from the picker so you can’t accidentally double-add.Palette group+nudge— one Step by field (default1). Negative values go backwards through the ordered preset list.Source · color-group+set— one Swatch field (1–7, or0for Off).Source · color-group+cycle— no fields. The cycle walks forward one swatch per press.Source · color-group+nudge— one Step by field (default1). Wraps at 1 and 7.Source · color-group+random— no fields.
Shortcut: create from a color slider, chip strip, or palette bar
You rarely need to open the button editor from scratch for swatch-targeted buttons. Three shortcuts create them pre-wired:
- Right-click a hue/saturation/brightness slider on any source with a color group → Create Palette Action Button. Builds a
cyclebutton targeting that source’s color group and opens the editor. - Right-click the
paletterow in the parameter panel (or click the gear icon at the end of the row) → Create Palette Action Button. Same result, scoped to the whole color group rather than a single slider. - Right-click a swatch in the main Palette bar → Create Palette Action Button. Builds a
setbutton targeting the global palette group on that specific swatch.
All three land in the top-level action button grid with a label like color cycle, bg cycle, or palette 3, ready to bind to a pad.
Live state in the main palette bar
When you select a source in the chain, the main Palette panel highlights every swatch that source is currently bound to (any color group) at full opacity, and dims the rest. A palette-swatch action button walking its target through the palette makes that highlight move in step — press the pad, the outlined swatch advances.
A few things worth knowing about Source · color-group cycle/nudge/random:
- The cycle “state” is the binding — there’s no hidden counter on the button. That means:
- The cycle position persists with the show and reload-saves correctly.
- It’s undoable through normal history.
- It syncs to detached panel windows like every other store update.
- If you drag a swatch onto a color group between presses, the next press picks up from wherever the binding now points.
Typical use: put one button on every beat targeting lead · color to walk the lead through the palette while the rest of the chain stays stable. Or bind two adjacent pads to voronoi · color1 and voronoi · color2 to de-sync a single source’s two colors.
Tile hints
The tile’s tiny corner hint updates to show what the button is currently doing:
| Target / op | Hint example |
|---|---|
Palette group + set | preset name (or PAL) |
Palette group + cycle | P 1/3 (position in the list) |
Palette group + nudge | → PAL or ← PAL |
swatch + set | S 3 (swatch number, 1-indexed) |
swatch + cycle | → color |
swatch + nudge | +1 color or -1 color |
swatch + random | RND color |
Behaviour
Sits above the per-action groups. Controls how the button feels when triggered:
- Press behavior — how the press itself is interpreted:
Stay fixed— press to turn on, press again to turn off (latching toggle)Momentarily— active while held, releases on let go
- Transition type —
instant,smooth,elastic,bounce, orlag. A small live curve preview sits next to the picker so you can see how the spring will respond. - Transition time — duration of the transition animation (0.05–5 seconds)
- Stop mode — what happens when a nudge or cycle reaches the parameter’s edge:
clamp— stop at 0 and 100wrap— loop around to the other endaccumulate— keep counting past the range (useful for rotation)
Bindings — trigger manually or by BPM
At the top of the Advanced column:
- Trigger manually — keyboard shortcut + MIDI pad binding. The keyboard pill shows on the grid tile once set.
- Trigger by BPM — Beat sync (snap press to beat boundary), plus an optional Auto-fire on pattern. When pattern auto-fire is on, a step sequencer unfolds under Bindings — see Beat Pattern.
- Velocity-sensitive (inside the relevant per-action VALUES group) — scale nudge / set amounts by MIDI velocity (harder press = bigger effect).
Tile feedback during performance
Tiles aren’t static during a show:
- Operation glyph (top-center, large) — the op the button runs, shown as a symbol:
↑/↓/↕for nudge,=for set,↻for cycle,⚂for random,↔for invert,⇉for momentary,⧉for snapshot. Multi-action buttons join their glyphs with/. - Keyboard binding pill (bottom-right corner) — present when a keyboard shortcut is bound. Tinted in the button’s display color.
- Transition progress bar (bottom edge) — thin fill while a spring is settling after a press.
- Press-glow — the tile scales and glows briefly (≈100ms) when pressed, so you see the hit even if the visual result is subtle.
- Toggle on/off dot — toggle buttons render a hollow/filled dot that fills while the modulation is active.
Fixing broken buttons
If you delete a source that has buttons targeting it, the orphaned buttons get a red ! badge in the corner. Click it to open a fix-it popover that lists each broken action and offers two paths:
- Rebind to — pick a compatible node from the dropdown to take over the target
- Remove — drop the action from the button entirely
Both choices flow through normal undo/redo.
Templates reference
| Template | What it does |
|---|---|
| Strobe | Hold to flash to max, releases instantly |
| Beat cycle | Cycle through values, snaps to the next beat on press |
| Snapshot recall | Smoothly recall a saved scene with a half-second ease |
| Nudge + | Increment a parameter by a small amount on each press |
| Nudge − | Decrement a parameter by a small amount on each press |
| Randomize | Pick a random value within the parameter range on each press |
| Invert | Flip a parameter to its mirrored value on press |
Templates are starting points — you can tweak any setting after creation.
Beat Pattern — auto-fire on a step sequence
Every action button can run a beat pattern — a TR-808-style step sequencer
that fires the button automatically on a tempo-locked grid. Open the editor,
find the Bindings group at the top of the Advanced column, enable
Trigger by BPM, then tick Auto-fire on pattern. A step grid unfolds below.
Editing a pattern
- Steps — pick the loop length:
4,8,16, or32cells. - Step = — pick how many beats one cell takes:
1/16,1/8,1/4,1/2, or1(whole) note. - Click a cell to toggle it on (full velocity) or off.
- Scroll on a cell to set partial velocity in 0.1 increments. Per-cell velocity only takes effect when Velocity-sensitive (in the relevant action’s VALUES group) is also enabled — without it every non-zero cell fires at full strength.
- Clear wipes every cell to zero.
- The 4-step length at 1/4 notes is “fire on every beat.” A 16-step at 1/16 notes is one full bar of sequencer fun. A 6-step at 1/4 notes cycles every 1.5 bars — a polyrhythm.
Pattern fires go through the same code path as a manual press, so snapshots, fluid impulses, color cycles, and toggle states all behave identically to clicking the tile by hand.
Works with every tempo source
Beat Pattern reads BeatClock.totalBeats, the same fractional beat counter
every tempo source feeds into. So your pattern automatically follows
Fixed BPM, Tap, Auto Sync, Ableton Link, or MIDI Clock In with zero per-source setup.
Play / pause vs enable / disable
Two distinct concepts:
- Enabled is configuration — does this button HAVE a pattern at all? Lives in the editor, persists across show reloads.
- Playing / paused is runtime state — is the pattern firing right now? Toggled with the small ▶/⏸ icon that appears on the tile when a pattern is enabled. Reset on show reload (everything starts playing).
So a pattern can be configured-and-paused, or configured-and-playing, or not configured at all. The tile icon disappears when there’s no pattern.
BEAT SYNC — global panic pause
Once any button on the current node has an enabled pattern, a small
● BEAT SYNC pill appears in the inline ACTION BUTTONS header. Click
it to globally bypass all beat-pattern playback across the whole show —
the live “stop everything” switch. Per-button state is preserved; flip
the pill back ON and patterns resume on the next pulse.
For one-handed live use, drag the BEAT SYNC pill onto any controller pad to bind it. Pressing the bound pad toggles the global flag — perfect for a panic footswitch or a dedicated APC button. (Right-click → “Learn MIDI binding…” works as an alternative when the controller panel is hidden.)
Binding to hardware
See the MIDI guide for binding action buttons to physical pads. The on-screen tile color is what gets translated to your controller’s LED, and the tile mirrors the live LED state back, so what you see in the editor matches what you see on your hardware.