Skip to content

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.

Syntax

fsig trfilter fin, kamnt, ifn

Performance

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.

Examples

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

Example of the trfilter opcode.
<CsoundSynthesizer>
<CsOptions>
; 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
</CsOptions>
<CsInstruments>

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 "drumsMlp.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

endin
</CsInstruments>
<CsScore>
f1 0 8192 10 1

i 1 0 4 1
i 1 5 4 0       ;reduce filter effect
e
</CsScore>
</CsoundSynthesizer>

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

See also

Tools for Real-time Spectral Processing (pvs opcodes)

Credits

Author: Victor Lazzarini;
February 2006

New in Csound 5.01