Very long and smooth reverb algorithm.
in RTcmix/insts/bgg
GVERB(outsk, insk, dur, AMP, ROOMSIZE, RVBTIME, DAMPING, BANDWIDTH, DRYLEVEL, EARLYREFLECT, RVBTAIL, RINGDOWN[, INCHAN])
CAPITALIZED parameters are pfield-enabled for table or dynamic control (see the maketable or makeconnection scorefile commands). Parameters after the [bracket] are optional and default to 0 unless otherwise noted.
Param Field | Parameter | Units | Dynamic | Optional | Notes |
---|---|---|---|---|---|
p0 | output start time | seconds | no | no | |
p1 | input start time | seconds | no | no | |
p2 | duration | seconds | no | no | |
p3 | amplitude multiplier | relative multiplier of input signal | yes | no | |
p4 | roomsize | 1.0 - 300.0 | yes | no | |
p5 | reverb time | 0.1 - 360.0 | yes | no | |
p6 | damping | 0.0 - 1.0 | yes | no | |
p7 | input filter bandwidth | 0.0 - 1.0 | yes | no | |
p8 | dry level | inverse dB, -90.0 - 0.0 | yes | no | |
p9 | early reflection level | inverse dB, -90.0 - 0.0 | yes | no | |
p10 | tail level | inverse dB, -90.0 - 0.0 | yes | no | |
p11 | ring-down time | seconds, added to duration | no | no | |
p12 | input channel | - | no | yes | default 0 |
Parameters labled as Dynamic can receive dynamic updates from a table or real-time control source.
Author: Brad Garton, 5/2010
GVERB is a very smooth reverberator with the ability to produce very long reverb times.
GVERB is based on the original “gverb/gigaverb” by Juhana Sadeharju (kouhia at nic.funet.fi). The code for this version was taken from the Max/MSP version by Olaf Mtthes (olaf.matthes at gmx.de).
The parameters should be relatively self-explanatory for this instrument. Note the use of ‘inverse’ dB to specify the dry signal amount in the output (p8, “DRYLEVEL”), the early (wall) reflection leveil (p9, “EARLYREFLECT”) and the level of the reverberated signal ‘tail’ (diffuse reflections, p10, “RVBTAIL”).
The filter bandwith parameter (p7, “BANDWIDTH”) applies a simple low-pass filter to the input signal prior to processing through the reverberator.
The ring-down time (p11, “RINGDOWN”) is used to allow the revebr to die away after the input signal has finished.
If you modulate some of the parameters too quickly using pfield-controls, some glitching may occur. Use a shorter reset value to compensate (may not always work, though).
GVERB requires a stereo output.
very basic:
rtsetparams(44100, 2)
load("GVERB")
rtinput("mysound.aif")
GVERB(0, 0, 9.8, 0.9, 78.0, 7.0, 0.71, 0.34, -10.0, -11.0, -9.0, 7.0)
slightly more advanced:
rtsetparams(44100, 2)
load("GVERB")
rtinput("mysound.aif")
roomsize = maketable("line", "nonorm", 1000, 0, 78.0, 3,200.0, 7,10.0, 10,25.0)
revtime = maketable("line", "nonorm", 1000, 0,1, 10,50)
damping = makeLFO("tri", 0.4, 0.1, 0.9)
amp = 0.7
GVERB(0, 0, 9.8, amp, roomsize, revtime, damping, 0.34, -10.0, -11.0, -9.0, 7.0)
inputbandwidth = makeLFO("tri", 0.5, 0.1, 0.9)
drylevel = maketable("line", "nonorm", 1000, 0,-1.0, 5,-50.0, 7,-1.0, 15,-1.0)
amp = 0.3
GVERB(14, 0, 9.8, amp, 35.0, 15.0, 0.5, inputbandwidth, drylevel, -11.0, -9.0, 5.0)
earlylevel = maketable("line", "nonorm", 1000, 0,-1.0, 5,-68, 9,-10.0, 15,-10.0)
taillevel = maketable("line", "nonorm", 1000, 0,-70, 5,-3.5, 10,-50, 15,-50)
amp = 0.9
GVERB(25, 0, 9.8, amp, 143.0, 9.0, 0.7, 0.7, -27.0, earlylevel, taillevel, 3.0)
DMOVE, FREEVERB, MMOVE, MOVE, MPLACE, MROOM, PLACE, REV, REVERBIT, ROOM, SROOM