Blog MainStage 9 min read

MainStage 3 — Gamepad as a Live Performance Control Surface

Wire a PS5 DualSense or Xbox controller into Apple MainStage 3: Screen Controls, Assignments & Mappings, and Patch Change on the d-pad.

By Aidxn Design

MainStage is the only Apple app built purely for playing live, and it has the best controller-assignment model of any host on macOS — hardware assignments and parameter mappings are deliberately separate layers. That separation is exactly what makes a gamepad work so well here: you bind the right trigger to a screen control once, and then every Patch in the Concert decides for itself what that trigger does. This guide sets up a MainStage gamepad MIDI controller rig with a DualSense, DualShock 4, Xbox or 8BitDo pad, using Universal Controller MIDI as the HID-to-CoreMIDI bridge.

TL;DR
  • What you do: bring the IAC Driver online, open the MainStage Layout tab, drop in screen controls, Learn them from the gamepad, then map them per Patch.
  • What you need: MainStage 3.5+, macOS 12 or later, any supported controller, the bridge.
  • Time: about 15 minutes for a four-knob, eight-button layout.
  • Why it is different: hardware assignment is Concert-wide, mapping is per-Patch — one physical control, a different job in every song.

Can MainStage use a PS5 or Xbox controller as a MIDI controller?

Yes, as soon as something translates the gamepad's HID reports into CoreMIDI — MainStage itself only ever looks at MIDI ports. macOS does recognise a DualSense natively through the GameController framework, but that framework feeds games, not audio apps, so nothing from it ever reaches MainStage's MIDI input list. The bridge sits in that gap: it reads the pad, applies deadzones and curves, and publishes a virtual port named UCM Bridge that MainStage enumerates alongside any USB keyboard you have plugged in. If you want the full picture of how those ports work on each OS, the virtual MIDI port explainer covers it.

Why a gamepad beats an extra MIDI keyboard on a cramped stage

Most MainStage rigs already have a keyboard — what they lack is hands-free parameter control that does not need a music stand. A gamepad gives you two analogue triggers, two analogue sticks, fourteen buttons and (on a DualSense) a clickable touchpad, in a shape your hands find in the dark. Guitarists velcro one to a mic stand. Keyboard players keep one on the left of the keybed for Patch changes and expression. Vocalists hold one. It fits in a gig bag pocket, runs off a USB-C cable from the same laptop that runs the Concert, and there is nothing to re-patch at soundcheck.

The other practical win is redundancy. A gamepad is a $70 spare you can carry two of, which is the same logic behind the festival redundancy rig — if the expression pedal dies mid-set, the right trigger is already doing the same job.

What you need before you start

  • MainStage 3.5 or later — tested through 3.7 on Apple silicon
  • macOS 12+ with the built-in IAC Driver (no third-party loopback tool required)
  • Universal Controller MIDI — download the macOS build
  • A supported controller — DualSense, DualSense Edge, DualShock 4, Xbox Series, Switch Pro or 8BitDo
  • A USB-C or micro-USB cable — wired is the right call for a live rig, see the note on Bluetooth below

How do you get the bridge port into MainStage?

Bring the IAC Driver online in Audio MIDI Setup, then launch the bridge — MainStage rescans CoreMIDI at startup, so launch order matters.

1. Enable IAC

Press Cmd-Space, type Audio MIDI Setup, open it, then choose Window → Show MIDI Studio. Double-click the IAC Driver icon and tick Device is online. Add a port called UCM Out if there is not one already. This is a one-time step on each Mac.

2. Launch the bridge, then MainStage

Open Universal Controller MIDI and plug the controller in. Confirm the input scope moves when you push a stick — if it does not, the pad is asleep; on a DualSense hold the PS button for a second. Then open MainStage. If MainStage was already running, quit and relaunch it, because it caches the MIDI device list at launch and will not pick up a port created afterwards.

3. Check the MIDI Activity light

In MainStage's Edit tab, the MIDI Activity indicator sits top-right. Press a face button and it should flicker. If it is dead, open MainStage → Settings → MIDI and make sure the bridge port is not excluded under the device list.

