MIDI implementation
Meiji Sampler’s MIDI surface covers control mapping, a live monitor, and optional transport response.Control identification
Each MIDI control is uniquely identified by three properties:
A CC on channel 1 number 60 and a Note on channel 1 number 60 are treated as two separate controls.
Mapping behavior
Mappings are one-to-one in both directions:- One control maps to at most one action.
- One action maps to at most one control.
already mapped. Press Enter on the selected row to edit that control’s assignment. When you pick an action that is already mapped to a different control, MIDI Learn also selects the existing mapping row instead of replacing it.
Mappings are persisted in the settings file and survive app restarts.
After assigning a trigger action, MIDI Learn preselects the next matching trigger target for the next unmapped control:
Pad, loop, scene, and chop indices stop at the final display slot,
0. Non-trigger actions keep the exact last assigned action as the next preselected action.
Mappable actions
Transport
Pads
Pad slots use display numbering 1-9 then 0 (matching the keyboard number row).
Loops
Scenes
Mixer
Keypress
PerformFX
These actions are available when the PerformFX feature is enabled.MIDI learn flow phases
The learn flow uses these phases and capture states:Trigger behavior
Each mapping carries a Behavior that decides how the control’s value drives the action.
Both behaviors carry a
threshold (1-127, default 64) and an inverted flag (default false).
- Note triggers default to
Trigger { threshold: 1 }. Note On velocity 0 and Note Off are forwarded as value 0, so stateful actions such as PerformFX Hold slots and mapped FX Library presets receive a falling edge. - CC value 0 is forwarded to the app (it is the falling-edge signal for Gate). Gate mappings will not act on a Recording / Armed loop slot to protect takes in progress.
- Mappings loaded from configs saved before this version load with
Trigger { threshold: 1 }so existing projects keep their prior behavior.
MIDI tab shortcuts
Mappings sub-view (Listening phase)
Mappings sub-view (Assigning phase)
Mappings sub-view (Keypress capture)
Mappings sub-view (Editing Behavior step)
Sub-tab navigation
MIDI transport
The settings include atransport_enabled toggle. When disabled, transport messages are visible in the monitor but do not trigger transport behavior.
Monitor coverage
The MIDI monitor displays all incoming MIDI events, not just mapping-eligible ones. Visible message types:- Note Off, Note On, Poly Pressure
- Control Change, Program Change, Channel Pressure, Pitch Bend
- Clock, Start, Stop, Continue
- Active Sensing, SysEx, Unknown
Route allowlist
MIDI mappings use two route rules:- Keypress mappings replay the captured key through the normal key handler after the MIDI control is resolved. They work anywhere the same keyboard key would work, including the Trim/chop editor and other focused modal or view states. The MIDI Mapping assignment page still blocks mapped-controller actions while it is learning a control.
- Direct app-action mappings use a conservative allowlist so pad, loop, scene, transport, and mixer actions cannot silently dismiss stateful UI.
New modal or view variants added to the codebase are blocked by default. New
Channel variants require an explicit allow or block decision at compile time.
If a direct app-action mapping does nothing, check whether the current view is on this allowlist. If a keypress mapping does nothing, verify that the same physical key works in the current UI state. See MIDI And Sync Problems for more.
Current caution
The public marketing copy still describes MIDI controller support as emerging. Use this page as the implementation reference, not as a promise of broader DAW-style MIDI coverage.Related pages
- MIDI and External Gear — guide to the mapping workflow
- Muting And Soloing — explains channel mute versus loop and track mute behavior
- MIDI and Sync Problems — troubleshooting
- Keyboard Shortcuts — full shortcut reference