` (1)*y(n) = b0*x[n] + b1*x[n-1] + ... + bM*x[n-M] - a1*y[n-1]
- ... - aN*y[n-N]`

the system function for which is represented by:
`
-1
-M`
`
B(Z) b0 + b1*Z + ... +
bM*Z`
` H(Z) =
---- = -------------------------------`
`
-1
-N`
`
A(Z) 1 + a1*Z
+ ... + aN*Z`

__INITIALIZATION__

At initialization the number of zeros and poles of the filter are specified
along with the corresponding zero and pole coefficients. The coefficients
must be obtained by an external filter-design application such as Matlab
and specified directly or loaded into a table via **gen01**. With **zfilter2,**
the roots of the characteristic polynomials are solved at initialization
so that the pole-control operations can be implemented efficiently.

__PERFORMANCE__

The** filter2** and **kfilter2** opcodes perform filtering using
a transposed form-II digital filter lattice with no time-varying control.
**zfilter2** uses the additional operations of radial pole-shearing
and angular pole-warping in the Z plane.

Pole shearing increases the magnitude of poles along radial lines in
the Z-plane. This has the affect of altering filter ring times. The k-rate
variable *kdamp* is the damping parameter. Positive values (0.01 to
0.99) increase the ring-time of the filter (hi-Q), negative values (-0.01
to -0.99) decrease the ring-time of the filter, (lo-Q).

Pole warping changes the frequency of poles by moving them along angular
paths in the Z plane. This operation leaves the shape of the magnitude
response unchanged but alters the frequencies by a constant factor (preserving
0 and p). The k-rate variable *kfreq* determines the frequency warp
factor. Positive values (0.01 to 0.99) increase frequencies toward p and
negative values (-0.01 to -0.99) decrease frequencies toward 0.

Since **filter2** implements generalized recursive filters, it can
be used to specify a large range of general DSP algorithms. For example,
a digital waveguide can be implemented for musical instrument modeling
using a pair of **delayr **and **delayw
**opcodes in conjunction with the **filter2** opcode.

__EXAMPLE:__

A first-order linear-phase lowpass linear-phase FIR filter operating on a k-rate signal:

` k1 kfilter2 ksig, 2, 0, 0.5, 0.5
;; k-rate FIR filter`

A controllable second-order IIR filter operating on an a-rate signal:

` a1 zfilter2 asig, kdamp, kfreq, 1, 2,
1, ia1, ia2 ;; controllable a-rate IIR filter`

M.I.T.

Cambridge, Mass.

1997