Next  |  Prev  |  Up  |  Top  |  Index  |  JOS Index  |  JOS Pubs  |  JOS Home  |  Search

Delay-Filter Design

Let $ t_{60}(\omega)$ denote the desired reverberation time at radian frequency $ \omega $, and let $ H_i(z)$ denote the transfer function of the lowpass filter to be placed in series with delay line $ i$. The problem we consider now is how to design these filters to yield the desired reverberation time. We will specify an ideal amplitude response for $ H_i(z)$ based on the desired reverberation time at each frequency, and then use conventional filter-design methods to obtain a low-order approximation to this ideal specification.

Since losses will be introduced by the substitution $ z^{-1}\leftarrow
G(z)z^{-1}$, we need to find its effect on the pole radii of the lossless prototype. Let

$\displaystyle p_i \isdef e^{j\omega_iT}
$

denote the $ i$th pole. (Recall that all poles of the lossless prototype are on the unit circle.) If the per-sample loss filter $ G(z)$ were zero phase, then the substitution $ z^{-1}\leftarrow
G(z)z^{-1}$ would only affect the radius of the poles and not their angles. If the magnitude response of $ G(z)$ is close to 1 along the unit circle, then we have the approximation that the $ i$th pole moves from $ z=e^{j\omega_iT}$ to

$\displaystyle p_i = R_i e^{j\omega_iT}
$

where

$\displaystyle R_i = G\left(R_i e^{j\omega_iT}\right) \approx G\left(e^{j\omega_iT}\right).
$

In other words, when $ z^{-1}$ is replaced by $ G(z)z^{-1}$, where $ G(z)$ is zero phase and $ \vert G(e^{j\omega})\vert$ is close to (but less than) 1, a pole originally on the unit circle at frequency $ \omega_i$ moves approximately along a radial line in the complex plane to the point at radius $ R_i \approx G\left(e^{j\omega_iT}\right)$.3.12

The radius we desire for a pole at frequency $ \omega_i$ is that which gives us the desired $ t_{60}(\omega_i)$:

$\displaystyle R_i ^{t_{60}(\omega_i)/T} = 0.001
$

Thus, the ideal per-sample filter $ G(z)$ satisfies

$\displaystyle \left\vert G(\omega)\right\vert^{t_{60}(\omega)/T} = 0.001
$

The lowpass filter in series with a length $ M_i$ delay line should therefore approximate

$\displaystyle H_i(z) = G^{M_i}(z)
$

which implies

$\displaystyle \left\vert H_i(e^{j\omega T})\right\vert^{\frac{t_{60}(\omega)}{M_iT}} = 0.001.
$

Taking $ 20\log_{10}$ of both sides gives

$\displaystyle 20 \log_{10}\left\vert H_i(e^{j\omega T})\right\vert = -60 \frac{M_i T}{t_{60}(\omega)}. \protect$ (3.3)

This is the same formula derived by Jot [201] using a somewhat different approach.

Now that we have specified the ideal delay-line filter $ H_i(e^{j\omega T})$, any number of filter-design methods can be used to find a low-order $ H_i(z)$ which provides a good approximation to satisfying Eq. (2.3). Examples include the functions invfreqz and stmcb in Matlab. Since the variation in reverberation time is typically very smooth with respect to $ \omega $, the filters $ H_i(z)$ can be very low order.



Subsections
Next  |  Prev  |  Up  |  Top  |  Index  |  JOS Index  |  JOS Pubs  |  JOS Home  |  Search

[How to cite and copy this work] 
``Physical Audio Signal Processing for Virtual Musical Instruments and Digital Audio Effects'', by Julius O. Smith III, (December 2005 Edition).
Copyright © 2006-07-01 by Julius O. Smith III
Center for Computer Research in Music and Acoustics (CCRMA),   Stanford University
CCRMA  [Automatic-links disclaimer]