Signal flow diagram: Controller to Bridge to IAC Driver to Screen Control to Plug-in parameter. Controller HID reports Bridge translation IAC Driver virtual MIDI port Screen Control assigned in Layout Plug-in parameter mapped in Mappings
MainStage splits assignment and mapping into two tabs. Layout binds the physical control; Mappings binds the result to a parameter.

How do you assign a gamepad control in the Layout tab?

Drag a screen control onto the Layout canvas, select it, then click Learn in the Screen Control Inspector and move the physical control you want to bind.

Click Layout in the top-left toolbar. The palette down the left side has Knobs, Faders, Buttons, Keyboards, Drum Pads, Waveforms and Text. For a gamepad rig, the useful set is:

  • Four Knobs — left stick X/Y, right stick X/Y
  • Two Faders — L2 and R2 analogue triggers
  • Eight Buttons — four face buttons, L1, R1, Options, Share
  • One XY Pad — the DualSense touchpad, if you have one

Select a knob, and in the Screen Control Inspector on the right open the Hardware Assignment section. Click Learn, push the left stick fully left then fully right, and MainStage captures the incoming CC. Click Learn again to stop. Repeat for each control. This is the part people over-think — you never type a CC number, you just wiggle the thing.

Set the right responsiveness per control type

Still in the Screen Control Inspector, the Responsiveness popup matters a lot for sticks. A spring-loaded stick snaps back to centre when you let go, which is wrong for a filter cutoff you want to leave parked. Options:

  • Absolute — the parameter follows the stick exactly. Right for triggers and the touchpad.
  • Pickup — nothing moves until the incoming value crosses the stored value. Right for Patch switching, stops values jumping.
  • Relative — treats movement as an increment. The cleanest answer for self-centring sticks: push and hold to sweep, release to park.

How do you map a control to a plug-in parameter?

Switch to the Edit tab, select the screen control, and click the target parameter in the Channel Strip Inspector while the Mappings pane is open.

This is the half that is per-Patch. In the Edit tab, pick a Patch in the Patch List, select a screen control in the layout at the top of the window, then look at the Mappings pane in the inspector. Click + (or the parameter-picker row), then click the actual control in the plug-in window or the Channel Strip. MainStage records the mapping and shows it as a named row.

Because mappings are per-Patch, the same knob can be Alchemy's Transform Pad in one song, Retro Synth's filter cutoff in the next, and a reverb send in the third. That is the whole reason to bother with MainStage instead of running the show out of Logic. If you are coming from a Logic Pro gamepad setup, this is the big conceptual difference to internalise.

Patch Change, Set Change and transport on buttons

Select a Button screen control, and in Mappings choose Actions instead of a plug-in parameter. The ones worth binding:

  • Next Patch / Previous Patch — d-pad right and left
  • Next Set / Previous Set — d-pad up and down
  • Panic (All Notes Off) — hold Options, or a dedicated button. Non-negotiable on stage.
  • Tap Tempo — R3 (right stick click)
  • Playback Play/Stop — Share button, if you run backing tracks from a Playback plug-in

Default mapping table for a MainStage Concert

This is the layout the bridge's default preset produces, and what each control is worth mapping to in MainStage. Everything is on MIDI channel 1 unless you change it in the mapping editor.

Gamepad inputMIDIMainStage screen controlSuggested mapping
Cross / ANote 60ButtonPatch Change → Next Patch
Circle / BNote 62ButtonPanic — All Notes Off
Square / XNote 64ButtonPlayback → Play/Stop
Triangle / YNote 65ButtonSustain latch (channel strip)
L1 / LBNote 67ButtonPrevious Patch
R1 / RBNote 69ButtonNext Patch
L2 / LT triggerCC 1FaderMod wheel / filter cutoff
R2 / RT triggerCC 2FaderExpression on the active Patch
Left stick XCC 3Knob (Relative)Plug-in macro 1
Left stick YCC 4Knob (Relative)Plug-in macro 2
Right stick XCC 5Knob (Relative)Reverb send
Right stick YCC 6Knob (Relative)Delay send
Touchpad X / YCC 16 / 17XY PadAlchemy Transform Pad
D-pad up/right/down/leftNotes 78–81ButtonsSet and Patch navigation

Should you run the gamepad over Bluetooth for a live show?

No — use the cable for anything with an audience, and keep Bluetooth for rehearsal and writing.

