Choice of Delay Lengths
Following Schroeder's original insight, the delay line lengths in an
FDN ( in Fig.3.10) are typically chosen to be mutually
prime. That is, their prime factorizations contain no common
factors. This rule maximizes the number of samples that the lossless
reverberator prototype must be run before the impulse response
repeats.
The delay lengths should be chosen to ensure a
sufficiently high mode density in all frequency bands. An
insufficient mode density can be heard as ``ringing tones'' or an
uneven amplitude modulation in the late reverberation impulse
response.
Mean Free Path
A rough guide to the average delay-line length is the ``mean free path'' in the desired reverberant environment. The mean free path is defined as the average distance a ray of sound travels before it encounters an obstacle and reflects. An approximate value for the mean free path, due to Sabine, an early pioneer of statistical room acoustics, is
![$\displaystyle {\overline d} = 4\frac{V}{S}\qquad\hbox{(mean free path)}
$](http://www.dsprelated.com/josimages_new/pasp/img794.png)
![$ V$](http://www.dsprelated.com/josimages_new/pasp/img239.png)
![$ S$](http://www.dsprelated.com/josimages_new/pasp/img795.png)
![$\displaystyle \frac{{\overline d}}{cT} = \frac{1}{N} \sum_{i=1}^N M_i
$](http://www.dsprelated.com/josimages_new/pasp/img796.png)
![$ c$](http://www.dsprelated.com/josimages_new/pasp/img125.png)
![$ T$](http://www.dsprelated.com/josimages_new/pasp/img42.png)
Mode Density Requirement
A guide for the sum of the delay-line lengths is the desired
mode density. The sum of delay-line lengths in a lossless
FDN is simply the order of the system
:
![$\displaystyle M \isdef \sum_{i=1}^N M_i\qquad\hbox{(FDN order)}
$](http://www.dsprelated.com/josimages_new/pasp/img797.png)
Since the order of a system equals the number of poles, we have that
is the number of poles on the unit circle in the lossless
prototype. If the modes were uniformly distributed, the mode density
would be
modes per Hz. Schroeder [417]
suggests that, for a reverberation time of 1 second, a mode density of
0.15 modes per Hz is adequate. Since the mode widths are inversely
proportional to reverberation time, the mode density for a
reverberation time of 2 seconds should be 0.3 modes per Hz, etc. In
summary, for a sufficient mode density in the frequency domain,
Schroeder's formula is
![$\displaystyle M \geq 0.15 t_{60}f_s
$](http://www.dsprelated.com/josimages_new/pasp/img799.png)
![$ t_{60}$](http://www.dsprelated.com/josimages_new/pasp/img668.png)
![$ M\geq 7500$](http://www.dsprelated.com/josimages_new/pasp/img800.png)
Prime Power Delay-Line Lengths
When the delay-line lengths need to be varied in real time, or
interactively in a GUI, it is convenient to choose each delay-line
length as an integer power of a distinct prime number
[457]:
![$\displaystyle \hat{M}_i \isdefs p_i^{m_i}
$](http://www.dsprelated.com/josimages_new/pasp/img802.png)
![$ m_i\ge 1$](http://www.dsprelated.com/josimages_new/pasp/img803.png)
![$ p_i$](http://www.dsprelated.com/josimages_new/pasp/img301.png)
![$ 1$](http://www.dsprelated.com/josimages_new/pasp/img138.png)
![$ p_i$](http://www.dsprelated.com/josimages_new/pasp/img301.png)
Suppose we are initially given desired delay-line lengths
arranged in ascending order so that
![$\displaystyle M_1 < M_2 < \cdots < M_N.
$](http://www.dsprelated.com/josimages_new/pasp/img804.png)
![$ \hat{M}_i$](http://www.dsprelated.com/josimages_new/pasp/img801.png)
![$\displaystyle p_i \in \{2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,\ldots\}
$](http://www.dsprelated.com/josimages_new/pasp/img805.png)
![$ \hat{M}_i=p_i^{m_i} \,\,\Rightarrow\,\,\log(\hat{M}_i) = m_i \log(p_i)$](http://www.dsprelated.com/josimages_new/pasp/img806.png)
![$ m_i$](http://www.dsprelated.com/josimages_new/pasp/img653.png)
![$\displaystyle m_i
\isdefs$](http://www.dsprelated.com/josimages_new/pasp/img807.png)
![$\displaystyle \left[\frac{\log(M_i)}{\log(p_i)}\right]
\isdefs \left\lfloor 0.5 + \frac{\log(M_i)}{\log(p_i)}\right\rfloor.
$](http://www.dsprelated.com/josimages_new/pasp/img808.png)
![$ M_i$](http://www.dsprelated.com/josimages_new/pasp/img38.png)
![$ m_i$](http://www.dsprelated.com/josimages_new/pasp/img653.png)
![$ \log(M_i)/\log(p_i)$](http://www.dsprelated.com/josimages_new/pasp/img809.png)
![$\displaystyle \hat{M}_i \isdefs p_i^{m_i},
$](http://www.dsprelated.com/josimages_new/pasp/img810.png)
![$ p_i^{\pm1/2}$](http://www.dsprelated.com/josimages_new/pasp/img811.png)
![$ M_i\ge\sqrt{p_i}$](http://www.dsprelated.com/josimages_new/pasp/img812.png)
This prime-power length scheme is used to keep 16 delay lines both variable and mutually prime in Faust's reverb_designer.dsp programming example (via the function prime_power_delays in effect.lib).
Next Section:
Achieving Desired Reverberation Times
Previous Section:
Choice of Lossless Feedback Matrix