lpf18 — A 3-pole sweepable resonant lowpass filter.


Implementation of a 3 pole sweepable resonant lowpass filter.


ares lpf18 asig, xfco, xres, xdist [, iskip]


iskip (optional, default=0) -- Skip initialization if present and non-zero.


xfco -- the filter cutoff frequency in Hz. Should be in the range 0 to sr/2.

xres -- the amount of resonance. Self-oscillation occurs when xres is approximately 1. Should usually be in the range 0 to 1, however, values slightly greater than 1 are possible for more sustained oscillation and an overdrive effect.

xdist -- amount of distortion. kdist = 0 gives a clean output. xdist > 0 adds tanh() distortion controlled by the filter parameters, in such a way that both low cutoff and high resonance increase the distortion amount. Some experimentation is encouraged.

lpf18 is a digital emulation of a 3 pole (18 dB/oct.) lowpass filter capable of self-oscillation with a built-in distortion unit. It is really a 3-pole version of moogvcf, retuned, recalibrated and with some performance improvements. The tuning and feedback tables use no more than 6 adds and 6 multiplies per control rate. The distortion unit, itself, is based on a modified tanh function driven by the filter controls.

[Note] Note

Before version 6.04 this filter requires that the input signal be normalized to one.


Here is an example of the lpf18 opcode. It uses the file lpf18.csd.

Example 564. Example of the lpf18 opcode.

See the sections Real-time Audio and Command Line Flags for more information on using command line flags.

; Select audio/midi flags here according to platform
; Audio out   Audio in
-odac             ;;;RT audio out
; For Non-realtime ouput leave only the line below:
;-o lpf18.wav -W ;;; for file output any platform

; by Kevin Conder with help from Iain Duncan

sr = 44100
ksmps = 32
nchnls = 2
0dbfs  = 1

instr 1
kamp init 1                         ; Note that its amplitude (kamp) ranges from 0 to 1.
kcps init 440
knh init 3
ifn = 1
asine buzz kamp, kcps, knh, ifn     ; Generate a sine waveform.
kfco line 300, p3, 3000             ; Filter the sine waveform.
kres init 0.8                       ; Vary the cutoff frequency (kfco) from 300 to 3,000 Hz.
kdist = p4
ivol = p5
aout lpf18 asine, kfco, kres, kdist
outs aout * ivol, aout * ivol


f 1 0 16384 10 1    ; sine wave.

; different distortion and volumes to compensate
i 1 0 4     0.2         .8
i 1 4.5 4   0.9         .7

See also

Standard Filters: Resonant Low-pass filters


Author: Josep M Comajuncosas
December 2000

New in Csound version 4.10

Audio rate parameters introduced in version 6.02

October 2013.