Low-Pass Filtering of an Echo Tone

 

tube characteristic plucked string
(define echofilter ; IIR version, aka feed-back or recursive delay
(lambda* (secs bz #&optional (att 1.0) samps)
(let ((del (make-delay (round (* secs (srate)))))
(del0 (make-delay samps))
(yz 0.0)
(yz0 0.0)
(fy0 0.0) ;fy0 is output from delay process, gets fed in as input for low-pass filter
(a0 0.5)
(y0 0.0))
(lambda (x0)
(set! yz (tap del)) ; where it comes back from delayline
(set! yz0 (tap del0)
(set! fy0 (+ x0 (* att yz)))
(set! y0 (- (* a0 fy0) (* bz yz0))) ; add low-pass filtering here, taking fy0 as input
(delay del y0)
(delay del0 y0)
y0)
)))

(map-chan (echofilter .01 -0.5 .5 1)) ; smaller attenuation gets shorter echo series, by damping it faster

(map-chan (echofilter .01 -0.5 .95 1)) ; smaller attenuation gets shorter echo series, by damping it faster

echofilterpipe.wav echofilterstring.wav