;nyquist plug-in ;version 4 ;type process ;preview linear ;name "Filter Sweep..." ;action "Filtering..." ;author "dm" ;control type "Filter Type" choice "Low-Pass,High-Pass,Band-Pass" 0 ;control start-freq "Start Frequency (Hz)" float-text "" 7000 0 20000 ;control end-freq "End Frequency (Hz)" float-text "" 1000 0 20000 ;control shape-num "Curve Parameter" float-text "" 5 nil nil ;control intensity "Intensity" int-text "" 1 1 50 (defun curve (inif finf crv) (if (zerop crv) (pwlv inif 1 finf) (let* ((crv (expt 0.5 crv)) (norm (/ (- inif finf) (- 1.0 crv))) (arc (scale norm (diff (pwev 1 1 crv) crv)))) (sim finf arc)))) (defun iter-lp (signal cutoff iter) (dotimes (n iter signal) (setf signal (lp signal cutoff)))) (defun iter-hp (signal cutoff iter) (dotimes (n iter signal) (setf signal (hp signal cutoff)))) (let* ((cutoff (curve start-freq end-freq shape-num)) (bandwidth (/ *sound-srate* (float intensity) 5.0))) (case type (0 (iter-lp *TRACK* cutoff intensity)) (1 (iter-hp *TRACK* cutoff intensity)) (2 (reson *TRACK* cutoff bandwidth 1))))