MIDI

Modulaser works fine with a mouse, but a MIDI controller gives you physical knobs and faders for real-time control. This makes a big difference during live shows, where reaching for a mouse isn't practical.

Any class-compliant MIDI controller works. Modulaser ships with built-in default mappings for two controllers:

Both work out of the box. Plug in, enable the device, and the default mapping loads automatically.

Setting Up Your Controller

Connect your MIDI controller and open Settings. Click the Devices tab. You'll see a grid of all detected MIDI devices, each with three checkboxes:

  • In: enables the device as a MIDI input for controlling parameters
  • Out: enables feedback output so Modulaser can update your controller's LEDs, motorized faders, and pad colors
  • Clock: enables the device as a MIDI clock source for tempo sync

Each checkbox shows a connection indicator: a green dot when connected, a gray dot when the device is enabled but not plugged in.

Modulaser remembers your settings and reconnects automatically when the device reappears.

For the APC40 mkII or MIDI Fighter Twister, you get a working layout immediately. The Use default map button (next to the device row) restores the built-in mapping if you've changed it. Default mappings update automatically across releases, as long as you haven't customized them. Once you edit a default mapping, your version is preserved.

MIDI Learn

To create your own mappings, open MIDI learn mode:

  • macOS: menu bar > Shortcuts > Edit MIDI...
  • Windows / Linux: Edit > MIDI Learn

All learnable controls show a blue overlay with the current assignment. To map a control:

  1. Click a parameter in Modulaser to select it as the target (the border highlights).
  2. Move a knob, fader, or press a pad on your MIDI controller.
  3. The mapping is saved automatically.

The assignment label shows the MIDI channel and control number, for example 1/CC48 for CC 48 on channel 1, or 2/C#4 for note C#4 on channel 2.

The MIDI Learn popover in Modulaser with Scope set to Selected Layer and Target showing Shape Scale X
The Learn popover shows the target, scope, and is waiting for the next MIDI control you move.

To remove a mapping, right-click the blue overlay and select Clear.

Press Escape to exit learn mode. Only one learn mode (MIDI or OSC) can be active at a time.

The Learn Window

While in learn mode, a floating window shows details about the selected mapping:

  • Target: the parameter you're mapping to
  • Source: the assigned MIDI control
  • Range: min and max values (default 0.0 to 1.0). Narrow the range to limit a fader to a useful subset, or invert it by setting min higher than max.
  • Mode: choose between Absolute (standard 0 to 127 faders and knobs) and Relative (endless encoders that send increment/decrement values)
  • Scope: for output group parameters, toggle between This Group (fixed index) and Selected Group (follows your current selection). For layer-scoped clip parameters, toggle between This Layer (fixed index) and Selected Layer (follows the selected layer).

The window also has a dropdown listing all existing mappings for the active port, so you can jump to any mapping to review or edit it.

When remapping a target that already has a mapping, the existing range and relative settings are preserved. Only the source is updated.

What You Can Control

MIDI can reach almost everything in Modulaser:

Clip parameters: oscillator frequency, speed, and level; color hue, saturation, and lightness; transform position, scale, and rotation; duplicator settings; camera position and angle; and all modulator parameters (LFO, audio reactivity, envelope, sequencer). These target the currently selected clip.

Layers: select a layer by index, control layer opacity, or toggle layer visibility. You can target a fixed layer index or follow the selected layer using the scope toggle.

Output groups: select, send, and clear clips per group. Control group opacity with a fader. Select a clip for editing within a group.

Effects: map scalar controls, switches, and enabled states for output-group effects.

Global output: color override (hue, saturation, lightness, level), speed multiplier, and blackout.

Macros: each clip has 6 macro slots. Map a MIDI knob to a macro, and it controls whatever parameter the macro is linked to. Macros are great for building a consistent control surface across different clips.

Tempo: set BPM directly, tap tempo, or resync the beat phase.

Cues: play/pause, stop, next, previous, loop toggle, and jump to a specific cue by index.

Timeline: play/pause, stop, seek, and skip forward/backward.

Clip selection: map pads to clip grid positions for quick clip triggering.

Bank shifting: scroll the visible clip grid up, down, left, or right to access more clips than your controller has pads. Button-based shifting moves one step at a time; encoder-based shifting works with relative encoders for smooth scrolling.

MIDI Clock

If your MIDI controller or another device sends MIDI clock, Modulaser can sync its tempo to it. Enable the Clock checkbox for the device in the Devices panel.

MIDI clock runs at 24 pulses per quarter note. Modulaser calculates BPM from the incoming clock signal and updates its tempo automatically.

Transport messages are supported: Start and Continue trigger a phase resync, Stop pauses clock tracking. If no clock tick arrives for 500ms, Modulaser considers the clock inactive and falls back to its local tempo. Ableton Link, if active, takes priority over MIDI clock.

Feedback

Enable Out for a controller and Modulaser sends current values back to it: motorized faders move, knob rings update, and pad LEDs reflect state. The full state is sent on startup, so the controller stays in sync even when you change things with the mouse.

Tips

  • If you need network-based control instead of USB MIDI, check out the OSC guide for similar parameter control over a network connection.
  • Enable Out for your controller to get visual feedback. Motorized faders sync to parameter values, pad LEDs reflect clip state, and knob rings update when values change in Modulaser.
  • Mappings use positional indexes, not names. "Output Group 2 Opacity" always means the second group, regardless of what the project calls it. This keeps your mappings portable across projects.
  • You can map the same MIDI control to different targets in different contexts by using the scope toggle in the learn window.
  • If your controller has endless encoders, set the mode to Relative in the learn window. This avoids value jumps when the physical position doesn't match the parameter.