Homework 6
Code Snippet
(click 1.0)
(define echo ; IIR version, aka feed-back or recursive delay
(lambda* (secs filt-samps bz #&optional (att 1.0))
(let ((edel (make-delay (round (* secs (srate)))))
(fdel (make-delay filt-samps))
(ye 0.0)
(yf 0.0)
(y0 0.0)
(y1 0.0)
(a0 0.5))
(lambda (x0)
(set! ye (tap edel))
(set! yf (tap fdel))
(set! y0 (+ x0 (* att ye)))
(delay edel y1)
(set! y1 (- (* a0 y0) (* bz yf)))
(delay fdel y1) ; feed into delayline
y1)
)))
(map-chan (echo .0035 1 -0.5 .99)) ; string-like
(map-chan (echo .0035 1 -0.5 .9)) ; tube-like
Tube-like sound
Tube-like sonogram
String-like sound
String-like sonogram