;;; ;;; A very simple amplitude modulation instrument ;;; (nando, Oct 14 '96) (definstrument am (start-time duration carrier-freq modulator-freq amplitude &key (amp-env '(0 0 0.5 1 1 0))) (multiple-value-bind (beg end) (get-beg-end start-time duration) (let* ((carrier (make-oscil :frequency carrier-freq)) (modulator (make-oscil :frequency modulator-freq)) (envelope (make-env :envelope amp-env :scaler amplitude :start-time start-time :duration duration))) (Run (loop for i from beg to end do (outa i (* (env envelope) (* (oscil carrier)(+ 1.0 (oscil modulator)))))))))) ;;; (with-sound() (loop for time from 0 by 1.1 ;;; for f from 10 by 10 below 150 ;;; with ae = '(0 0 0.1 1 0.9 1 1 0) do ;;; (am time 1.2 440 f 0.1 :amp-env ae)))