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 -- 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 946. 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.