packages feed

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