Disabling processing when input is silent. Worth it?

DSP, Plugin and Host development discussion.
Post Reply New Topic
RELATED
PRODUCTS

Post

blablablablabla...

get over it, youre wrong.
check my profile for contact info.
msn messenger is my email as well.

Post

AdmiralQuality wrote:Then why do so few plugs-ins do this? I can't think of a single one that does. (Talking about effects of course, it's common for most synths to kill silent voices.)
I figure its just developer lazyness... ;) some extra lines of code is needed... Also synths tend to use more Cpu than ordinary fx, hence power saving is more important the more cpudemanding your plug is. An eq plug of 1% cpu can be constantly on, but having a synth on 20% cpu constantly crunching numbers is bad/unacceptable...

I think many synthedit based fx do save power since this function is build into all standard modules that comes with SE.
Last edited by Mr Smith on Sun Jul 23, 2006 11:34 pm, edited 1 time in total.

Post

Jason Brian Merrill wrote:blablablablabla...

get over it, youre wrong.
Now THAT's mature. (And again, your stubborn attitudes illustrate exactly how you GOT to be so stupid.) I'm wrong. Native Instruments is wrong. Arturia is wrong. Kjaerhus is wrong. TC is wrong. PSP is wrong. Ohmforce is wrong... (and on and on it goes.)

So who's RIGHT?

Post

ME.



btw, the host can do it by itself. The plugin doesnt need to support it.
check my profile for contact info.
msn messenger is my email as well.

Post

Jason Brian Merrill wrote:ME.

btw, the host can do it by itself. The plugin doesnt need to support it.
And who are you anyway?

I'm not talking about hosts. Topic is plug-ins. Any host is free to do as it wants.

So... instead of being a little Nazi, how about you refute any single point I've made. Or provide an example of any professional plug-in developers who are following your orders, boss.

Post

and so, do you use plugins by themselves?

I dont think so.

nice to have both sides suppport it, for sure. But your obsessive following of this thread shows your attitude for sure.

little nazi?

actually im a big nazi.
check my profile for contact info.
msn messenger is my email as well.

Post

Jason Brian Merrill wrote:and so, do you use plugins by themselves?

I dont think so.

nice to have both sides suppport it, for sure. But your obsessive following of this thread shows your attitude for sure.

little nazi?

actually im a big nazi.
Obsessive following of a thread that I started, asking for votes and opinions on a legitimate question? Yeah, speaking of lazy, us developers obviously don't care at all what any users think, that's why we do research and tolerate this shit from self admitted big Nazis.

I don't care how big you think you are. You're puny.

Post

AdmiralQuality wrote:
Jason Brian Merrill wrote:and so, do you use plugins by themselves?

I dont think so.

nice to have both sides suppport it, for sure. But your obsessive following of this thread shows your attitude for sure.

little nazi?

actually im a big nazi.
Obsessive following of a thread that I started, asking for votes and opinions on a legitimate question? Yeah, speaking of lazy, us developers obviously don't care at all what any users think, that's why we do research and tolerate this shit from self admitted big Nazis.

I don't care how big you think you are. You're puny.
actually, i really do need to lose some weight. Im quite the chubby little nazi.
check my profile for contact info.
msn messenger is my email as well.

Post

it isnt possible for a host to do it for multiple reasons, and if you can not see that, you need to spend more time thinking about the problem.

i've already outlined a simple implementation that is applicable to an effect which has a zero length tail. what about effects with a fixed length tail? the issue is complicated more if the effect has a dynamic length tail.

for some effects it is impossible to implement this kind of feature without using more processing power in overhead than the original effect would require. for other effects it is extremely difficult to create an implementation where the processing result remains unmodified by the bypass.

should a simple compressor or gate effect use bypass? usually not, since there will be so little savings that the overhead of the bypass will become difficult to justify. would you rather run an effect at 5% cpu constantly, or run it at 10% while active with 1% during silence?

should a reverb effect implement bypass? it depends upon how accurately the tail of the reverb can be calculated. a impulse based reverb could implement bypass, but a reverb like xhip reverb, or one with modulation of parameters may be extremely difficult to impossible to deal with.

should other effects like phaser/chorus, eq/filter, ringmod/distortion implement bypass? generally not, although it depends upon the specific implementation.

the problem is more complex than you may be able to comprehend.

Post

I don't know how I wandered into this thread bu the way i compose I would find it a big timesaver to have VST effects turn themselves of during silent parts.
I end up doing it manually all the time.

(since you're asking for input)
:)
for entertaining porpoises only

Post

should a reverb effect implement bypass? it depends upon how accurately the tail of the reverb can be calculated. a impulse based reverb could implement bypass, but a reverb like xhip reverb, or one with modulation of parameters may be extremely difficult to impossible to deal with.
is it really that difficult? to me, two options is straightforward, case 1: lets say reverb time is set to 2 secs, once plug recieves silence, it it waits 2 secs before going to sleep ( SE term ;) )
case 2: simple feedback path, if both input and output is zero, turn off processing...

Post

Mr Smith wrote:
should a reverb effect implement bypass? it depends upon how accurately the tail of the reverb can be calculated. a impulse based reverb could implement bypass, but a reverb like xhip reverb, or one with modulation of parameters may be extremely difficult to impossible to deal with.
is it really that difficult? to me, two options is straightforward, case 1: lets say reverb time is set to 2 secs, once plug recieves silence, it it waits 2 secs before going to sleep ( SE term ;) )
case 2: simple feedback path, if both input and output is zero, turn off processing...
Case 1. There's no way for the host to know it's a reverb, much less what the "time" control is set to (or which control is FOR the time, or how to interpret its value). It's a black box to the host. Yes, as pointed out above there IS a function in the VST spec that communicates the tail length, but it isn't implemented by 99% of plug-ins. Also, a loud sound's reverb tail will go longer than a quiet one. And they NEVER really decay to zero. So there has to be some threshold. Getting complicated now.