Bluetooth is fine for bedroom work, but a crowded venue is the worst possible 2.4 GHz environment: hundreds of phones, the house Wi-Fi, wireless IEMs and the lighting desk all fighting for airtime. The failure mode is not gradual either — you get a clean connection then a dropout at the worst moment. A USB-C cable removes the entire class of problem and charges the pad while you play. Our Bluetooth MIDI latency write-up goes through the jitter sources if you want the detail, and the hot-swap guide covers what to do when a controller dies mid-song anyway.

Three MainStage-specific tricks worth stealing

Layer the triggers against aftertouch

Most stage keyboards have no aftertouch, or have the kind you cannot control. Map R2 to CC 2 and then, in the Channel Strip Inspector, route CC 2 to whatever the patch would have used aftertouch for — filter cutoff on a lead, vibrato depth on strings. Because the trigger is analogue over its full travel, it gives you a smoother ramp than a keybed's aftertouch strip does.

Use the touchpad as an Alchemy Transform Pad

Drop an XY Pad screen control into the layout, Learn its two axes from touchpad X and Y, then map it straight onto Alchemy's Transform Pad in the Mappings pane. It is the closest thing MainStage has to a Kaoss-style morph surface, and it costs nothing extra. The touchpad XY guide covers calibration and two-finger behaviour.

Keep one Concert-wide Panic button

A stuck note in a 2,000-seat room is the only MainStage failure the audience actually hears. Bind Circle to the All Notes Off action in every Patch, label the screen control PANIC in big text, and make muscle memory out of it at rehearsal.

Troubleshooting

  • Bridge port missing from MainStage. IAC is offline, or MainStage launched first. Fix IAC in Audio MIDI Setup, quit MainStage, relaunch.
  • Learn captures the wrong control. A resting stick is still drifting. Widen the deadzone in the bridge's calibration panel before you Learn, then narrow it again afterwards.
  • Knob snaps to a value on Patch change. Change Responsiveness from Absolute to Pickup or Relative in the Screen Control Inspector.
  • Face button retriggers on release. Set the Button screen control's type to Momentary rather than Toggle, or invert it — MainStage treats note-off as an event too.
  • CC stream looks noisy in automation. Lower the bridge poll rate and increase smoothing. The latency tuning doc has the trade-off laid out.
  • Only three presets will save. That is the free-tier limit. Pro removes it, along with the mapping editor and per-binding curves — see Pro vs Free.

FAQ

Does MainStage see a gamepad without any extra software?

No. macOS exposes a DualSense or Xbox pad as an HID game controller, not as a MIDI device, so MainStage never lists it. Universal Controller MIDI converts the HID stream into a CoreMIDI port that MainStage treats as a normal controller.

Which MainStage version does this work with?

MainStage 3.5 and later, including MainStage 3.7 on Apple silicon. The Layout tab, Screen Control Inspector and Assignments & Mappings panes referenced here have been stable across that whole range.

Can one gamepad control multiple Patches differently?

Yes, and that is the point of MainStage. Hardware assignments live at the Concert level, mappings live at the Patch level — so the right trigger is physically bound once, then means filter cutoff in a synth Patch and expression in an orchestral Patch.

Why does my knob jump when I switch Patches?

MainStage picked up the stick position before you touched it. Set the screen control Responsiveness to Pickup or Relative in the Screen Control Inspector, which makes it wait until the incoming CC crosses the stored value.

Do I need Pro for a MainStage rig?

The free build sends the default notes and CCs, which is enough to learn a few knobs. Pro is what you want once you need custom bindings, per-binding curves, more than three saved presets, or a second controller on its own port.

Where to go next

Once the Concert is working, the useful next step is building per-song variations rather than more mappings. Duplicate a Patch, change what the right trigger controls, and you have a second song with zero new hardware setup. If you are also running visuals or backing tracks from the same laptop, the bridge can fan out to a second virtual port so MainStage and your VJ host both see the controller — that is covered in the multi-DAW fan-out doc.

Download Universal Controller MIDI, bring IAC online, and spend fifteen minutes in the Layout tab. The gamepad in your drawer is a better live surface than most of what is on the stand.

Keep reading

More setup walkthroughs