Scheme Code for a one-pole filter:
(define echo-filt
(lambda* (secs samps #&optional (att 1.0)
bz)
(let ((del1 (make-delay (round (*
secs (srate)))))
(del2 (make-delay samps))
(ya 0.0)
(yz 0.0)
(y0 0.0)
(y1 0.0)
(a0 0.5))
(lambda (x0)
(set! ya (tap del1))
(set! yz (tap del2))
(set! y0 (+ x0 (* att ya)))
(delay del1 y1)
(set! y1 (- (* a0 y0) (* bz yz)))
(delay del2 y1)
y1)
)))
(click 0.5)
(map-chan (echo-filt .002 1 .7 -0.5 ))
;tube (perodicity = .002 secs, att = .7)
(click 2.0)
(map-chan (echo-filt .002 1 .999 -0.5))
;plucked string-like decay
Sonograms