AdCVerb:
Filter:
Classes (extension) | UGens

AdCVerb : Object
ExtensionExtension

basic reverb based on Schroeder and Moorer-Loy
Source: AdCVerb.sc
Subclasses: AdCVerb2

Description

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.

Class Methods

AdCVerb.verbose

AdCVerb.verbose = value

if true, post the random-generated allpass times for precise rebuilding of specific times.

AdCVerb.maxTime

AdCVerb.maxTime = value

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.

AdCVerb.defaultCombTimes

get the default delay times for the comb filters

AdCVerb.ar(in, revTime: 3, hfDamping: 0.1, nOuts: 2, predelay: 0.02, numCombs: 8, numAllpasses: 4, inFilter: 0.6, leakCoeff: 0.995, combScale: 1, apScale: 1, allpassPrimes)

create an ar instance of AdCVerb.

Arguments:

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.

Returns:

an instance of AdCVerb

AdCVerb.makeMonoIn(in, inFilter, leakCoeff, predelay)

AdCVerb.makeCombTimes(numCombs)

AdCVerb.makeCombs(monoIn, combTimes, revTime, hfDamping, numCombs, combScale)

AdCVerb.makeAllpasses(combsIn, revTime, nOuts, numAllpasses, apScale, allpassPrimes)

Internal methods to create all components of the verb, factored to allow building variants like AdCVerb2.

Inherited class methods

Instance Methods

Inherited instance methods

Examples