Binding Jump Prevention and Relative (Rotary) Encoder Support
When binding MIDI controllers there are several controller encoding modes that determines how Cantabile interprets and responds to the sent values.
Cantabile supports various controller encoding modes on bindings to a gain setting or a parameter value. To access these settings click the Binding's Options column.
The following encoding modes are available
- Absolute with Jump Prevention
- Relative Mode 1 (2's complement)
- Relative Mode 2 (Offset)
- Relative Mode 3 (Sign Bit)
In either of the absolute modes the source controller values are mapped according to the source and target ranges.
When the Jump Prevention mode is selected if the source and target values are out of sync, Cantabile waits until the value is moved past the current target value before the binding starts working - in order to prevent large jumps.
For example if a slider is turned right up but the target value is turned right down. Before the target value is affected by the slider it needs to be turned right down to match the target value and at which point it "grabs it" and the binding starts working.
Relative modes are typically used with endless rotary encoder knobs. Rather than sending an actual value, these knobs can be configured to send values that indicate how much the knob has moved and in which direction. This prevents the jump problem described above because the events always describe how much to move the value by - not where to move it to.
Different MIDI controller manufacturers use different representationsfor values sent for rotary encoders. Cantabile supports three different encoding modes:
- Two's Complement
- standard two's complement signed encoding (1 = +1, 127 = -1)
- 0 is the negative most value and 127 is the postive most value
- Sign Bit
- The highest bit is set for negative values and the lower 6 bits indicate the magnitude
- refer to the documentation of your MIDI controller for details on which encoding mode to use.
- by default most MIDI controllers with rotary encoders send absolute CC data and often you'll need to reconfigure the knob to send relative mode data.
- the relative encoding modes match the same settings in Reaper.
Relative Mode Scaling
By default the relative steps are configured so that 127 steps of a coarse controller will cover the full target range, or for fine controllers 16383 steps.
You can adjust the speed at which the controller affects the target value with the Relative Scaling property. eg: setting it to 50% will make the target value move at half the speed.
Note that you can set a negative scaling value to reverse the direction of movement.
Incrementing and Decrementing Values with Buttons
The relative mode options allow configuring two buttons to increase and decrease a value.
For example, suppose you have two buttons on CCs 16 and 17 and that each sends the value 127 when pressed. You could configure these to adjust a parameter in the following way:
You can then configure the increment binding as follows:
and the decrement binding as follows:
Note that the decrement controller has a negative scaling and both bindings have the relative scaling set to 3% to scale down the 127 value sent by the buttons down to a more finely grained adjustment of the target value.
If you can configure the value sent by the buttons you can use just one binding and have one button send a positive value and one a negative value (according to the relative mode you have selected).