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