AdCVerb is a bank of comb filters going through a bank of allpass filters, with optional predelay. Basic input filtering is provided (high rolloff, DC removal), and it is easy and efficient to use for multichannel systems.
The overall structure is:
There is no specific design of first reflections; if there are no particular demands on the early reflections, those created by AdCVerb are often fully sufficient. One can easily add first reflections, e.g. based on room geometry, by adding higher predelays, and creating a special purpose set of first reflections; in this usage context AdCVerb works well for global reverb tails.
The combTimes are hardcoded to be coloration-free (based on prime numbers), and they can be scaled. The allpassTimes are generated randomly based on prime number ratios, but can also be passed in if desired.
if true, post the random-generated allpass times for precise rebuilding of specific times.
get and set the maximum delay time for predelay, combs and allpasses. When maxTime is changed, the next instance of AdCVerb will have this maxdelaytime for combs, allpasses and predelay. Default value is 0.2.
get the default delay times for the comb filters
create an ar instance of AdCVerb.
in |
the audio inputs or inputs, which are converted to mono. |
revTime |
reverb time for -60 db decay of the comb filters |
hfDamping |
higher frequencies can be rolled of in the combs: 0.0 is no damping, 1.0 means high frequencies roll off significantly faster. (This uses the mild rolloff introduced by linear interpolation in CombL.) |
nOuts |
number of output channels; each output gets its own group of allpass filters for density and decorrelation |
predelay |
predelay before reverb tail begins, in seconds |
numCombs |
number of combs used in reverb tail |
numAllpasses |
number of allpasses used for decorrelating each out channel |
inFilter |
a coefficient for reverb input filtering (OnePole); 0.0 is no filtering, 0.99 is very dark. |
leakCoeff |
coefficient for a LeakDC which filters DC in the input sum, in order to avoid DC drift. default of 0.995 introduces rather little LF rolloff. |
combScale |
scales all combTimes up to maxTime; can be used to adjust room size. default = 1.0 |
apScale |
scales all allpassTimes up to maxTime; can be used to adjust room size. default = 1.0 |
allpassPrimes |
an optional list of prime numbers for the allpass filters; providing them overrides numAllpasses and nOuts. |
an instance of AdCVerb
Internal methods to create all components of the verb, factored to allow building variants like AdCVerb2.