My last couple of projects have been underrun city with 100% maxed CPU despite a beefy CPU and not much going on. This has motivated me to learn more about how best to mix in FL to maximise thread efficiency.
I've been working from the same template for years, which sets up mixer subgroups in much the same way that my analog desk was set up in the 1990s. I'm starting to think that subgroups are a dumb idea in this context.
What I'm hoping to do here is state what I currently understand having read the Help file, and have you guys please correct me where I'm wrong. Here we go.
1. FL Studio processes mixer tracks in separate threads.
2. Suppose that 3 VST instruments all plug into 1 mixer track. In that case, all 3 VSTs (plus whatever insert FX) will be processed in 1 thread.
3. If a mixer channel Sends to another mixer channel, then both mixer channels will be processed in 1 thread.
4. Suppose that you have 4 mixer channels being cleanly processed as 4 threads. Then you send a little of each channel to an FX channel with a single convolution reverb in it. You no longer have 4 discrete threads. You now have 1 thread which is processing all 4 mixer channels, all the VSTs going into them, as well as the convolution reverb.
Now, if the above points are all true, then point 5, below, describes the utter magnitude of my screwup.
5. Suppose that, instead of feeding all mixer tracks into the Master, you instead set up some channels as subgroups, for group processing of similar kinds of sounds (bass-type sounds, pad-type sounds, leads, vox, etc). You remove the Master sends on all of those subgroups, and send them into another track (which you label Pre-Master), for processing multi-FX. By doing this, you have forced every single VST, FX, and mixer channel to be processed in 1 thread.
Please correct me. I am trying to build a new template that avoids these kinds of mistakes, but I think I'm being hampered by thinking in an old-school analog way.