arbiquadasig, kb0, kb1, kb2, ka0, ka1, ka2[, iskip] arbiquadaasig, ab0, ab1, ab2, aa0, aa1, aa2[, iskip] arrezzyasig, xfco, xres[, imode] armoogvcfasig, xfco, xres[, iscale]

Implementation of a sweepable general purpose filter and two sweepable, resonant low-pass filters.

*iskip* (optional) – if non-zero, itialization will be skipped. Default value 0. (New in Csound version 3.50)

*imode* (optional) – if zero **rezzy** is low-pass, if nonzero, high-pass. Default value is 0. (New in Csound version 3.50)

*iscale* (optional) – internal scaling factor. Use if *asig* is not in the range +/-1. Input is first divided by *iscale*, then output is mutliplied *iscale*. Default value is 1. (New in Csound version 3.50)

*asig* – input signal

*xfco* – filter cut-off frequency in Hz. As of version 3.50, may i-,k-, or a-rate.

*xres* – amount of resonance. For **rezzy**, values of 1 to 100 are typical. Resonance should be one or greater. For **moogvcf**, self-oscillation occurs when *xres *is approximately one. As of version 3.50, may i-,k-, or a-rate.

**biquad** is a general purpose biquadratic digital filter of the form:

a0*y(n) + a1*y[n-1] + a2*y[n-2] = b0*x[n] + b1*x[n-1] + b2*x[n-2]

This filter has the following frequency response:

B(Z) b0 + b1*Z^{-1}+ b2*ZM-2 H(Z) = ---- = ------------------ A(Z) a0 + a1*Z^{-1}+ a2*Z-2

This type of filter is often encountered in digital signal processing literature. It allows six user-defined k-rate coefficients. **biquada** is identical to **biquad**, with the exception that all its parameters can vary at a-rate. (New in Csound 4.15.)

**rezzy** is a resonant low-pass filter created empirically by Hans Mikelson.

**moogvcf** is a digital emulation of the Moog diode ladder filter configuration. This emulation is based loosely on the paper "Analyzing the Moog VCF with Considerations for Digital Implemnetation" by Stilson and Smith (CCRMA). This version was originally coded in Csound by Josep Comajuncosas. Some modifications and conversion to C were done by Hans Mikelson.

*Note*: This filter requires that the input signal be normalized to one.

;biquadexample kfcon = *3.14159265*kfco/sr kalpha = -2*krez*cos(kfcon)*cos(kfcon)+krez*krez*cos(2*kfcon) kbeta = *krez*sin(2*kfcon)-2*krez*cos(kfcon)*sin(kfcon) kgama = +cos(kfcon) km1 = *kgama+kbeta*sin(kfcon) km2 = *kgama-kbeta*sin(kfcon) kden = (km1*km1+km2*km2) kb0 = .5*(kalpha*kalpha+kbeta*kbeta)/kden kb1 = kb0 kb2 = 0 ka0 = 1 ka1 = -2*krez*cos(kfcon) ka2 = krez*krez aynbiquadaxn, kb0, kb1, kb2, ka0, ka1, ka2outsayn*iamp/2, ayn*iamp/2 ; Sta Dur Amp Pitch Fco Rez i14 8.0 1.0 20000 6.00 1000 .8 i14 + 1.0 20000 6.03 2000 .95 ;rezzyexample kfcoexpseg100+.01*ifco, .2*idur, ifco+100, .5*idur, ifco*.1+100, .3*idur, .001*ifco+100 apulse1buzz1,ifqc, sr/2/ifqc, 1 ; Avoid aliasing asawintegapulse1 axn=asaw-.5 aynrezzyaxn, kfco, krezoutsayn*iamp, ayn*iamp ; Sta Dur Amp Pitch Fco Rez i10 0.0 1.0 20000 6.00 1000 2 i10 + 1.0 20000 6.03 2000 10 ;moogvcfexample apulse1buzz1,ifqc, sr/2/ifqc, 1 ; Avoid aliasing asawintegapulse1 ax = asaw-.5 aynmoogvcfax, kfco, krezoutsayn*iamp, ayn*iamp ; Sta Dur Amp Pitch Fco Rez i11 4.0 1.0 20000 6.00 1000 .4 i11 + 1.0 20000 6.03 2000 .7

Hans Mikelson

October 1998

New in Csound version 3.49