Homework #6
PVC Tube Synthesis Through a Low-pass Echo-Filter
 

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
 

.Wav Files

Tube_Filt.wav
String_Filt.wav
 

Sonograms

Tube_Filt.jpg
String_Filt.jpg