ar dconv asig, isize, ifn
Output is the result of two signals directly convolved together, not the spectral based method of the convolve opcode.
isize – the size of the convolution buffer to use. If the buffer size is smaller than the size of ifn, then only the first isize values will be used from the table.
ifn – table number of a stored function containing the impulse response for convolution. If the size of ifn is smaller than isize, then isize will be adjusted accordingly.
ar – a-rate signal to be convolved
Rather than the analysis/resynthesis method of the convolve opcode, dconv uses direct convolution to create the result. For small tables it can do this quite efficiently, however larger tables require much more time to run. dconv does isize * ksmps multiplies on every k-cycle. Therefore, reverb and delay effects are best done with other opcodes (unless the times are short).
dconv was designed to be used with time varying tables to facilitate new real-time filtering capabilities.
/* dconvtest.orc */ sr = 44100 kr = 4410 ksmps = 10 nchnls = 1 #define RANDI(A) #kout randi 1, kfq, $A*.001+iseed, 1 tablew kout, $A, itable# instr 1 itable init 1 iseed init .6 isize init ftlen(itable) kfq line 1, p3, 10 $RANDI(0) $RANDI(1) $RANDI(2) $RANDI(3) $RANDI(4) $RANDI(5) $RANDI(6) $RANDI(7) $RANDI(8) $RANDI(9) $RANDI(10) $RANDI(11) $RANDI(12) $RANDI(13) $RANDI(14) $RANDI(15) asig rand 10000, .5, 1 asig butlp asig, 5000 asig dconv asig, isize, itable out asig *.5 endin /* dconvtest.orc */ /* dconvtest.sco */ f1 0 16 10 1 i1 0 10 e /* dconvtest.sco */
William "Pete" Moss
University of Texas at Austin
Austin, Texas USA
New in Csound 4.12