Universal Controller MIDI

Core concepts

Presets vs templates

A preset is your saved mapping. A template is a parameterised preset designed to be shared. Same JSON shape, different intent — here's the line between them.

Updated

A preset is your saved mapping; a template is the same file dressed for the marketplace. Same JSON shape, different intent — and knowing which one you're building changes how you name your bindings, where the file lands on disk, and whether anyone else gets to download it.

Presets — your stuff

A preset is the file you save when you hit Save in the mapping editor. It lives in your local presets folder, it's tied to your controller, and it carries no metadata beyond a name. One file, one mapping, one purpose.

Presets are fast to make. Spend 30 seconds binding triggers for a quick Ableton jam, hit save, name it "abletonjam-thursday", done. You'll have dozens of these.

{
  "type": "preset",
  "name": "abletonjam-thursday",
  "controller": "DualSense",
  "bindings": [ ... ]
}

Templates — for other humans

A template is what a preset becomes when you add the metadata needed to share it. Author, version, target DAW, tagged use case, an optional cover image, a description. The mapping is the same JSON — but now it's discoverable, versioned, and installable by anyone.

{
  "type": "template",
  "name": "FL Studio — Drum Pads",
  "author": "aidxn",
  "version": "1.2.0",
  "daw": "FL Studio",
  "tags": ["drums", "performance"],
  "bindings": [ ... ]
}

Side-by-side

If you forget which is which, this table is the quick reference. The headline: presets are personal, templates are products. Every other difference falls out of that one decision.

AttributePresetTemplate
Where it lives~/UCMIDI/presets/~/UCMIDI/templates/
Required metadataJust a nameName, author, version, DAW, tags
VersionedNoYes — SemVer
SignedNoYes — sha256 on upload
ShareableManual file copyOne-click marketplace
ValidatedNoYes — schema + binding check
Cover artNoOptional 1200×630 PNG

Promoting a preset to a template

In the editor, hit File → Convert to template. The app prompts for the metadata, validates the bindings (no unbound controls, no duplicate channels), and saves into your templates folder. From there you can share to marketplace or keep it private.

The validator runs five checks before it lets you promote. If any fail you get an inline error, not a silent broken upload:

{
  "validation": {
    "noUnboundControls": true,
    "noDuplicateChannelAndCC": true,
    "metadataComplete": true,
    "versionIsSemver": true,
    "coverImageDimensions": "1200x630"
  }
}

The version numbering rule of thumb

SemVer is the standard, and we lean into it. Bump the patch number for typo fixes and cover-art swaps. Bump the minor when you add bindings. Bump the major when you change channels or note numbers in ways that'll break someone's existing DAW template. Treat installed-template users as collaborators — a major bump is a contract change.

Common mistakes

  • Sharing a preset before promoting it. The raw preset file works if you copy it manually, but it'll show up in the marketplace flow with empty metadata — and the validator will reject the upload. Promote first.
  • Hard-coding channel 1 in a template. Many DAWs route drums to channel 10. Either default to the right channel for the use case, or use channel: "configurable" so the installer gets prompted.
  • Forgetting to bump the version. If you edit a published template and re-upload at the same version, every installed copy stays on the old version. Bump first, then upload.
  • Skipping the cover image. Listings without cover art get ~70% fewer downloads. A simple cover with the DAW logo + binding count earns its rendering time.
  • Treating template authorship as anonymous. The author field is public on the listing. Use a stable handle — it's what builds your following.

The takeaway

Build presets for yourself. Promote the good ones to templates when they're worth sharing. The mapping editor handles both — the difference is the metadata and where the file lands. Tour the template flow at templates overview.

Edit this page on GitHub Updated
ESC

Type to search.