; /usr/bin/clisp-cm-clm-cmn ; (compile-file "dyn" :verbose nil) ; (load *) (definstrument partial (start dur frequency freqskew amplitude freq-envelope amp-envelope) (let* ((gls-env (make-env :envelope freq-envelope :scaler (hz->radians freqskew) :duration dur)) (os (make-oscil :frequency frequency)) (amp-env (make-env :envelope amp-envelope :scaler amplitude :duration dur)) (len (inexact->exact (round (* *srate* dur)))) (beg (inexact->exact (round (* *srate* start)))) (end (+ beg len))) (run (loop for i from beg to end do (outa i (* (env amp-env) (oscil os (env gls-env))) ))))) (defun simple_sinusoid (scr stf beg dur freq skew amp) (let ((freq_envelope '(.00 1.00 0.25 1.0 0.75 0.0 1.0 0.0)) (amp_envelope '(.00 .00 .25 0.50 .75 1.00 1.00 .0))) (partial beg dur freq skew amp freq_envelope amp_envelope) (cmn::add-note-to-staff scr stf (* 4 beg) (* 4 dur) freq) )) (defun make-score () (let* ( (n 30) (scr (cmn::init-clm-input)) (stf (cmn::add-staff scr "xxx" nil)) (x 0.0) (y 0.1) ) (with-sound (:srate 48000 :output "/zap/test.wav") (loop for i from 0 below n do (setf x (+ 0.92 (* 0.9 x) (* -2.0 (* x x)))) (setf y (+ 0.95 (* 0.9 y) (* -2.0 (* y y)))) (simple_sinusoid scr stf (* i 0.25) 0.25 (+ (* x 440.0) 440.0) (+ (* y 440.0) 440.0) 0.5) )) (cmn::finish-clm-input scr nil nil) ))