helgoboss / helgobox

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

Your input requested: Default FX Parameters #256

Closed vonglan closed 3 years ago

vonglan commented 3 years ago

In #231 , @helgoboss suggested to define and provide a set of default parameter names (instead of P1 etc.). These would appear to the user as default names for these parameters, but can be replaced by the user (#209 ).

I suggest we collect and discuss ideas here.

For FX Parameters in Controller Mappings: Bank (#231 ; when this is processed internally in Controller Mappings) Shift (#231 ; when this is processed internally in Controller Mappings) Make-Relative (#203 )

For FX Parameters in Main Mappings: Bank (#231 ; when this is processed in Main Mappings; maybe because there is no Controller Mapping) Shift (#231 ; when this is processed in Main Mappings; maybe because there is no Controller Mapping) Zoom Factor (#204 ) Track Index Offset (haven’t used this myself yet, but assume this is useful) Track Parameter Type (thinking about: Volume, Pan, Mute, …)

helgoboss commented 3 years ago

I thought about this a good deal this morning and my conclusion is that it would make much more sense to provide factory default meanings (shipped with ReaLearn itself) for virtual control elements than for parameters. Let me explain why.

The difference between parameters and virtual control elements

First, it's important to understand the difference in purpose between ReaLearn's virtual control elements (the subjects of virtual targets and sources) and ReaLearn's FX parameters. I'll explain it so we are all on the same track.

ReaLearn's virtual control element: The point of invoking (moving/pressing/turning/...) a virtual control element is to actually control something within REAPER. The effect is there immediately.

ReaLearn's FX parameters: The point of changing one of ReaLearn's FX parameters is to set a course (as in "railway switch"). Some typical use cases: Changing a bank, enabling a modifier, setting the affected track. All of that has an effect, but not immediately. The effect won't become visible until you actually control something (e.g. change a track volume).

Why factory default meanings for parameters don't make too much sense

Let's first talk about controller compartment parameters.

Now let's have a look at main compartment parameters:

Why factory default names for virtual control elements would make a lot of sense

In the "General controller presets use case", it would be great if a virtual control element that represents a button which is labeled "Shift" on the actual controller would also have the name "shift" (and would be addressable by that name in virtual main mapping sources)! Across all general controller presets! Same with "Bank/Channel". The point of separating controller presets and main presets is that you can freely combine them on a mix and match basis. How cool would it be if no matter which controller you use, you can combine it with any well-designed main preset and it just works!

Example

Someone could build a "Typical Mackie control" main preset which deals with the conventional typical albeit boring control-surface stuff: Setting track volumes, pans, record arming, solo, mute etc. Now imagine this main preset could be used with any controller that has such controls ... and it would just work out of the box! I think this would be really cool. It would exhaust the full potential of Realearn: There are tons of control-surface-specific extensions out there, all hand-written. For ReaLearn most of the same things could be achieved with just ... a preset! No extra extension necessary.

In theory, this is possible already now, but in practice it will not "just work" because the existing controller presets for control surfaces have only numbered virtual controls, not named ones. If they would have meaningful standardized names such as "bank" or "ch5/solo" or "solo", this would really work in practice.

Conclusion/suggestion

Therefore I suggest:

vonglan commented 3 years ago

Sounds reasonable. I'm afraid I won't be a big help in defining that set of standard virtual sources/targets, because I have nearly no experience with that (in contrast to the topic of controlling synth VSTs).