Zita-Rev1
A FOSS4.17 reverberator that combines elements of Schroeder (§3.5) and FDN reverberators (§3.7) is zita-rev1,4.18written in C++ for Linux systems by Fons Adriaensen. A Faust version of the zita-rev1 stereo-mode functionality is zita_rev1 in Faust's effect.lib. A high-level block diagram appears in Fig.3.14.
![]() |
The main high-level addition relative to an 8th-order FDN reverberator
is the block labeled allpass_combs in Fig.3.14.
This block inserts a Schroeder allpass comb filter (Fig.2.30) in
series with each delay line. In zita-rev1 (as of this
writing), the allpass-comb feedforward/feedback coefficients are all
set to . The delay-line lengths and other details are readily
found in the freely available source code (or by browsing the
Faust-generated block diagram).
Zita-Rev1 Delay-Line Filters
In zita-rev1, the damping filter for each delay line consists
of a low-shelf filter
[449],4.19in series with a unique first-order lowpass filter
that sets
the high-frequency
to be half that of the middle-band at a
particular frequency
(specified as ``HF Damping'' in the GUI).
Since the filter
is constrained to be a lowpass,
for
, i.e., the decay time gets
shorter at higher frequencies.
Viewing the resulting damping filter
as a
three-band filter bank (§3.7.5), let
and
denote the
desired band gains at dc and ``middle frequencies'',
respectively.4.20 Then the low shelf may be set for a
desired dc-gain of
, and its input (or output) signal
multiplied by
to obtain the resulting filter
![$\displaystyle H_l(z) \eqsp g_m + (g_0-g_m)\frac{1-p_l}{2}\frac{1+z^{-1}}{1-p_lz^{-1}},
$](http://www.dsprelated.com/josimages_new/pasp/img908.png)
![$ p_l$](http://www.dsprelated.com/josimages_new/pasp/img909.png)
![$\displaystyle p_l \isdefs \frac{1-\pi f_1T}{1+\pi f_1T},
$](http://www.dsprelated.com/josimages_new/pasp/img910.png)
![$ f_1$](http://www.dsprelated.com/josimages_new/pasp/img911.png)
![$ T$](http://www.dsprelated.com/josimages_new/pasp/img42.png)
The lowpass filter is also first order, and to provide half
the middle-band
at the beginning of the ``high'' band, the
lowpass should ``break'' to a gain of
at the ``HF Damping''
frequency
specified in the GUI. A unity-dc-gain one-pole
lowpass has the form [449]
![$\displaystyle H_h(z) = \frac{1-p_h}{1-p_hz^{-1}},
$](http://www.dsprelated.com/josimages_new/pasp/img912.png)
![$ p_h$](http://www.dsprelated.com/josimages_new/pasp/img913.png)
![$ g_M$](http://www.dsprelated.com/josimages_new/pasp/img914.png)
![$ f_h$](http://www.dsprelated.com/josimages_new/pasp/img900.png)
![$\displaystyle \left\vert H_h\left(e^{j2\pi f_hT}\right)\right\vert \eqsp
\left\vert\frac{1-p_h}{1-p_he^{-j2\pi f_hT}}\right\vert \eqsp g_M
$](http://www.dsprelated.com/josimages_new/pasp/img915.png)
![$ p_h^2 + b\,p_h +1=0$](http://www.dsprelated.com/josimages_new/pasp/img916.png)
![$ p_h$](http://www.dsprelated.com/josimages_new/pasp/img913.png)
![$\displaystyle p_h \eqsp -\frac{b}{2} - \sqrt{\left(\frac{b}{2}\right)^2 - 1},
$](http://www.dsprelated.com/josimages_new/pasp/img917.png)
![$\displaystyle -\frac{b}{2} \eqsp \frac{1-g_M^2\cos(2\pi f_h T)}{1-g_M^2} > 1,
$](http://www.dsprelated.com/josimages_new/pasp/img918.png)
![$ -b/2 + \sqrt{(b/2)^2 - 1} > 1$](http://www.dsprelated.com/josimages_new/pasp/img919.png)
![$ \vert g_M\vert<1$](http://www.dsprelated.com/josimages_new/pasp/img920.png)
![$ t_{60}$](http://www.dsprelated.com/josimages_new/pasp/img668.png)
![$ 8$](http://www.dsprelated.com/josimages_new/pasp/img921.png)
Next Section:
Further Extensions
Previous Section:
FDN Reverberators in Faust