Front panel, Performer
A flat layout of large controls bound to whatever matters in the song. Controls stay flat and legible at stage distance; only the chassis dresses up — the racks sit between side rails finished in brushed metal or, if you prefer the vintage-synth wood-cheek look, plain oiled walnut (Settings ▸ Appearance ▸ Rail finish). The moment you enter Performer mode (the default when you switch to Front), every authoring affordance disappears, what's left on screen is exactly what is bound to MIDI, OSC, and your script.
Edit mode vs. Performance mode
The toggle in the top-right (Edit / Editing) is the modal switch. In edit mode you see:
- A palette of widget kinds along the left.
- A grid overlay on the layout canvas.
- A property inspector on the right.
- Resize handles on the selected widget.
Toggle it off and all of that vanishes. The widgets stay; the chrome is gone.
Strips
The front panel is divided into strips (racks), horizontal bands of uniform height (configurable from 1U to 6U). Each strip is the same width as the canvas; height is the only degree of freedom.
Add a rack with the + Add rack button under the last rack (edit mode only); it opens the template picker, with a blank rack as the first card. Remove or reorder racks from the rack inspector. Each strip has a background style (graphite, navy, forest, crimson, ochre, plum) so you can colour-code regions of the panel for visual reference.
Rack templates
+ Add rack opens a gallery instead of silently creating an empty strip. Pick a card (double-click, or select and Add rack):
- Empty rack — a bare 3U rack, the old behaviour.
- Band mixer — eight channel strips mirroring a back-panel mixer (gain, bass/treble tilt, balance, mute / solo / bypass, fader with L/R meters) plus a master section with one output mute per audio interface.
- Guitar amp head — a single-channel amp faceplate: gain and three-band tone, presence / reverb / master, boost and power.
- Keyboard controller — a 1U stage-keyboard surface on stage-piano red: bender and mod, four knobs, four drawbars, four pads, and an expression pedal.
- Pedalboard — six stompboxes in a 1U row (delay, chorus, distortion, overdrive, compressor, tuner), each in its own coloured enclosure with two knobs and a footswitch. Every pedal is a visual group: click any part of it and the whole box selects and moves as one, delete the pedals you don't need, or duplicate one to grow the board.
- Your templates — anything you saved yourself (see below), with a delete affordance on hover.
Templates carry the layout, controls, colours, labels and script names — never plugin bindings or MIDI mappings. A freshly instantiated template is deliberately unassigned: wire it to your own plugins via the Connectivity panel and MIDI Learn. Script names ship stable (Gain1, Mute1, …) so Logic scripts written against a template resolve; instantiating the same template twice bumps the copies to the next free number, exactly like paste.
Save your own
Select a rack (click its background so the rack inspector opens) and use Save as template…. The rack's current layout is snapshotted — bindings and MIDI maps stripped — and appears in the gallery under your chosen name. User templates are stored per machine, not in the project file, so they're available in every project on this computer. A shared template marketplace is on the roadmap; saved templates already use the interchange shape it will speak.
Widget catalog
The full list is on Performer widgets. The short version: every kind of control your physical hardware offers has a 1U-friendly software equivalent:
- SwKnob, SwFader, SwButton, SwToggle, SwLed, SwBargraph, SwVuMeter, SwMeter, SwLabel, SwPanel. The originals.
- SwExpressionPedal, SwSustainPedal, SwDrawbar. Foot rockers, organ drawbars.
- SwPad, SwLedButton. Pads, latching buttons.
- SwTuner, SwMetronome. 1U bindings to back-canvas Tuner / Metronome cards.
Remote — the front panel on an iPad
With a licence, Settings ▸ Remote shares the front panel with every browser on your local network: scan the QR code (or open http://<your-mac>.local:8712) on an iPad, phone or laptop and you get the live panel — meters moving, controls working in both directions. A floating button takes the browser full screen; if the desktop app goes away the client shows a reconnect overlay rather than a stale panel.
While one or more remotes are connected the desktop statusbar shows a cyan REMOTE chip with the device count, and briefly pulses "modified remotely" whenever a change arrives from a remote — the operator at the desk always knows the console has other hands on it.
The remote view is performance-mode only: no edit mode, no inspector, no back panel. One caution for this first release: your Wi-Fi is the boundary. Anyone on the same network can open the panel while sharing is enabled, so flip it off when you're not using it. Per-device pairing is planned.
Bindings, the connectivity panel
Selecting any widget opens the inspector. The Connectivity panel is where you tell the widget what to do.
Five binding kinds:
| Kind | Widget shapes | What writes / reads |
|---|---|---|
| Plugin parameter | knob, fader, toggle, button | Pick a plugin card + a parameter |
| Plugin bypass | toggle, button, led-button | Pick a plugin card, toggle flips bypass |
| Mixer peak | bargraph, vumeter | Pick a mixer + strip + L/R, read-only |
| Tuner node | tuner widget | Pick a back-canvas Tuner card |
| Metronome node | metronome widget | Pick a back-canvas Metronome card |
| (unbound) | any | Script-only state. widget('NAME').set(...) writes; mouse interaction updates local value |
Scaling curves
For continuous controls (knobs / faders / pedals), pick a curve in the inspector: linear, log, exp, s-curve. The visual position moves linearly 0..1; the curve only shapes the value sent to the binding. Useful for log-frequency parameters or fine-control zones near unity.
Locked controls
The Locked switch swallows mouse / touch input on a widget. Hardware MIDI / OSC bindings still drive the parameter. Use it to protect a critical knob from accidental stage bumps without losing controller routing.
Anti-misclick drag threshold
Per-control pixel threshold before edits start counting. The default 0 lets a click immediately move the widget; bump it to 6 or 8 for low-light stage use where finger-precision is worse than rehearsal.
Groups
Two independent grouping kinds:
- Control group, multiple widgets mirror each other's value. Move one, every peer moves with it. Useful for paired mute / volume controls, ganged channel-strip mutes, or a single visual knob that drives a macro.
- Radio group, boolean widgets share an exclusivity rule. Turning one on flips every other peer off. Clicking the on-state widget is a no-op (the standard radio-button contract). Used for source switches (Audio / MIDI on a piano patch), variation pickers, scene buttons.
Set either group id in the inspector text input.
Iconic toggles
A toggle widget with iconOn / iconOff set replaces its lever visual with the matching Phosphor icon. Both states share the toggle color (off is dimmed by opacity, on glows) so a green source-switch reads as one widget across both states. Try speaker-high / piano-keys for an Audio ↔ MIDI source switch.
Locked-on radio groups
A widget in a radio group can only be turned off by activating another peer; clicking the currently-on widget itself does nothing. This applies to mouse, hardware MIDI, and script writes alike (the rule is enforced both in the click handler and in the widget bridge).
MIDI Learn
In edit mode, right-click any widget → MIDI Learn → wiggle the hardware control you want to bind. Stagewright captures the CC / note signature and writes it onto the widget. Subsequent hardware events drive the widget through the same path the mouse uses.
The bridge that routes hardware MIDI → bound plugin parameter lives at app scope, so MIDI keeps driving audio even when the user is on the Back or Logic view.
Keyboard shortcuts (Front, edit mode)
| Shortcut | Action |
|---|---|
| Cmd-Z / Cmd-Shift-Z | Undo / redo edits |
| Cmd-C / Cmd-V | Copy / paste widgets |
| Cmd-Shift-D | Duplicate selection |
| Cmd-A | Select all in this strip |
| Cmd-D | Deselect |
| Cmd-G | Group / ungroup selection (visual group) |
| Arrow keys | Nudge selected widgets one cell |
| Shift-Arrow | Nudge eight cells |
| Delete | Remove selected widgets |