REVERBIT - reverb instrument
REVERBIT(outskip, inskip, indur, ampmult, revtime, wetpercent, rtchandelay, cutoff [, dcblock ])
Function table 1 gives amplitude curve. This curve (and ampmult) affect the input signal, before it enters the reverberator.
REVERBIT reverberates the input signal using a variation on a typical Schroeder network of comb and allpass filters. (See below for a description of the signal chain.)
This reverb works best with short reverb times and a moderate amount of reverberated sound mixed into the output. If you crank revtime and wetpercent, you'll hear a grungy, grainy reverb tail. You can smooth this some using the lowpass filter. Lansky's original intent was just to "put a gloss on a signal,'' not to swamp it with gushy reverb.
The rtchandelay parameter governs the delay time between output channels. A small amount (e.g., .02 seconds) livens up the sound; a larger amount makes an audible slap echo.
REVERBIT uses the curve provided in function table 1 to scale the amplitudes of the input source. Use setline, setexp, or makegen to create function table 1. If this table has not been created, no amplitude scaling (other than that given by ampmult) will occur.
The output of REVERBIT must be stereo. The input file can be either mono or stereo. If the input is from a real-time source, such as live audio in or an aux bus, inskip MUST be zero.
Here's how REVERBIT works:
Here's a good recipe for a moderate amount of reverb, suitable for enhancing a signal without calling too much attention to the reverb.
REVERBIT(outskip, inskip, indur, amp=1, revtime=.3, revpct=.25, rtchandelay=.015, cutoff=0)
To get a more dramatic reverb effect, it's probably a good idea to roll off the high end graininess, using the built-in lowpass filter.
REVERBIT(outskip, inskip, indur, amp, revtime=3, revpct=.9, rtchandelay=.06, cutoff=1200)
One common use for this instrument is as a sweetener for other instruments. To make this happen, you have to set up an aux bus to send the signal from the first instrument into REVERBIT. It's important to set REVERBIT's outskip and indur so that it catches all the sound output by the first instrument. The inskip to REVERBIT must be zero when reading from anything other than a soundfile.
bus_config("WAVETABLE", "aux 0 out") bus_config("REVERBIT", "aux 0 in", "out 0-1")
totdur = 10 for (st = 0; st < totdur; st = st + .3) WAVETABLE(st, notedur=.1, amp=5000, freq=440)
REVERBIT(outskip=0, inskip=0, totdur + notedur, amp=1, revtime=.6, revpct=.4, rtchandel=.02, cutoff=5000)
setline, setexp, makegen, bus_config
Paul Lansky, revised and documented for RTcmix by John Gibson <johgibso at indiana edu>