This might be complex, but it would be nice if the host could declare what kind of parameters were available in the controller and CLAP allowed for a "smart" mapping system that could be paired up with the available controls in the plugin.baconpaul wrote: Sun Jul 17, 2022 7:59 pm Yes. The way CLAP works is a plugin can query a host for extensions, and host can query a plugin for extensions. This handshake at startup lets you suss out the capabilities of your environment (if you are a plugin) and your target (if you are a host). In this case, with a draft extension, the most likely workflow is in some future CLAP 1.n version bitwig or one of the other hosts will take a shot at implementing it, we will have a comment period, and then at 1.m, m>n it will be promoted out of draft. Also, if a host doesn't provide the extension the plugin can code defensively to never offer up pages and what not.
If you have particular comments about features for this extension, your experience would be welcome in a GitHub discussion on the clap repo!
For example:
1. Host says "this controller has 16 encoders" and plugin parameter pages are built around 16 encoders.
2. Host says, "this controller has 8 encoders and 8 faders" and plugin parameter pages are built around 16 params, same as above.
3. Host says, "this controller has 8 encoders, 8 faders, and 8 buttons" and the plugin first checks for any toggle-type parameters. Any 0.0 to 1.0 (on/off) type of parameters are automatically assigned to the buttons first, maybe even stepped params like three-way switches. 4-stepped params or fewer can map well to buttons. Then any continuous controls are mapped to the encoders and faders like in scenarios 1 and 2 above.
4. Host says, "this controller has 8 encoders, 8 buttons, and 8 displays with upper and lower display lines", now this scenario should work like scenario 3 but how to assign what shows up on the displays? Do we assume the 8 encoders match up to the 8 displays? Maybe ask the hosts to identify the linkage and report to CLAP and once established, use the upper display to show the FXParam Name and the lower display for the FXParam Value?
I use the CSI (Control Surface Integrator) extension in Reaper and have created hundreds of FX mappings for my various hardware so things like stepped params, encoders, displays, are all top of mind for me. A basic "Quick Controls" setup like in Cubase is better than nothing, but my dream integration would look a little more like the mappings I create manually for use in CSI.
Additionally, I think it would be helpful if plugin manufacturers could declare how important the parameter is and inform the host for mapping purposes. Sort of a plugin parameter mapping index. So a filter cutoff knob on a synth might be parameter 1, resonance 2, then maybe the ADSRs are next. But this may not be the same order that those parameters exist for automation, where they may be logically grouped. This would be just to tell the host, "when building plugin parameter pages for controllers, try to dynamically map these in this order".
Hope that all makes sense. Note: as an end-user I wouldn't feel qualified to jump into a CLAP extension discussion on this topic, hence why I'm posting here and not on Github. If any of this is of actual value, then feel free to steal.
