;;; -*- syntax: common-lisp; base: 10; mode: lisp -*- (definstrument bird (startime dur frequency freq-skew amplitude freq-envelope amp-envelope &optional (lpfilt 1.0) (degree 0) (reverb-amount 0)) (multiple-value-bind (beg end) (times->samples startime dur) (let* ((amp-env (make-env amp-envelope amplitude dur)) (gls-env (make-env freq-envelope (hz->radians freq-skew) dur)) (loc (make-locsig :degree degree :distance 1.0 :reverb reverb-amount)) (fil (make-one-pole lpfilt (- 1.0 lpfilt))) (s (make-oscil :frequency frequency))) (run (loop for i from beg to end do (locsig loc i (one-pole fil (* (env amp-env) (oscil s (env gls-env))))))))))