How to use Joy-Cons or a Switch Pro Controller as a MIDI controller on a Mac
Pair the Switch Pro Controller or the Joy-Cons with the Mac, open InputConfig, and turn on one of its built-in MIDI presets. The face buttons then play notes, the sticks send Control Change and pitch bend, and music apps see a MIDI input named InputConfig. Two things differ from other pads: ZL and ZR are on or off, not analog, and the face buttons are bound by position, not by letter.
I make InputConfig. It is free on the Mac App Store, with no account and nothing to buy inside it.
On this page: 9 sections
Steps
- Pair the Switch Pro Controller or the Joy-Cons with the Mac over Bluetooth, on macOS 13 or later.
- Open InputConfig and activate the built-in preset MIDI: CC Dials or MIDI: DAW Performance.
- In the music app, enable the InputConfig MIDI input and arm an instrument track.
- Press the bottom face button, B, to play a note.
Set it up
- You: Pair the controller, open InputConfig, and activate MIDI: DAW Performance from the built-in presets. Arm a software instrument track in the music app and press B, the bottom face button.
- InputConfig: Publishes a MIDI source named InputConfig while it runs, and sends a note for as long as the button is held.
- Check: The track's meter moves and you hear middle C.
- Logic Pro and GarageBand. Nothing to switch on. They listen to every MIDI source, InputConfig included.
- Ableton Live. In Settings, Link, Tempo and MIDI, switch on Track for the InputConfig input to play notes, and Remote to map controls.
- FL Studio, Reaper, Bitwig and others. Enable the InputConfig input in the app's MIDI settings.
No IAC Driver and no virtual MIDI cable are needed. How to connect a Switch Pro Controller to a Mac and Joy-Cons have the pairing steps.
InputConfig is free on the Mac App Store. macOS 14 or later, no account, no tracking, open source.
Mind the button positions
Nintendo prints B at the bottom and A on the right, the opposite of an Xbox pad. InputConfig binds by position, so a preset row labeled A / Cross fires on the bottom button, which a Switch controller calls B.
| Position | Printed on a Switch controller | Sends, in MIDI: DAW Performance |
|---|---|---|
| Bottom | B | Note C4 (60) |
| Right | A | Note E4 (64) |
| Left | Y | Note G4 (67) |
| Top | X | Note C5 (72) |
| Right stick, left and right | Pitch bend, down and up | |
| Right stick, down | CC 1, modulation | |
| D-pad up, down, right | MIDI Start, Stop, Continue |
Go by where the button is, not by the letter printed on it. To bind a row to a button of your choice, press Scan and press the button.
Put expression on a stick, not a trigger
ZL and ZR on a Switch Pro Controller and on Joy-Cons are digital. A CC bound to one jumps from nothing to full, where an Xbox or PlayStation trigger would glide. The sticks are fully analog, so use them for anything that should move by degrees.
- Sweeps and swells. MIDI: CC Dials puts CC 1, CC 11, CC 74 and CC 71 on the two sticks.
- Notes and switches. ZL and ZR make good extra notes, or a CC that is either on or off, such as sustain, CC 64.
On a Nintendo pad the sticks are the faders and the triggers are buttons.
Play one Joy-Con or a pair
- A pair. With both connected, macOS can show a combined Joy-Con Pair that behaves like a full-size gamepad, with two sticks and a full set of buttons.
- One Joy-Con, sideways. Four face buttons, two rail buttons and a stick: four notes, two more on the rail, and pitch bend on the stick. Bind each stick direction with Scan, pushing the stick the way you want, and the sideways offset comes out right.
- Two players. Each Joy-Con is its own controller, so two people can play one each.
Bindings made on the pair do not carry over to a single Joy-Con. Choose a pair or single Joy-Cons, and build the preset for that.
If the music app hears nothing
- Check InputConfig is running and the preset is active. The MIDI port exists only while the app runs.
- Open the Live Visualizer and press a button. If nothing lights, the Mac is not reading the controller.
- Enable the InputConfig input in the music app, and arm the track.
- Match the channel. A track that listens to one channel must be set to the channel in the row.
Most silent setups are a track that is not armed, or an input that is not switched on. The Switch Pro Controller tester and the Joy-Con tester show whether the browser can read the pad at all.
What it cannot do
- Analog triggers. ZL and ZR are on or off.
- Motion and rumble. macOS does not pass through the motion sensors or HD rumble of Nintendo controllers, so there is no gyro and no vibration on a note.
- Velocity from the buttons. Each note plays at the velocity set in its row, from 1 to 127.
Buttons and sticks work in full, and that is enough for notes, bends and four controllers.
The short version
- Pair. Bluetooth, macOS 13 or later.
- Activate. MIDI: DAW Performance for notes, MIDI: CC Dials for knobs.
- Remember. Bottom button first, and sweeps on the sticks.
A Joy-Con is the smallest MIDI controller most people already own.
Questions
Can Joy-Cons be used as a MIDI controller on a Mac?
Yes. InputConfig, a free Mac app, sends MIDI notes from Joy-Con buttons and Control Change or pitch bend from the stick, through a MIDI port music apps can use.
Can a Switch Pro Controller send MIDI?
Yes, on a Mac with InputConfig. The buttons play notes and both sticks send Control Change or pitch bend that follows their position.
Why does my Switch controller's trigger jump from 0 to 127?
ZL and ZR are digital buttons, not analog triggers. Put controls that should move by degrees on a stick.
Can I use Joy-Con motion controls for MIDI on a Mac?
No. macOS does not pass the Joy-Con's accelerometer or gyroscope to apps. Buttons and sticks come through.
Why does pressing A play the wrong note?
InputConfig binds by position. A row labeled A / Cross fires on the bottom face button, which Nintendo prints as B. Press Scan on the row and press the button you want.
Do I need the IAC Driver?
No. InputConfig creates its own MIDI source, named InputConfig, whenever it runs.
Related
Free. macOS 14 or later. No account, nothing leaves your Mac. Open source on GitHub.
Updated