The new Surge XT modules (coming to beta later this week! Stay tuned) have a lot of parameters because of our modulation matrix, which is super cool. This works great.
But it means I burn a lot of the VST parameters when I instantiate a module in rack pro plugin
Some of my parameters definitely make sense for automation but others less so. The VST AU CLAP etc… specs have a way to mark a parameter as ‘expert’ or ‘hidden’ often. is there any way to do that with a rack::ParamQuantity? I don’t see it in the API?
You could always not store the data in a parameter and instead store it as a field on the module. I could walk through what that would look like if that is a new concept for you.
(Basically you can think of the surge mod matrix as having an attenuverter for each CV control to each knob, so for 4 cv controls and 8 knobs you pick up an extra 4 * 8 attenuverters which are useful to edit but not useful to automate. These belong as parameters since i want to use al that looking of config, knob, etc… but there’s no reason to expose them at the edge of rack pro)
Looking at the API, this is the cleanest way I can think to achieve what you are looking for. Note I have not tested this. And obviously this is just the relevant lines in the module.
yeah i was thinking about mocking up non-listed param quantities would be a solution indeed. And then you can bind them to the knob by overwriting param widget init param quantities.
but also don’t forget in the to/from json you have to stream them otherwise that would be a real bummer for users.
i have a base class where i could do that but wanted to avoid it for a variety of reasons, as I’m sure you can imagine.
The primary risk here, of course, is making sure you catch all the implicit plumbing that a param quantity participates in; for me this approach where param quantities are in one of two places would be a really sweeping change from where I am today since - of course - my matrix assumes index offsets into a params array and so on…
Yeah, this is definitely pushing VCV rack past what it was designed to do, and updating all the places seems like it might take a good amount of work. Unfortunately I don’t see a better option. There is nothing in the VCV Rack codebase hinting at this, and the VCV VST plugin is proprietary so we can’t see what it does, and even if we could it likely never imagined this case.
I was just wondering how many places does ParamWidget assume paramQuantity points to this->module->params[this->paramId] for instance? Maybe none. but if it is even one …
OK I’ll just leave the modules as param heavy. I’ll also DM you a preview if you want before we launch the beta this week
Thanks for the help. I guess the answer is “no”. I’, mark this as a solution.