Free Books

Example Schroeder Reverberators

Additional example Schroeder Reverberators, drawn from CCRMA software listings, are shown in Figures 3.6 and 3.7. The notation used in the figures is explained above in Equations (3.2-3.3).

Figure: Schroeder reverberator SATREV by Prof. John Chowning at CCRMA (drawn from a 1971 MUS10 software listing).
Figure 3.7: A later Schroeder reverberator for the Samson Box [393] at CCRMA, based on (and still called) JCREV.
A software musical instrument using one of these reverberators simply adds its output, suitably scaled, to the real-time variable RevIn (the global reverberator input sample at the current time). In both examples, we again see three Schroeder allpass filters in series (Schroeder suggested five, as disussed above). The rather small reverberator of Fig.3.6 is thought to have been used in John Chowning's often-heard FM-brass canon sound examples.4.8Like the more computationally expensive four-channel-audio example in Fig.3.5, it is designed for a 25 kHz sampling rate. Its ``mixing matrix'' is simply a negation of the right stereo channel. In addition to the allpass chain in Figures 3.6 and 3.7, there is a parallel bank of four feedback comb filters. Since all of the filters are linear and time-invariant [449], the series allpass chain can go either before or after the parallel comb-filter bank. Unlike the allpass filters, the comb filters have an irregular magnitude frequency response, and they can be considered a simulation of four specific echo sequences. The delay lengths in these comb filters may be used to adjust the illusion of ``room size'', although if they are shortened, there should be more of them in parallel, according to Schroeder's quote above. In Fig.3.7, the reverbator output signal RevOut is fed to the four audio output channels via four delay lines. These delay lengths are specified relative to the sampling rate $ f_s$.4.9 Output delay lines can substitute for or supplement a mixing matrix as a means for decorrelating the reverberation output channels (to minimize reverberation imaging between speakers). In this particular case, however, the delays are evidently not optimized for decorrelation. Also, for purposes of decorrelation, the shortest delay can be subtracted from the other three and its corresponding delay-line eliminated. A Schroeder reverberator along the above lines may be found in the Synthesis Tool Kit (STK) [86]. See files JCRev.cpp and JCRev.h. The reverberators shown in Figures 3.5 and 3.6 above are included in the Faust distribution. See functions jcrev, satrev, and reverb_demo in the effect.lib library. While these Schroeder reverberators are quite small by today's standards, they are well tuned for their size. More commonly used today is freeverb (included in the examples directory of the Faust distribution as freeverb.dsp), discussed next.
Next Section:
Freeverb Main Loop
Previous Section:
Nested Allpass Filters