Homework6: Filters
tube-filt.jpg
tube-filt.wav
tube-pluck.jpg
tube-pluck.wav (old files)
tube-filt2.jpg
tube-filt2.wav
tube-pluck2.jpg
tube-pluck2.wav (new files after code revision)
(define echoFilt
(lambda* (secs #&optional (att 1.0)(a0
-0.5)(bz -0.5)(samps 1))
(let ((delEcho
(make-delay (round (* secs (srate)))))
(delFilt (make-delay samps))
(yzEcho 0.0)
(yzFilt 0.0)
(y0Echo 0.0)
(y0Filt 0.0))
(lambda (x0)
(set! yzEcho (tap delEcho))
(set! yzFilt (tap delFilt))
;
(set! y0Echo (+ x0 (* att yzEcho)))
; one by one or
;
(set! y0Filt (- (* a0 y0Echo) (* bz yzFilt)))
;
(set! y0Filt (+ (- (* a0 x0) (* bz yzFilt))
; IIRfilt into IIRecho
;
(* att yzEcho)))
; or
(set! y0Filt (- (* a0 (+ x0 (* att yzEcho)))
; IIRecho into IIRfilt
(* bz yzFilt)))
; (note:
(delay delEcho y0Filt)
; feed y0Filt
in both)
(delay delFilt y0Filt)
y0Filt)
)))
((click .2)
(map-chan (echoFilt .00318 .93)))
; tube with TVLPF
; orig att 0.813
((click 2)
(map-chan (echoFilt .00318 0.93 -0.5 -0.534)))
; tube like a string