Free Books

Choice of Delay Lengths

Following Schroeder's original insight, the delay line lengths in an FDN ($ M_i$ 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 $ M_i$ 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)}

where $ V$ is the total volume of the room, and $ S$ is total surface area enclosing the room. This approximation requires the diffuse field assumption, i.e., that plane waves are traveling randomly in all directions [349,47] (see §3.2.1 for a simple construction). Normally, late reverberation satisfies this assumption well, away from open doors and windows, provided the room is not too ``dead''. Regarding each delay line as a mean-free-path delay, the average can be set to the mean free path by equating

$\displaystyle \frac{{\overline d}}{cT} = \frac{1}{N} \sum_{i=1}^N M_i

where $ c$ denotes sound speed and $ T$ denotes the sampling period. This number should be treated as a lower bound because in real rooms reflections are often diffuse, especially at high frequencies. In a diffuse reflection, a single incident plane wave reflects in many directions at once.

Mode Density Requirement

A guide for the sum of the delay-line lengths is the desired mode density. The sum of delay-line lengths $ M_i$ in a lossless FDN is simply the order of the system $ M$:

$\displaystyle M \isdef \sum_{i=1}^N M_i\qquad\hbox{(FDN order)}

The order increases slightly when lowpass filters are introduced after the delay lines to achieve a specific reverberation time at low and high frequencies (as described in the next subsection).

Since the order of a system equals the number of poles, we have that $ M$ is the number of poles on the unit circle in the lossless prototype. If the modes were uniformly distributed, the mode density would be $ M/f_s=MT$ 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

For a sampling rate of 50 kHz and a reverberation time ($ t_{60}$) equal to 1 second, we obtain $ M\geq 7500$.

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 $ \hat{M}_i$ as an integer power of a distinct prime number $ p_i$ [457]:

$\displaystyle \hat{M}_i \isdefs p_i^{m_i}

where we call $ m_i\ge 1$ the ``multiplicity'' of the prime $ p_i$. With this choice, the delay-line lengths are always coprime (no factors in common other than $ 1$), and yet we can lengthen or shorten each delay line individually (by factors of $ p_i$) without affecting the mutually prime property.

Suppose we are initially given desired delay-line lengths $ M_i$ arranged in ascending order so that

$\displaystyle M_1 < M_2 < \cdots < M_N.

Then good prime-power approximations $ \hat{M}_i$ can be expected using the prime numbers in their natural order:

$\displaystyle p_i \in \{2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,\ldots\}

Since $ \hat{M}_i=p_i^{m_i} \,\,\Rightarrow\,\,\log(\hat{M}_i) = m_i \log(p_i)$ (for any logarithmic base), an optimal (in some sense) choice of prime multiplicity $ m_i$ is

$\displaystyle m_i
\isdefs$   round$\displaystyle \left[\frac{\log(M_i)}{\log(p_i)}\right]
\isdefs \left\lfloor 0.5 + \frac{\log(M_i)}{\log(p_i)}\right\rfloor.

where $ M_i$ is the desired length in samples. That is, $ m_i$ can be simply obtained by rounding $ \log(M_i)/\log(p_i)$ to the nearest integer (max 1). The prime-power delay-line length approximation is then of course

$\displaystyle \hat{M}_i \isdefs p_i^{m_i},

and the multiplicative approximation error is bounded by $ p_i^{\pm1/2}$ (when $ M_i\ge\sqrt{p_i}$).

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