I spent several years now building a very complex modal synth using arrays of resonant bandpasses. This is just for my own use, so I didn’t mind making it extremely complex. I have maximized the efficiency of the code as best I can. In standalone, it runs perfectly with all the efficiency I need. However, in VST3 mode it is horribly inefficient and cannot run properly at any reasonable latency unless I drop the number of bandpasses (ie. modes) precipitously.
In terms of performance, to run smoothly, I am needing:
- VST3: 8192 samples latency (93 ms) in Reaper to function with 2/3 the amount of bandpasses to utilize a core of CPU up to around 55-75%.
- Standalone: 882 samples latency (10 ms) in Standalone with full amount of bandpasses to utilize a core of CPU up to around 75-90%.
So there are two levels of inefficiency and poor performance in the VST3:
- I need 9x as large a buffer to get it to run smoothly.
- I cannot utilize any of my CPU cores to anywhere near their fullest extent.
I tried two DAWs - Reaper and Cubase. Cubase was even worse than Reaper. Reaper at least I can get one instance to run smoothly with those settings. Cubase is dropping out even at those settings.
I have run Latency Monitor (LatencyMon) to check for any background problems and my system is crystal clean. I get at most two green bars on any area (ie. there are no interrupts or system issues occurring).
I have all my cores set with Hyperthreading disabled in BIOS to maximize their capacity and they are all set to the same speed for consistency.
I cannot understand the source of this insane VST3 inefficiency. If the synth works perfectly in standalone on one core at given settings, I have 16 high powered cores all running at the same clock speed, and I open a clean empty project in Reaper, shouldn’t I be able to load at least 12 instances of the synth before I run into problems? If I just load even one instance alone in Reaper, shouldn’t it be at least close to the standalone performance?
Why can’t the VST3 operate at the same or even close to the same latency as the standalone? Why can’t the DAWs (either Reaper or Cubase) come close to even utilizing most of a full core before they start dropping out?
Most importantly, is there some way to correct for this? A different plugin format? A different sound card? Something I can change about my code that might be causing this issue?
I have an insane amount of processing power. Every single one of those cores is more than strong enough to handle an instance of the synth at low latency in standalone.
Might there be any solution to get the same or reasonable close performance out of a DAW? Any ideas on what this might represent and how to fix it?
Thanks for any help.