Button / switch rig component
Footswitches advance patches. Expression pedals control parameters. But the panic button, the tap-tempo trigger, the skip to next song cue — those need a generic binary control. This is that control.
What it is
A rig component (same family as keyboards, footswitches, expression pedals, pads) that represents a single physical button or switch + the action it fires. Configurable in Setup mode; placeable as a widget in Perform mode.
The component is the controller abstraction, not the patch graph node — the patch graph references the rig component when it wants to react to its events. This is the same model as every other rig primitive (see Rig component catalog).
Configurable actions
Each button/switch has one configured action. The v0.6.0 dropdown ships only the actions whose engine support is in place — stubbed/coming-soon dropdown entries make for confusing UX (refined 2026-05-28). Actions whose engine support arrives later land in the dropdown in that later version’s release.
Actions in the v0.6.0 dropdown
| Action | What it does |
|---|---|
| Next Patch | Advance to next patch in current song |
| Prev Patch | Step back one patch |
| Jump to Patch | Direct jump to a specified patch (by name, number, or id) |
| Next Song | Advance to first patch of next song |
| Prev Song | Step back one song |
| Panic | Engine-level all-notes-off + sustain-off across all channels (depends on #3) |
| Toggle Performance Lock | Go Live / End Show |
| Toggle Bus Mute | Mute / unmute a specified bus (FOH / IEM / etc.) |
| Toggle Widget | Show / hide a named widget in the current layout |
| Open Plugin GUI | Open the GUI for a specific plugin in the active patch |
Actions that arrive in later versions
| Action | Lands in |
|---|---|
| Tap Tempo | v0.8.0 (engine tempo support) |
| Start Transport | v0.8.0 |
| Stop Transport | v0.8.0 |
| Send MIDI Message | v0.15.0 (extension API needed for named-message routing) |
| Custom Macro | v0.15.0 (extension API) |
Each lands in its target version’s dropdown — none ship as inert “coming soon” entries in v0.6.0.
Hardware sources
A single component can bind to one or more of:
- Hardware MIDI — a specific note or CC from a specific device + channel, captured via Learn
- Keyboard shortcut — a key combo on the laptop keyboard
- On-screen button — tap/click in Perform mode (always available — the widget itself is the source)
- Stream Deck button — via the v0.15.0 Stream Deck extension
Multiple bindings simultaneously is the normal case — same action on a footswitch AND a Stream Deck button.
Per-component config (full Part 7 spec)
- Type — momentary / latching / toggle
- Action — see table above
- Debounce time — ms, default 50
- Long-press action — optional secondary action, with threshold ms (default 800 ms)
- Double-tap action — optional, with window ms (default 350 ms)
- LED feedback — for latching/toggle modes, echoes state back to the bound device via matching CC/note (v0.6.0 baseline). Sysex pattern library is v1.x.
- Polarity invert — some pedals are normally-closed; flip the sense
- Throttle — max activations per second (defends against contact bounce or stuck signals)
Why all those options matter
Most live-performance hosts ship a “footswitch” type with two settings (Advance / Panic) and call it done. Real-world rigs hit edge cases:
- Polarity invert — some Boss FS-5L pedals invert vs the FS-5U; same jack, opposite signal
- Debounce — contact bounce on cheap pedals produces phantom double-advances
- Throttle — sustain jack stuck-on from a connector wiggle shouldn’t fire 50 patch-advances per second
- Long-press / double-tap — pro keys players stack actions on a single footswitch to free up hardware
These are the difference between “it usually works” and “it works every show.”
Switch vs button mode
- Momentary (button) — fires on press; default for most actions (panic, next patch, tap tempo)
- Latching (switch) — toggles state; fires once on enter, once on leave. Used for things like Performance Lock toggle, Toggle Bus Mute.
Live preview widget
Each component has a configurable Perform-mode widget:
- A large tap target (touchscreen-friendly)
- The configured action’s label
- Visual feedback on press (animation, color flash)
- Current state (for latching switches)
The widget editor in v0.10.0 lets you customize appearance per component (font, color, icon, size).
Why this exists
Without a generic button/switch component, every new action needs a bespoke widget + bespoke MIDI binding. By making the component generic and parameterized by action, the same plumbing covers panic, tap tempo, patch jump, bus mute, transport start, and every future action — including extension-API ones.
It also gives non-MIDI hardware (Stream Deck via v0.15.0 extension) a natural home in the rig model. A Stream Deck button is just a button/switch component with a Stream Deck source binding.
Replaces the old “footswitch actions” concept
Pre-v0.6.0, footswitch behavior was hardcoded in app config. The button/switch component generalizes this:
- Footswitch in pedal jack → button/switch component with hardware MIDI source
- Stream Deck button → same component, different source
- Keyboard shortcut → same component, keyboard source
One concept, many sources, parameterized action. The old footswitch config screen retires when this lands.
What ships in v0.6.0
- Component type registered in the rig catalog
- The v0.6.0 action set (see “Actions in the v0.6.0 dropdown” above) — transport / tap-tempo / send-MIDI / custom-macro arrive in their own future versions
- Learn flow for hardware MIDI binding (reuses v0.5.0 Learn machinery)
- Configurable widget for Perform mode (basic styling — full widget editor lands in v0.10.0)
- Multiple bindings per component (MIDI + keyboard + on-screen button)
- Debounce + throttle + polarity invert + long-press + double-tap
- LED feedback baseline (CC/note echo for latching/toggle modes)
Related pages
- MIDI Learn
- Device profiles
- Setup, Program, and Perform
- Extension API — for adding custom actions in v0.15.0