QUICK-REF - CsoundManual - Top of this section - Previous - Contents - Index - Next 

filter2, kfilter2, zfilter2

    a1  filter2   asig, iM,iN,ib0,ib1,..., ibM,ia1,ia2,...,iaN
    k1  kfilter2  ksig, iM,iN,ib0,ib1,...,ibM,ia1,ia2,...,iaN
    a1  zfilter2  asig, kdamp,kfreq,iM,iN,ib0,ib1,...,ibM,ia1,ia2,...,iaN



General purpose custom filter with time-varying pole control. The filter coefficients implement the following difference equation:

  (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


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


Michael A. Casey
Cambridge, Mass.

QUICK-REF - CsoundManual - Top of this section - Previous - Contents - Index - Next 
HTML Csound Manual - © Jean Piché & Peter J. Nix, 1994-97