zdf_2pole — Zero-delay feedback implementation of 2 pole filter.
Zero-delay feedback implementation of a 2 pole (12 dB/oct) filter. Offers low-pass (default), high-pass, and allpass output modes.
istor --initial disposition of internal data space. Since filtering incorporates a feedback loop of previous output, the initial status of the storage space used is significant. A zero value will clear the space; a non-zero value will allow previous information to remain. The default value is 0.
asig -- output signal.
ain -- input signal.
xcf -- filter cutoff frequency (i-, k-, or a-rate).
xQ -- filter Q value (i-, k-, or a-rate). Range 0.5-25.0.
kmode -- filter output type. The default value is 0. The output mode may be one of the following.
0 - low-pass
1 - high-pass
2 - band-pass
3 - unity-gain band-pass
4 - notch
5 - allpass
6 - peak
Here is an example of the zdf_2pole opcode. It uses the file zdf_2pole.csd.
Example 1262. Example of the zdf_2pole opcode.
<CsoundSynthesizer> <CsOptions> -o dac </CsOptions> <CsInstruments> sr = 44100 ksmps = 1 nchnls = 2 0dbfs = 1 instr 1 asig = random:a(-1.0, 1.0) asig = zdf_2pole(asig, line(20, p3, 10000), 4, p4) outc(asig, asig) endin instr 2 asig = vco2(0.5, 220) asig = zdf_2pole(asig, line(20, p3, 10000), 4, p4) outc(asig, asig) endin </CsInstruments> <CsScore> i1 0 4 0 i1 5 4 1 i1 10 4 2 i1 15 4 3 i1 20 4 4 i1 25 4 5 i1 30 4 6 i2 40 4 0 i2 45 4 1 i2 50 4 2 i2 55 4 3 i2 60 4 4 i2 65 4 5 i2 70 4 6 </CsScore> </CsoundSynthesizer>
This filter is based on the work of Will Pirkle that employs Vadim Zavalishin's work with bilinear tranforms to create topology-preserving transform (TPT) implementations of analog filters.
Pirkle, Will. Designing Software Synthesizer Plug-ins in C++: For RackAFX, VST3, and Audio Units. CRC Press, 2014.
Pirkle, Will. AN-4: Virtual Analog (VA) Filter Implementation. 2013.
Zavalishin, Vadim. "The Art of VA filter design." Native Instruments, 2012.