Next  |  Prev  |  Up  |  Top  |  REALSIMPLE Top

Delay-Filter Design

Let

How do we design $ H_i(z)$ to achieve $ t_{60}(\omega)$ ?

Let

$\displaystyle p_i \mathrel{\stackrel{\Delta}{=}}e^{j\omega_iT}
$

denote the $ i$ th pole of the lossless prototype. Neglecting phase in the loss filter $ G(z)$ , the substitution

$\displaystyle z^{-1}\leftarrow G(z)z^{-1}
$

only affects the pole radius, not angle.

Assuming $ G(e^{j\omega T})\approx 1$ , pole $ i$ 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).
$

Desired Pole Radius

Pole radius $ R_i$ and $ t_{60}$ are related by

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

The ideal loss filter $ G(z)$ therefore satisfies

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

The desired delay-line filters are therefore

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

$ \Rightarrow$

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

or

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

Now use invfreqz or stmcb, etc., in Matlab to design low-order filters $ H_i(z)$ for each delay line.


Next  |  Prev  |  Up  |  Top  |  REALSIMPLE Top

Download Reverb.pdf
Download Reverb_2up.pdf
Download Reverb_4up.pdf

``Artificial Reverberation and Spatialization'', by Julius O. Smith III and Nelson Lee,
REALSIMPLE Project — work supported by the Wallenberg Global Learning Network .
Released 2007-09-19 under the Creative Commons License (Attribution 2.5), by Julius O. Smith III and Nelson Lee
Center for Computer Research in Music and Acoustics (CCRMA),   Stanford University
CCRMA