csound-expression-typed-0.1.0.0: data/opcodes/zero-delay-convolution.udo
; Here’s a UDO for zero-latency partitioned convolution
;/**************************************************
;asig ZConv ain,ipart,irat,inp,ifn
;ain - input signal
;ipart - first partition size in samples
;irat - partition growth ratio
;inp - total number of partition sizes
;ifn - function table number containing the IR
;**************************************************/
opcode ZConv,a,aiiiio
asig,iprt,irat,inp,ifn,icnt xin
if icnt < inp-1 then
acn ZConv asig,iprt,irat,inp,ifn,icnt+1
endif
if icnt == 0 then
a1 dconv asig,iprt,ifn
elseif icnt < inp-1 then
ipt = iprt*irat^(icnt-1)
isiz = ipt*(irat-1)
print ipt
print isiz
a1 ftconv asig,ifn,ipt,ipt,isiz
else
ipt = iprt*irat^(icnt-1)
a1 ftconv asig,ifn,ipt,ipt
endif
xout a1 + acn
endop
; a1 ZConv asig,64,4,6,1