Csound Csound-dev Csound-tekno Search About

[Csnd] Re: Various Reverb CPU Usages (real time)

Date2008-06-08 22:08
From"Art Hunkins"
Subject[Csnd] Re: Various Reverb CPU Usages (real time)
I ran a further test: to compare CPU usage (with 16 identical voices) for a 
global reverb vs. one reverb per instrument.

Results - CPU usage with reverbs per instrument, using otherwise the same 
setup as previously:
reverbsc: 65 (vs. 11 with global reverb)
reverb (2 units): 29 (vs. 10 with global reverb)

Conclusion: Whatever else you do, in a realtime situation, make reverb 
global!

Two baseline observations confirm this conclusion. Keeping the same 
instruments except for the reverbs (I kept locsit, locsend and denorm), 
these CPU usages were seen:
One-voice baseline: 3.5
16-voice baseline: 10

Further conclusion: In single voices, the presence of reverb has a 
significant effect on CPU usage. In multiple voices *with global reverb*, 
the increase in CPU usage is insignificant. The most telling example from my 
tests regards 16 voices with/without reverbsc:
Baseline 16-voice (no reverb): 10
16-voice global reverb (reverbsc): 11
16-voice with individual reverbs (reverbsc): 65 !!

Final observation: The fewer reverbs in individual instruments, the less the 
CPU percentage. With larger numbers of instruments, the particular reverb 
opcode you use is insignificant - as long as the reverb is global.

Art Hunkins

----- Original Message ----- 
From: "Art Hunkins" 
To: 
Sent: Sunday, June 08, 2008 2:03 PM
Subject: Various Reverb CPU Usages (real time)


>I have just run comparative CPU usage tests on the various reverb opcodes 
>in a stereo setting. The opcodes tested were: reverbsc, freeverb, reverb (2 
>units required) and nreverb (2 units as well).
>
> The test orchestra consisted of a simple (vco2) oscillator, stereo locsig, 
> locsend and denorm. Tests with a single voice had the reverb within the 
> instrument. Tests were also run with 16 identical instruments running 
> simultaneously, but with a global reverb accumulator into a separate 
> reverb instrument.
>
> In WinXP (and additional applications minimized), average single voice CPU 
> usage (percentage):
> reverbsc: 7
> freeverb: 6
> reverb (2 units): 4.5
> nreverb (2 units): 5.5
>
> with 16 voices:
> reverbsc: 11
> freeverb: 11
> reverb (2): 10
> nreverb (2): 11
>
> My conclusion: The particular reverb opcode chosen makes little to no 
> difference in any but the simplest settings. Use the best quality 
> available (which IMO is reverbsc).
>
> So, I'll be using reverbsc even for OPLC. (I like reverbsc's ability to 
> randomize reflection time; this makes the reverb sonority less 
> smooth/regular, which helps with sustained tones.)
>
> Would anyone make a different choice?
>
> Art Hunkins 


Date2008-06-09 06:25
FromDavidW
Subject[Csnd] Re: Re: Various Reverb CPU Usages (real time)
Thanks for doing the CPU measurements, Art.

For what it's worth, I use both local (single instrument) and global  
reverbs simultaneously, and I tweek the parameters of the local  
reverbs so they're all slightly different. In situations where I  
haven't got the CPU time to do both, I do local and push global off to  
an external unit or run the NRT file again just for reverb.

One day I'll build a global reverb which which to model non-uniform  
spacial reflections.
D.

On 09/06/2008, at 7:08 AM, Art Hunkins wrote:

> I ran a further test: to compare CPU usage (with 16 identical  
> voices) for a global reverb vs. one reverb per instrument.
>
> Results - CPU usage with reverbs per instrument, using otherwise the  
> same setup as previously:
> reverbsc: 65 (vs. 11 with global reverb)
> reverb (2 units): 29 (vs. 10 with global reverb)
>
> Conclusion: Whatever else you do, in a realtime situation, make  
> reverb global!
>
> Two baseline observations confirm this conclusion. Keeping the same  
> instruments except for the reverbs (I kept locsit, locsend and  
> denorm), these CPU usages were seen:
> One-voice baseline: 3.5
> 16-voice baseline: 10
>
> Further conclusion: In single voices, the presence of reverb has a  
> significant effect on CPU usage. In multiple voices *with global  
> reverb*, the increase in CPU usage is insignificant. The most  
> telling example from my tests regards 16 voices with/without reverbsc:
> Baseline 16-voice (no reverb): 10
> 16-voice global reverb (reverbsc): 11
> 16-voice with individual reverbs (reverbsc): 65 !!
>
> Final observation: The fewer reverbs in individual instruments, the  
> less the CPU percentage. With larger numbers of instruments, the  
> particular reverb opcode you use is insignificant - as long as the  
> reverb is global.
>
> Art Hunkins

________________________________________________
David Worrall.
- Experimental Polymedia:	www.avatar.com.au
- Education for Financial Independence: www.mindthemarkets.com.au
Australian research affiliations:
- Capital Markets Cooperative Research Centre: www.cmcrc.com
- Sonic Communications Research Group:	creative.canberra.edu.au/scrg




Date2008-06-10 22:31
FromTobiah
Subject[Csnd] Re: Re: Various Reverb CPU Usages (real time)
> Conclusion: Whatever else you do, in a realtime situation, make reverb 
> global!

Doesn't the 'tail' get cut off when you use reverb locally?
It seems as though the reverb output would end abruptly
when the event was over.  I suppose one could use one
of the release type envelope opcodes, but I never consider
using reverb local to the instrument.

Date2008-06-11 14:54
From"David Akbari"
Subject[Csnd] Re: Re: Re: Various Reverb CPU Usages (real time)
AttachmentsNone