In my experience it doesn’t make much difference either way. Go with what’s better for your work-flow. The ‘sound’ you are shooting for in terms of effect chains can also have something to do with your choices. I.E. Lots of instruments with their own personal reverb…vs routing it all in to ‘share’ a single reverb effect (sharing an effect can cut-down on multi-threading effectiveness, can also use ‘less’ overall CPU, but not as efficiently ‘multi-threaded’ over many cores).
In theory, using more instances should increase the probability that multi-threading would be more possible/efficient; however, sometimes that’s just not ‘the sound’ you’re after (such as melding/blending lots of instruments into a single reverb effect).
If you start routing this stuff through group and fx tracks via aux sends on the Cubase Mixer, they can ultimately get tied down to fewer threads again. Even if the plugins are designed to be very good at discrete processing, it all has to be reassembled by some core at some point…thus at least one core on your rig will have to work harder, while all the others get their jobs done pretty quickly and just wait for a new instruction.
If most of your sounds are basic sample triggers (I.E. Orchestral sounds) and there’s not a ton of internal reverbs and stuff going on it’s not going to use much CPU anyway. I.E. An arrangment that is built on MIDI tracks using a single isntance of HALion playing HALion Symphonic Orchestra sounds, all sharing a common reverb and chorus on the aux busses inside HALion. This should be a very efficient setup that wouldn’t be much different than hosting every stave in individual instrument track instances. If you did this same project with a few dozen individual HALion instances, it might multi-thread a little better, but it would also use more total CPU. It would also sound a bit different in terms of the reverbs and chorus…as every instance would be doing its own for each voice, rather than mixing them together and processing them all together.
Don’t forget that sometimes you’ll want to increase the max voices in the options menu if you’re running a ‘mega instance’ of HALion.
Sometimes complicated synth programs can call for more CPU. Still, you have options if you happen to have a program in the instance that is a resource hog. You could move it to its own instance of HALion, OR, you could just pop open another set of outputs and connect that synth sound to its own bus. If you also want heavy reverb on said synth sound, it might multi-thread better if you take out any aux sends in the program and dedicate its own reverb somewhere in-line.
New busses usually means it can multithread better what all is connected at the end of the chain. So in theory, new outputs minus any aux sends in the program going to complicated shared reverb effects is quite similar to a fresh new instance hosting its own reverbs therein.
Time sensitive multi-threading rule of thumb: Follow a sound from it’s inital source to the very end of the signal chain. The less there is going to an end bus, the better it can be multi-threaded across more cores. Groups, shared AUX Send effects, and things like this can reduce the effectiveness of ‘multi-threading’ a stream (mainly a problem with long reverbs, those almost always inject a certain amount of latency)…as things that might have been threaded off still need to sit around and wait for all the reverb data to arrive and get synced back together…or it might all just go to a single core in the first place if you have a bunch of stuff tied into a reverb using an aux-send in HALion, or even via Aux-send to FX track on the Cubase mixer.
You can activate new outputs for HALion by opening your HALion instance and clicking somewhere up in the top right corner of the UI. A pop up menu has an assortment of things like plugin info, help pages, etc…and about mid-way down the options is a place to activate new outputs/busses.
Once you get a new bus it shows up on your Mixing Console (and you can rename it there as well if you like), you’ll need to change the routing up in your instrument/program to use the new bus instead of going out to Master. If the program has any aux sends in it for ‘shared effects’, you might remove those, and set up a dedicated effect chain for the isolated instrument(s) (can do it inside HALion, or with slot inserts on the Cubase mixer). This is pretty much the same thing as starting a fresh new instance.
Personally when doing a big orchestra project, I’ll do a ‘mega instance’ of HALion. I’ll share the reverbs and chorus, but I’ll have these ‘effects’ routed off to two extra isolated busses that pop up on the Cubase Mixer. So…Instrument Mix, Reverb, Chorus faders for the HALion instance pop up on the Mixer. In theory, that might be a little more efficent for multi-threading than just leaving the aux send effects routed to the main mix. I have no way to ‘confirm’ this, but it seems logical, and so far I’ve yet to run out of head-room for playing as many of these types of sounds as I care to throw at a HALion instance.
I do the composition on MIDI tracks.
I go with HALion internal effects as much as possible, and automate them via MIDI as needed in the MIDI tracks along with the music (as opposed to keeping it on VST lanes).
Why? It makes it bone-head easy to export all this for other apps…like Dorico/Sibelius/Finale, then connect it all to HALion again therein with a duplicate orchestral layout. It ends up sounding pretty much the same when I port it into other apps.