trfilter

trfilter — Streaming partial track filtering.

Description

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 1106. Example of the trfilter opcode.

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

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

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.

Credits

Author: Victor Lazzarini;
February 2006

New in Csound 5.01