Excessive idle CPU usage

Hiya Matt, Vital is awesome! Working on a One Synth Challenge track with Vital, though, I ran into a problem that the idle CPU usage added up to enough I could not finish. My goal was to use only Vital, with no other effects, so I did end up with only a few other plugins like EQ and reverb (these were not contributing notably to the CPU usage). This is using Bitwig, latest version (4.2.3) and the same behavior is present on Vital 1.07 and 1.5.1. I loaded the same project on an M1 MacBook Air, a 2019 MacBook Pro 8-core intel, and a Windows 10 machine with AMD 5900X and GeForce RGX 3070 Ti. The latter CPU usage isn’t too high where it’s impossible to work on the track but it is ~25% when idle. This is with 67 instances of Vital. Not to solution too much, but I suspect what’s happening is effects are constantly running – for example a piano patch I made with reverb even when idle is using CPU. And, I know this may grind your gears a bit due to the constant references, but Serum accomplishes near-zero idle CPU I’m pretty sure by eventually triggering a “no sound from effects” flag. I would very, very much love it if Vital could do the same thing. This actually might make me want to make music again…

67 instances? I’m pretty sure nobody expected someone to do that. I’m going to dare ask why not freeze or bounce them in place and bypass the instance until you need to tweak it again.

It’s not about 67 instances, it’s about idle CPU usage – if the synth isn’t outputting sound, it should be able to skip processing and be effectively 0 CPU usage. I understand this isn’t entirely straightforward (I wrote my own plugin before), which is why I labeled this a Feature Request instead of a Bug. In my case freezing is not a viable option. If you have ever tried a one-synth-challenge, you would know why freezing is hard to do a lot of the time :slight_smile:

I’m seeing .5% cpu usage while idling, and I agree if nothing’s being done then there should be zero. I wonder what is causing that? I reckon there’d need to be some amount of anticipative looking for input process going on.

If a synth uses free running Oscillators there will be some CPU demand even when it is not creating any audio (playing notes).

Taking the INIT patch it shows 1% at idle on this old i5 test machine. Now turn on all the FX. The demand jumps to 12%, again with no notes playing.

Now imagine if you’ve got 67 Reverbs active and/or Delays and/or Compressors and/or Flangers etc etc.

There is no doubt room for optimization in Vital but it is in no way the only plugin that uses CPU when idle.

For example the INIT patch in Pigments takes 4% (four times that of Vital) at idle on the same test system.

Ok well now I’ve got to know why would the type of project have anything to do with your DAW’s ability to freeze?

Why would using a single instrument for the KVR One Synth Challenge make any difference in freezing than using 67 different instruments?

I’m really curious…

A few things:

One Synth Challenge is not about using a single instance of a synth, but rather only the same synth for all sounds, hence 67 instances of just Vital and no other synths or samples allowed. Freezing being a problem has to do with various things – some limitations about how we are allowed to freeze to audio, but mostly my workflow. I absolutely acknowledge this is not a normal use case, but it is something that exposes improvements like this.

Regarding other synths, yeah, again I know there are other synths that are far worse than this! Again, Vital is awesome! But this is AGAIN why I said it’s a feature request rather than a bug.

Let me explain this way; using REAPER for the excellent performance metrics:

On my M1 MacBook Air, Vital with ALL oscillators and ALL effects DISABLED uses 0.2% CPU while idle. Perhaps this could be less, but this is at least a baseline – maybe it’s to do with not being a native app yet. THEN if I enable ALL oscillators and even add a bunch of modulations, it’s still 0.2%… but then when I enable ALL effects with default settings, without even playing a single note, idle CPU is: 1.2%. At 0.2%, I could have 100 instances using only 20% cpu. At 1.2% (which may be worse or better depending on fx settings), I could only have 16 instances to get 20% idle cpu usage - and we’re not even talking about the instances that are outputting sound.

Ok, maybe this is an M1 problem, so let me switch to a 2019 MacBook Pro w/8-core Intel i9 processor (9880H to be specific): 0.1% idle with nothing at all enabled and the same with all oscillators and filters enabled, and when enabling all the fx: 0.7% CPU.

The point is: some effects could just not run if there are no notes that are sounding at all and there is a way to determine “this reverb or delay effect is no longer outputting sound”. And this is the crux of the feature request…

Last point:

Vital does not have “free running” oscillators, only oscillators that are triggered at random phase; there is almost no need for free running oscillators, so while notes are not active, the phase doesn’t need to be calculated (and I don’t think it is being calculated).

Yes I know how the KVR OSC works. I’ve been a member there for over 20 years.

Here are part of the rules:

"However, for convenience or CPU saving, synth bouncing are allowed but only where the EXACT same result could have been achieved using the original synth:
More Clarification: Audio must not be touched at all once it leaves the DAW (i.e. after bouncing a track or a stem "

So yea you can bounce you just have to know how to keep within the OSC rules.

If I add one instance at INIT on my test system which is a old i5 I only use for internet and testing, like I said I get 12% idle CPU when all the effects are on. But if I add four more instances the cpu demand only goes to 28% not 60% so it’s not cumulative at least on a Windows system. Maybe Macs are not as efficient.

Is Vital the most efficient of the dozens and dozens of synth plugins I own ? No but it’s far from the worst by a long shot. For example Korg’s new Wavestate can use 20% idle for a single instance on my studio computer which is much more powerful than this system.

I’m all for Vital being optimized but it’s not that terribly bad now. The fact that you’re having issues with 67 instances is an extreme use example.

Matt is a talented developer so if he can bring down CPU demand he will. I assume there was a reason why he allows the Effects to run at idle. Perhaps he can change that and perhaps not.