tvconv — A time-varying convolution (FIR filter) opcode.
An opcode that takes two incoming signals and interprets one of them as the coefficients of linear time-variable finite impulse response filter. This is implemented via direct convolution (for partition sizes of 1 sample) or DFT-based partitioned convolution. The signals can be 'frozen' (i.e. the filter coefficients are kept the same) at any point in time, at a-rate or k-rate.
iparts -- partition size, for sizes > 1, a DFT-based partitioned convolution process is used. Otherwise a time-domain delay line FIR is implemented. Partition sizes > 1 are rounded to the nearest power-of-two.
ifils -- filter size. For partition sizes > 1, filter sizes are rounded to the nearest power-of-two. With partition size = 1, since direct convolution is used, filters can be of any size.
ares -- audio output.
asig1, asig2 -- audio inputs.
xfreez1 -- freeze switch for asig1. Coefficients are only updated (ie. the signal is passing into the convolution) if xfreez1 > 0. This input can take an audio or a k-rate signal, or a constant.
xfreez2 -- freeze switch for asig2, similar to xfreez1 in operation.
Here is an example of the tvconv opcode. It uses the file tvconv.csd.
Example 1150. Example of the tvconv opcode.
See the sections Real-time Audio and Command Line Flags for more information on using command line flags.
<CsoundSynthesizer> <CsOptions> -odac </CsOptions> <CsInstruments> sr = 44100 ksmps = 32 nchnls = 2 0dbfs = 1 instr 1 asig diskin "fox.wav",1,0,1 air diskin "drumsMlp.wav",1,0,1 air buthp air/0dbfs,1000 k1 linseg 0,p3/3,0,0,1,2*p3/3,1 a1 oscili k1, 0.5, 1 a2 oscili k1, 0.6, 1 asig tvconv asig,air,1-a2,1-a1,256,1024 asig clip asig,1,0dbfs outs asig, asig endin </CsInstruments> <CsScore> f1 0 1024 7 0 512 0 1 1 511 1 i1 0 30 e </CsScore> </CsoundSynthesizer>