FR: Better display of large channel counts
-
Working on this plugin layout. It needs 94 channels right through until the master output which merges them all down to stereo.
This is what I see in the module tree:
Each one of these blue blocks is a SimpleGain, attached to a particular stereo pair. The button to open the interface is no longer accessible. The name label is no longer visible.
Would be nice to fix those things. I'd even settle for limiting the displayed amount of I/O so that you clip it to just N that are visible, and if you want more you open the I/O routing matrix panel.
-
@Orvillain Why 94?
-
@d-healey said in FR: Better display of large channel counts:
@Orvillain Why 94?
Very large multichannel multi-instrument plugin.
-
@Orvillain Seems impractical and a resource eater. Is there any reason you couldn't premix some of these channels down?
-
@d-healey said in FR: Better display of large channel counts:
@Orvillain Seems impractical and a resource eater. Is there any reason you couldn't premix some of these channels down?
In the RAW audio samples you mean??? No, absolutely can't do that.
I want to provide a mixing interface, and this set of instruments does have a total of 94 audio channels. They will be mixed down to busses inside the plugin for sure. But each microphone pair needs its own gain and pan control.
-
@Orvillain That means for each key press you'll be using at least 94 voices! Not to mention the RAM and CPU usage. Have you done some tests on the resource usage to make sure it will be usable? Are you sure people want to be playing around with 94 channels in a virtual instrument?
-
Unless you're using something that really needs to make use of the autobypass-when-not-in-use feature (like the convolution module), you should do it in scriptnode. Better overview, easier to navigate, easier to reference (one reference to rule them all), and if you still need auto bypass, you can script it yourself with the timers and on-note resets.
But even so, you won't be able to see the name, true. The sidebar really needs to be width scalable, and past some channel count should just display the total number of channels, as well as channels in use, with more info available on click.
-
@aaronventure
I'm not sure I follow - do you mean the audio bussing?? -
@Orvillain do you have a sample with 94 channels or multiple drum types with sum up to 94 channels? If it‘s the latter then just use sub containers for mixing the drum types and then use as many channels as you have mic positions in the master container.
-
@Orvillain actually you can do it with any effect, by right clicking the channel icon and selecting all channels to stereo
Definitely read the HISE_NUM_PLUGIN_CHANNELS preprocessor description here otherwise your compiled plugin won't process the channels.
https://docs.google.com/spreadsheets/d/1crdLOkfyebQZefBQBJEXMisHs2qPkUafBtBjgVM-ir4/edit?gid=1018116899#gid=1018116899Also, you might wanna hardcode the matrix
// hardcoding Master Routing because the standalone app always defaults this to stereo, unlike the plugin const var MasterRouting = Synth.getRoutingMatrix("main"); for(i=0; i<32; i++) { MasterRouting.addConnection(i,i); // 1 to 1 channel routing //Console.print(i); //check for correct channel numbers }
the "main" here is the topmost icon in the module bay, likely named just like your preset, unless you changed the name
-
@aaronventure said in FR: Better display of large channel counts:
@Orvillain actually you can do it with any effect, by right clicking the channel icon and selecting all channels to stereo
Definitely read the HISE_NUM_PLUGIN_CHANNELS preprocessor description here otherwise your compiled plugin won't process the channels.
https://docs.google.com/spreadsheets/d/1crdLOkfyebQZefBQBJEXMisHs2qPkUafBtBjgVM-ir4/edit?gid=1018116899#gid=1018116899Also, you might wanna hardcode the matrix
// hardcoding Master Routing because the standalone app always defaults this to stereo, unlike the plugin const var MasterRouting = Synth.getRoutingMatrix("main"); for(i=0; i<32; i++) { MasterRouting.addConnection(i,i); // 1 to 1 channel routing //Console.print(i); //check for correct channel numbers }
the "main" here is the topmost icon in the module bay, likely named just like your preset, unless you changed the name
But doing that would not give me the individual gain+pain controls for each channel that I am looking for ????
-
@Christoph-Hart said in FR: Better display of large channel counts:
@Orvillain do you have a sample with 94 channels or multiple drum types with sum up to 94 channels? If it‘s the latter then just use sub containers for mixing the drum types and then use as many channels as you have mic positions in the master container.
One drum could potentially have 94 channels, if I wanted to support 100% bleed.
-
@Orvillain so every voice would stream 94 stereo channels? That‘s super inefficient and the narrow width of the patch browser will be the last of your problems.
-
@Christoph-Hart said in FR: Better display of large channel counts:
@Orvillain so every voice would stream 94 stereo channels? That‘s super inefficient and the narrow width of the patch browser will be the last of your problems.
I actually sent you an email via info@ about exactly this, if you've got time to check.
-
@Orvillain if you put it into scriptnode it would.
Pretty sure you could just do it with code in the processBlock (it's undocumented; print the channel obj to see what you can access) by referring to a global array where you set the gain and pan data.
But it will definitely work in scriptnode. Maybe you can just do a gain node and a clone node, then access each gain's parameters directly without creating 94nnetwork parameters and connecting them, but Chris is sitting on the API as its unfinished so you'd have to ask him.
If each of these is a separate voice, it's more efficient to do a gain modulator and just set the gain and pan in on voice start by adding a script voice start modulator.
Then you can just send the gain and pan data with the new globalcable methods alongside the note id (even though sending 0 doesn't work in scriptnode at the moment).