helgoboss / helgobox

Helgobox: ReaLearn & Playtime
https://www.helgoboss.org/projects/helgobox
GNU General Public License v3.0
205 stars 20 forks source link

Maybe add the possibility for virtual control mappings to send continuous increments #315

Open helgoboss opened 3 years ago

helgoboss commented 3 years ago

Something like "Add 20%" to the target value.

This requires a new ControlValue variant.

vonglan commented 3 years ago

I would like to add some more explanation, because this is based on a use case that I brought into the discussion.

This is for situations where the target is continuous, but the suitable control element is just a button. Typical example: a suitably labelled button on a hardware synthesizer, for example "Velocity Sensitivity of Filter Cutoff Frequency", is to be mapped to a continuous VST parameter for the same function.

In these cases, a nice sort of workaround is to let the button step through the whole parameter range in - for example - 10 steps. Maybe also have a switchable "zoom" function (see #204 ) so you could also fine-tune in smaller steps, again using the button.

This is already possible with ReaLearn currently (zoom function only if you duplicate the mapping and use conditional activation), for example like this:

Controller Mapping  
  Character = Toggle-Only Button
  Source Max must not be changed! Has to stay on highest possible value.
  Mode = Incremental Buttons
  Speed Min = Max = 10
  Rotate
Main Mapping  
  Step Size = 1 to 100% (or at least 10% in this case)

What I do not like is that in this case you have to adapt the Main Mapping, to compensate for a shortcoming of the Controller.

The max step size of the Main Mapping is intended (as I understand) to help avoiding large parameter changes in a live playing situation. The "button-to-continuous" workaround is mainly aimed at changing a VST preset, not in a live playing situation.

So it seems a better solution would be, as Benjamin described in #311 :

  • Being able to override the Step Size Max setting of the main mapping from the controller mapping. (Similarly to rotate).
  • Being able to send absolute increments (e.g. increase by 5%) ... Which would be a completely new control value type because real-world controllers don't support this kind of control.

I am not yet sure whether this is relevant for many users. Until that is clear, I am happy with the workaround.