How to use the new Midi Mapping Editor in v0.21 (and some notes on the bits that don't work yet)

I did a load of work on the midi mapping editor interface recently.. lots more to do yet but here's a 'quick' explanation of the current functionality. (I imagine it should be pretty familiar to most).

First, select the 'Elemental' menu option at top left, and select 'Edit MIDI', this will highlight all of the controls and properties that can currently be mapped to your midi controllers:

Properties / controls that can be mapped are highlighted

Next, select a control or property you want to map to your midi device :

Selected control is highlighted in blue, along with information about it in the editor window bottom-right

Now, with the appropriate property selected, move your MIDI slider/dial or press a controller button to link the device to the property. Information about the linked control will appear in the Midi Mapping window:

Example showing a midi controller linked to the Vel X property of a component

The behaviour of the midi control will depend on the type of the property and the type of control on your midi device. Some combinations won't make much sense (e.g. linking a slider to a button, or linking a button to a property range).

Once you're finished editing, click the 'Finish Editing' button to return to normal control mode.

Some Details about range mapping

In general, by default (when the property is not linked to an envelope or FFT range), there are two main property value behaviours in Elemental:

  1. A value that is randomised between an upper and lower range.
  2. A specific, fixed value that is limited to within a range.

For type 1), the default midi control mode is 'Relative Mirrored Scaled Range' - rather convoluted terminology, but what it means is that when you move your slider/dial, the upper and lower range limits are scaled equally relatively to the midpoint of the range. Erm, if that doesnt help explain it (it probably doesn't :) ) - attach a control, fiddle with the knob, you'll see :)

Type 2) is simpler: the slider is mapped more directly to the value, so that when the slider/dial is up full, the value will reach the upper range limit, when the dial is at minimum, the value will be the lower range limit.

The range limits used for the midi mapping are those that the property had when you first map the midi control, but you can adjust those by editing the values in the midi mapping editor. (Similarly with the mapping scale).

One last example of a type 1 range setup:

  • Say your Vel X property has a range -1 to 1. You map a midi control to it, with the default values (scale = 2.00)
  • When your dial is at maximum the range for Vel X will be -2 to 2 (Default range x scale).
  • When the dial is at minimum, the range will be 0 to 0.
  • Adjust your scale to 5.00 and your maximum range for Vel X (when the dial is at maximum) will be -5 to 5.
  • Simples :).

Other options will be added later so you can (for instance) map a dial to offset the range rather than scale it, and also there'll be options to have a dial just adjust the upper or lower range independently, but for now this default behaviour seems like the most common use-case.

Missing Bits & Restrictions:
There's quite a bit still to do on the midi mapping system, in particular, being able to map midi controls to the bypass properties (really useful for being able to 'dramatically' drop in/out whole elements and effects), button control modes (currently all buttons basically just trigger on release, but I'll add options so that (for instance) a bypass is active only when a midi button is held, and options to invert the input value (e.g. bypass active only when a midi button is not held, or an inverted slider/dial), etc.

Currently when you assign a midi control to a element component property, (like the Vel X slider in the example), you're assigning it to the specific component - delete the component and re-add it and the mapping will no longer be valid.

Its possible to have the same midi control mapped to multiple component properties and other values (which in itself can be used to create some fun/interesting effects), but right now its not possible to map multiple controls to the same property. This'll come later.

Multiple MIDI Devices and output
The system supports multiple midi input devices, so you can have one midi controller that is used for (e.g.) activating different Instances, and one controller that's modifying your channel alpha/scale values etc.

See the (new) MIDI Devices section in the preferences menu option to check and control which MIDI devices have been detected and which are enabled for input.

MIDI output (e.g. for getting midi button lights to light up appropriately) is currently extremely work-in-progress and probably doesn't work much or at all (except maybe on the APC40). There'll be a pass on that sometime soonish.

Default Midi Mapping + Import / Export options
Currently, the app loads up Data\Config\MidiMapping.json on boot. If you modify your mapping, you can use the 'Export MIDI Setup' to overwrite that and make your new layout default for future runs. You can also Import and Export midi setups to different files to have (for instance) different mappings for different performances or combinations of devices.

In many cases, it makes more sense for the midi mappings to be saved along with the composition (i.e. anything mapped to a specific element or property wouldn't work when you load up a completely different composition) - I'll probably shift that over so property mappings are saved in the composition file rather than separately, and will note here when that happens.

mm, think thats everything for now :) Shout up if anything is unclear or if you'd like to see any particular features mentioned here added sooner rather than later.

Posted Apr 27, 2026, 1:24 PM UTC

10
Loading comments…