Universal Controller MIDI

Templates

Templates overview

Templates are reusable controller-to-MIDI mappings. Learn how they differ from presets and how Universal Controller MIDI loads them.

Updated

A template is a complete controller mapping packaged as a single JSON file — button-to-note assignments, axis CCs, stick corner zones, touchpad routing, OSC targets, and adaptive trigger haptics, all in one flat object. It is the unit you ship, share, version, and ultimately drop into someone else's library so they get your sound in one click.

Everything else in the app — the mapping editor, the marketplace, the import wizard — exists to produce, modify, or move templates around. If you understand the shape of one, you understand 90% of the app.

Templates vs presets

In Universal Controller MIDI the words get tossed around, so pin them down. A preset is a template that lives in your library and is currently selectable from the dropdown. A template is the file on disk (or in the marketplace) that produced it. Every one of the 48 bundled mappings is both — a template shipped inside the binary, exposed as a preset.

Why split the terms? Because a template can exist without ever being loaded, and a preset can be edited live without writing anything to disk. Keep the distinction and the rest of the docs make sense. The deeper breakdown lives at presets vs templates.

What lives inside

Every template conforms to schema_version: 2. The shape is flat and predictable — no nested mapping graphs, no inheritance, no conditional layers. If you can read JSON, you can read a template:

{
  "name": "Beat Making — Finger Drumming",
  "schema_version": 2,
  "midi_channel": 0,
  "deadzone": 0.05,
  "poll_hz": 100,
  "buttons": { "0": 36, "1": 38 },
  "axes": { "0": 3, "1": 4 },
  "hats": { "up": 78, "down": 79, "left": 80, "right": 81 },
  "left_stick_corners": { "enabled": true, "n": 8, "notes": [64,65,66,67,68,69,70,71], "r_enter": 0.92, "r_exit": 0.75 },
  "right_stick_corners": { "enabled": false },
  "touchpad": { "enabled": false },
  "osc": { "enabled": false },
  "l2_haptic_effect": null,
  "r2_haptic_effect": null
}

The 48 bundled categories at a glance

The pack inside the binary is deliberately broad. Here's how it splits, so you know whether your use case is already covered before you go writing JSON:

CategoryTemplatesExamplePrimary surface
Beat making9Finger Drumming, MPC-style 16-padbuttons + stick corners
DAW control11FL Studio Channel Rack, Pro Tools HUIbuttons + axes
VJ / visuals7Resolume Arena, Modul8, TouchDesigneraxes + touchpad
MPE / expression4MPE Polyphonic, Sticks-as-LFOaxes + touchpad
Live performance8Podcast Soundboard, Adaptive Triggershaptics + buttons
OSC / non-MIDI5Drone OSC Flight, lighting consoleosc
Hardware-specific48BitDo Pro 2 Paddles, GameCube adaptervaries

The 48 bundled templates live inside the app binary. They never overwrite your saved presets and you cannot break them by editing — duplicates are written to your user library instead.

Real-world template patterns

Five recipes that come up over and over. Steal these as starting points:

  • Finger-drum kit — 16 face/shoulder buttons mapped to buttons as GM drum notes (36–51), deadzone: 0.05, no stick corners. The starter pack.
  • Scale-locked melody — both stick corners at n: 8, notes set to a scale (C major, A minor pent), D-pad shifts octaves via program change.
  • VJ scratch deck — left stick to axes CC 1+2 for clip XY, touchpad enabled for two-finger speed/pitch, shoulder buttons trigger scenes.
  • Expression rig — L2/R2 as continuous CCs (mod wheel + expression), l2_haptic_effect: "trigger_resist" for that bow-feel, sticks driving LFO depth.
  • Hybrid OSC controller — half the surface speaks MIDI to a DAW, the other half routes through the osc block to lighting or visuals. One controller, two protocols.

Where to next

Pick a path:

Edit this page on GitHub Updated
ESC

Type to search.