Case 2. What about a delay line? You'll potentially chop off echoes because there could be completely silent bits inbetween (and it will never reactivate from output, because you've disabled its processing - a chicken and egg problem.) There's other issues here too, particularly with effects that can generate audio on their own with no input.

No, it's not strictly impossible. (I wouldn't have asked if it was.) But... is it worth it? To me, at this point of thinking about it for several days, I'd still say no. And again, I don't feel there's much value to having them turn off (IMHO the potential problems far outweigh the advantages). If I want a track to give up the CPU it's using, I'll spend 15 seconds automating a bypass during the part I want it off. But then, I'm like that... don't like the computer making decisions for me. I like the host to model a real studio, and in reality, the effects stay on until I turn them off.

Can you explain more about how you work and how you perceive this feature would be helpful? Same question to whoever mentioned film scoring. (To me that's conceptually the same as any song. Perhaps it's a methodology thing? I know I wouldn't expect to do much of anything without freezing tracks and/or other explicit methods of reducing CPU load. Like automating bypass of entire tracks during their dead sections.)

Post

Hi, I haven't read the entire topic, so forgive me if I'm writing something that has been discussed already.
AdmiralQuality wrote:Plug-ins that bypass processing during silence:

- Not a single one that I know of. (Add to the list please. I'm curious.)
I'm mainly a host developer (Podium), but I've made two effect plugins that you can add to the list: zPEQ and zReverb.

I found huge speed improvements after implementing check for silence. Both zPEQ and zReverb use close to no CPU when input is silent. zReverb usage off course drops gradually depending on decay time. I find this optimization useful in many situations:
  • If you work in the host program and playback is stopped, there is more CPU available to edit actions, file loading etc.
  • I find it a great relief not to worry about automating plugin bypass parameters to try to gain more free CPU.
  • If you have tracks that sporadically have silent passages in them, then the combined plugin CPU load is much lower than if all plugins always were processing. If CPU usage suddenly spikes during a passage where all plugins are working, then the spike would have been there anyway (constantly) if the plugins were processing silence.
One feature that is missing from the VST spec is a way for the host to tell the plugin process function that its input buffers are silent. Podium (and other hosts I'm sure) implements a zero-buffer optimization in the engine which elliminates a lot of memory clearing and copying. Thus Podium already knows prior to calling the plugin process function that the input buffers are silent. With the Zynewave plugins I'm writing I have made an extension that allows Podium to tell the plugins that their input is silent. Saves some time both by avoiding clearing the input buffers in Podium and the plugin don't have to check the input buffers for silence. Small performance gains, but it adds up if you e.g. have 50 EQ plugins on your tracks.

In zReverb I've even implemented zero-optimization in the different parts of the algorithm. The ER module (which is the heavy computational part) can go silent before the diffusion module etc. Furthermore I use the zero buffer detection to check whether the IIR filters should be reset if they have become sufficiently silent, and I thereby don't have to add time-consuming denormal checks in the actual IIR filter code.

Frits

Post

AdmiralQuality wrote:
Mr Smith wrote:
should a reverb effect implement bypass? it depends upon how accurately the tail of the reverb can be calculated. a impulse based reverb could implement bypass, but a reverb like xhip reverb, or one with modulation of parameters may be extremely difficult to impossible to deal with.
is it really that difficult? to me, two options is straightforward, case 1: lets say reverb time is set to 2 secs, once plug recieves silence, it it waits 2 secs before going to sleep ( SE term ;) )
case 2: simple feedback path, if both input and output is zero, turn off processing...
Case 1. There's no way for the host to know it's a reverb,
Ah, I was referring to doing this in the plug rather than the host, sorry if I misunderstood
Case 2. What about a delay line? You'll potentially chop off echoes because there could be completely silent bits inbetween (and it will never reactivate from output, because you've disabled its processing - a chicken and egg problem.)
I figure you always have to check silence for a period of time since audio always crosses 0 at regular basis etc, in this case a peroid > delay time might do the trick?
There's other issues here too, particularly with effects that can generate audio on their own with no input.
obviously ;)
Can you explain more about how you work and how you perceive this feature would be helpful? Same question to whoever mentioned film scoring. (To me that's conceptually the same as any song. Perhaps it's a methodology thing? I know I wouldn't expect to do much of anything without freezing tracks and/or other explicit methods of reducing CPU load. Like automating bypass of entire tracks during their dead sections.)
if all effects used this feature, my CPU load would be generally smaller, in my tracks, the biggest hog is the without doubt the effects, one effect might not use much power but summed up they use loads of cpu. let's say I use waves doubler (a hoggy fx) on a track in my intro, once the intro is over, this effect will process zeros for the remaining 5 minutes of my tune, a complete waste of cpu... I can automate it yes, but i never do since I'm lazy ;) So shame on waves NI etc, considering the amount of money they charge for their plugs and the fact that their products are "very pro", they should use silence checking consistently.

Also, ive noticed many plugs leak memory, even "pro" ones. Please devs, correct your memory leaks, I need my memory.

frits has some good points above.

Post

I prefer constant-load plugs. Some host crashes if cpu is greater than 100%, so a constant-load works better for me. If I load correctly plug play will be stable. This my opinion


btw: here someone is a bit too offensive, this hurts me. Slow down please.

Post Reply

Return to “DSP and Plugin Development”