(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:
B(Z) b0 + b1*Z + ... + bM*Z
H(Z) = ---- = -------------------------------
A(Z) 1 + a1*Z + ... + aN*Z
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.
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.
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