Universal Controller MIDI

Mapping & customization

Map a button to a MIDI note

Bind a face button, D-pad direction, or shoulder button to a fixed MIDI note. The fastest mapping you can make — under 10 seconds.

Updated

The button-to-note mapping is the "hello world" of controller-as-instrument. You press a button, the bridge fires Note On + Note Off, your DAW plays a note. Ten seconds in the editor, zero MIDI theory required, and it works the same on every controller the bridge supports.

It's also the binding most new users build first, so we'll go a little deeper than just "click button, type 60". By the end of this page you'll know how to lay out a full one-octave keyboard, how to build a four-piece drum rack on the face buttons, and the small velocity tricks that separate a static binding from one that actually plays nicely with sampled instruments.

What you need

One connected controller (USB or Bluetooth — see connect over USB if you haven't paired yet) and a target — a DAW track or a soft-synth listening on the bridge's virtual MIDI port. Keep your DAW open in the background so you can hear the note land as soon as you save.

If the controller isn't showing up in the bridge yet, jump back to controllers and confirm the device is claimed. The Mapping tab is read-only when no controller is active.

Open the editor

Open the app, switch to the Mapping tab, then click any button in the controller diagram. The right-hand panel flips to that button's binding. If nothing happens when you click the diagram, the controller probably isn't claimed yet — check the status pill at the top.

Pick a note

In the binding panel, set Type to Note, then enter a MIDI note number from 0 to 127. Note 60 is middle C (C4). Note 36 is the standard kick-drum slot in most drum maps. Channel defaults to 1; bump it if you want a separate track to listen.

MIDI note reference

You'll memorise these eventually but until then, keep this table bookmarked. These are the notes you'll actually map 95% of the time:

MIDI noteNameCommon use
36C2Kick drum (GM drum map)
38D2Snare
42F#2Closed hi-hat
46A#2Open hi-hat
48C3Bass octave (most synths)
60C4Middle C — the universal default
72C5Lead octave
84C6High lead / bell range
{
  "buttons": {
    "cross":    { "type": "note", "note": 60, "channel": 1, "velocity": 100 },
    "circle":   { "type": "note", "note": 62, "channel": 1, "velocity": 100 },
    "square":   { "type": "note", "note": 64, "channel": 1, "velocity": 100 },
    "triangle": { "type": "note", "note": 65, "channel": 1, "velocity": 100 }
  }
}

Common scenarios

A few starter recipes worth stealing wholesale:

  • Four-pad drum rack on face buttons: Cross = 36 (kick), Circle = 38 (snare), Square = 42 (closed hat), Triangle = 46 (open hat). Channel 10 in General MIDI is the drum channel, so set channel: 10 across the four.
  • One-octave keyboard on D-pad + face: D-pad up/right/down/left = C, D, E, F. Face buttons = G, A, B, C. Eight diatonic notes you can finger-pick in any C-major track.
  • Transport from shoulder buttons: L1 = MMC Play (CC, not note), R1 = MMC Stop. See stick to CC for the CC binding pattern.
  • Octave shift via Share/Options: Bind Share to type: "octave-down" and Options to type: "octave-up". The bridge offsets every note binding by ±12 on press.
  • Velocity from a trigger: Set the button's velocity field to "L2". Now press-hold L2 to set velocity, then tap the button — combo drumming on one hand.

Save and test

Hit Save (or Cmd/Ctrl+S). The bridge applies the change live — no reload, no port reset. Press the button on the controller and watch the MIDI monitor at the bottom of the editor. You should see Note On 60 on press and Note Off 60 on release.

What's next

Buttons are binary. To send a continuous value as you move something, jump to map a stick to a CC or map a trigger to a CC. To zoom out on what notes and CCs even are, see MIDI messages.

Edit this page on GitHub Updated
ESC

Type to search.