The expanded concept is a master patch containing 8 controllers and a x/y pad for touch with up to 8 pages to switch through that can all be assigned to/learned from any of the VST parameters. Currently these pages are stored in preset manager but I have an idea for storing the necessary info in arrays to roll/page through which should make things a bit more flexible.Also there is one macro control for each page which can lock up to 8 parameters in relative position as well as invert per parameter... and also 8 modulation controllers with one way communication to the VST intended for external midi or internal modulator control.
For each rack grid, the VST's are dropped on a patch and IML is used to wire the VST to all of the necessary i/o (params array, params names array, audio i/o etc). Get array size is connected to the output of each VST and the data is fed to extract array modules (start pos/length for the input arrays to set each VST to automatically receive the correct values from the sum of the concat output arrays>
Each VST params and params names comma text is concat to a single master values array and names comma text, sent by bus to the master patch and once again concat with data's from other "racks". Then Array difference module is used to pick last changed VST parameter. Pressing learn on my control then captures the parameter name, index and well, hopefully the VST and rack name. If the parameters input array changes due to VST being reloaded or removed, then the stored parameter name is matched to the corresponding parameter name in the master params names list (which is same size as params value list) and the index for that parameter is adjusted accordingly. Also, all controllers are auto updated if parameter changes from VST when changing preset etc.
So far it works quite well if not a bit heavy on resources. I do have have some cpu saving measures in place for unmapped controllers/empty VST slots. One place I am stuck at the moment is now that I am not using a fixed size array for each VST, I am uncertain how to regain the auto learn of VST plugin names that I had working before. (it was easy to divide array size by number of sub patch containing VST to pick name) If I can connect VST name to params name comma text, this is one solution. Also, ideally I could learn the rack name or any other label I choose to apply such as name of external instrument that I am processing..
The only other place I would like to find a better solution (other than other general optimizations) is in dealing with the feedback loop caused by sending a VST's params to output bus, and then receiving the same params via input bus. This is causing me quite a bit of extra patching inside each VST sub patch (From extract array>has changed>wait 1 bloc>stop flow on output array) This works but would like to find a cleaner option that doesn't require so many modules.
I agree about it being nice to be able to help people, especially in the case of a software like Usine, it is pretty much IMO the most powerful tool available for designing custom performance setups but it can be a challenging to realize your goals in it. Numerous times I have spent many hours working on what I think is going to be the perfect solution for my needs then I hit a wall that I cannot work around and end up scrapping the project and looking for other solutions.. But I always come back to Usine when reminding myself again it is the best tool for the job. I think it is important that we do what we can to help others where we can which helps build the user base and community which in turn gives incentive for continued development of Usine, which in turn makes my favorite software even more powerful 
Statistics: Posted by gurulogic — 10 Dec 2016, 20:22
]]>