trfilter — Streaming partial track filtering.


The trfilter opcode takes an input containg a TRACKS pv streaming signal (as generated, for instance by partials) and filters it using an amplitude response curve stored in a function table. The function table can have any size (no restriction to powers-of-two). The table lookup is done by linear-interpolation. It is possible to create time-varying filter curves by updating the amlitude response table with a table-writing opcode.


fsig trfilter fin, kamnt, ifn


fsig -- output pv stream in TRACKS format

fin -- input pv stream in TRACKS format

kamnt -- amount of filtering (0-1)

ifn -- function table number. This will contain an amplitude response curve, from 0 Hz to the Nyquist (table indexes 0 to N). Any size is allowed. Larger tables will provide a smoother amplitude response curve. Table reading uses linear interpolation.


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

Example 1020. Example of the trfilter 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
-odac     ;;;realtime audio out
;-iadc    ;;;uncomment -iadc if realtime audio input is needed too
; For Non-realtime ouput leave only the line below:
; -o trfilter.wav -W ;;; for file output any platform

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

gifn ftgen 2, 0, -22050, 5, 1, 1000, 1, 4000, 0.000001, 17050, 0.000001 ; low-pass filter curve of 22050 points	

instr 1

kam  line 1, p3, p4
ain  diskin2 "beats.wav", 1, 0, 1
fs1,fsi2 pvsifd	ain, 2048, 512, 1		; ifd analysis
fst  partials fs1, fsi2, .003, 1, 3, 500	; partial tracking
fscl trfilter fst, kam, gifn			; filtering using function table 2
aout tradsyn fscl, 1, 1, 500, 1			; resynthesis 
     outs aout, aout

f1 0 8192 10 1

i 1 0 4 1
i 1 5 4 0	;reduce filter effect

The example above shows partial tracking of an ifd-analysis signal and linear additive resynthesis with low-pass filtering.


Author: Victor Lazzarini;
February 2006

New in Csound 5.01