[sci.electronics] Discrete Time Filter for Audio

kirk@sdd.hp.com (Kirk Norton) (01/22/91)

Okay, here's a question for any of you digital filter types...

What is the best continuous-time to discrete-time transform to use
when designing a digital filter for audio signals?  I have done some
work with discrete time control systems and am familiar with a few
different methods:  impulse invariant, step invariant, bilinear (with
and without freq. prewarping), and pole-zero mapping.  Are any of these
methods commonly used for audio filter design?  Does it depend on the
desired frequency response characteristics of the filter?

If I sample at 44.1 KHz, will 20 KHz frequencies be a problem
(since it is so close to the folding frequency of 22.05 KHz)?  Would
one of the above transform methods handle the problem better than the 
others.  I was considering using either pole-zero mapping (since it
would map 0 Hz - 22.05 KHz to 0 Hz - infinity, which might not be bad
for my application), or the bilinear transform with frequency prewarping
(because the name sounds so cool), but since I've never even read a book on
discrete filter design (perhaps I should, no?) I thought I'd get opinions
from people who have a clue first.

Any opinions, ideas, comments (or, yes, even references to good texts)
would be most appreciated.

Thanks...

-Kirk

How 'bout them Raiders?

--
      Kirk Norton
      16399 West Bernardo Drive                                  
      San Diego, CA  92127-1899 

bill@flutter.tv.tek.com (William K. McFadden) (01/22/91)

In article <1991Jan21.131003@sdd.hp.com> kirk@sdd.hp.com (Kirk Norton) writes:
>I have done some
>work with discrete time control systems and am familiar with a few
>different methods:  impulse invariant, step invariant, bilinear (with
>and without freq. prewarping), and pole-zero mapping.  Are any of these
>methods commonly used for audio filter design?  Does it depend on the
>desired frequency response characteristics of the filter?

I've designed filters using all of the above methods except pole-zero
mapping.  In every case, the bilinear transform with frequency
prewarping was at least as good as the other methods.  In most cases it
was a lot better (this was especially true for high pass filters).
You'll find, by and large, that this is the preferred method for IIR
filter design.

You are probably also aware of FIR filters, which have no feedback and
linear phase response.  They are more computationally intensive than
equivalent IIR filters, but are used a lot because everybody is so
concerned about phase these days.

(FIR=finite impulse response, IIR=infinite impulse response)
-- 
Bill McFadden    Tektronix, Inc.  P.O. Box 500  MS 58-639  Beaverton, OR  97077
bill@videovax.tv.tek.com,     {hplabs,uw-beaver,decvax}!tektronix!videovax!bill
Phone: (503) 627-6920       "The biggest difference between developing a missle
component and a toy is the 'cost constraint.'" -- John Anderson, Engineer, TI

wang@motcid.UUCP (Jerry Wang) (01/24/91)

kirk@sdd.hp.com (Kirk Norton) writes:

>What is the best continuous-time to discrete-time transform to use
>when designing a digital filter for audio signals?  I have done some

>If I sample at 44.1 KHz, will 20 KHz frequencies be a problem
>(since it is so close to the folding frequency of 22.05 KHz)?  Would

1. If you do not care about phase linearity, IIR (Infinite Impulse
   Response) filters are computationally more economical.  Bi-linear 
   transformation is the most efficient design method I know of.

2. If you do care about phase linearity, the best method is FIR
   (Finite Impulse Response) filters.  The most efficient design
   method I know of is the 'Park-McCellan' iteration.

3. Sampling at 44.1 kHz while desiring a satisfactory result at
   20 kHz is possible but you may experience some implementation
   diificulties:

   a. You need an anti-aliasing filter with a pass band at 20 kHz
      and stop band at 22.05 kHz.  The analog anti-aliasing filter
      itself is a challenge.

   b. You need a reconstruction filter with similar frequency response
      and additionally with sinx/x equalization for the non-impulse
      D/A output.

   Typical solution is to oversample at 2X, 4X, 8X or even 16X the
   Nyquist rate.  This however is done at the cost of faster A/D
   and D/A converters and additional digital filtering is required 
   for decimation and and interpolation.  I know of one Jappaness company 
   that makes a variety of oversampling filters but fast A/D and D/A
   remain a challenge (I assume that you want 16 bit resolution).

4. Here is an additional challenge for you to think about, i.e. the
   normalization of your filter:

   Assumming that you have a 10 band digital equalizer with up to +10 dB
   gain in each band, what happens if your signal is from a sweeping
   frequency signal generator when all the bands are at +10 dB?  The 
   resulting output will be at +10 dB all the time and you will
   need two more bits for your D/A (i.e. 18 bit D/A).

   I probably got you thinking about making every band -20 dB to 0 dB and
   label them -10 dB to +10 dB, but it creates a diffrent problem.
   For a guy who wants 'flat' response (i.e. 0 dB labeled, -10 dB
   actual on all bands), the output is at -10 dB actual all the time
   with a sweeping oscillator as the input.  This means that we are
   lossing nearly 2 bit resolution or 10 dB dynamic range for nominal
   or typical setting.

   The bottom line: depending on how we fool around with the signal,
   we might have increased the dynamic range of the original signal.

Jerry Wang - Motorola