Binding Modifiers
Cantabile now supports a new concept called Binding Modifiers that provide a new way to create conditional bindings and chord-like bindings.
What are Modifiers
You're probably already familiar with the concept of a shortcut key modifier - it's the extra key that you press to trigger certain keyboard actions.
For example, the keyboard shortcut for Copy: Ctrl+C
. The Ctrl
part of that is called a "modifier".
Further, short cut keys can have multiple modifiers. eg: Ctrl+Shift+Z
has two modifiers - Ctrl
and Shift
- both of which must be pressed for the action to be triggered.
Binding Modifiers
Binding Modifiers are similar to shortcut key modifiers in that they're an extra condition that must be met in order for the binding to be triggered.
However, instead of the modifiers being special keys on your PC keyboard, binding modifiers are set by separate binding.
Using binding modifiers therefore always involves at least two bindings:
- The first binding sets, clears or toggles one of four numbered "modifier" flags.
- The second binding has a modifier condition that causes it to only trigger if the selected modifiers are active.
A Simple Example
As a simple example, let's say you wanted to create a binding that loads the next song state when MIDI CC 16 button is pressed and the note C4 is played:
First create a binding that maps a CC 16 as a switch to modifier flag 1.
Note: the binding point to set and clear modifier flags is on the "Engine" object
Next, create the C4 note binding as you usually would, but notice the new setting "Modifiers" in the source group. Any selected modifiers must be active in order for this binding to trigger. If you select multiple modifiers, they must all be active for the binding to trigger.
Re-using the Same Modifier
There's no need to create new modifier bindings for every kind of action. Continuing the above example, you could also bind CC16+B3 to load the previous state.
Here's the three bindings showing the whole setup.
The first binding controls Modifier #1. The other two bindings load the next/previous state - but only when the modifier is active.
Modifiers and Routing Mode
In the above example, the notes B3 and C4 are being used to load next/previous states. As shown however, these notes will still continue to sound out because their routing mode was set to continue.
By changing them to Suppress, those bindings will suppress the MIDI notes and prevent them sounding out:
When modifier flags are set, the suppression only happens if the modifier flags match and the binding is actually triggered. This means these notes can be used to control things when the modifier is active and play notes when it's not.
Watching Modifiers
Currently there are no string variables to view the state of modifiers, but you can trigger a binding when a modifier changes (ie: the Engine -> Modifier binding point is available as both a source and target binding point).
Also, for diagnostic purposes, the binding settings dialog shows the current state of the modifiers in the bottom right-hand corner:
Available Now
Available now in build 4218.