Lecture SlidesModulation Synthesis
Ring Modulation
(definstrument rm (start-time duration carrier-freq modulator-freq amplitude &key (amp-env '(0 0 0.5 1 1 0))) (let* ((beg (floor (* start-time *srate*))) (end (+ beg (floor (* duration *srate*)))) (carrier (make-oscil :frequency carrier-freq)) (modulator (make-oscil :frequency modulator-freq)) (envelope (make-env :envelope amp-env :scaler amplitude :duration duration))) (run (loop for i from beg to end do (outa i (* (env envelope) (* (oscil carrier)(oscil modulator))))))))
(definstrument rmw (start-time duration carrier-freq modulator-freq amplitude &key (carrier-spectr '(1 0.5 2 0.2 5 0.1)) (modulator-spectr '(1 0.5 3 0.2 4 0.1)) (amp-env '(0 0 0.5 1 1 0))) (let* ((beg (floor (* start-time *srate*))) (end (+ beg (floor (* duration *srate*)))) (wave-c (partials->wave carrier-spectr)) (carrier (make-table-lookup :frequency carrier-freq :wave wave-c)) (wave-m (partials->wave modulator-spectr)) (modulator (make-table-lookup :frequency modulator-freq :wave wave-m)) (envelope (make-env :envelope amp-env :scaler amplitude :duration duration))) (run (loop for i from beg to end do (outa i (* (env envelope) (* (table-lookup carrier)(table-lookup modulator))))))))
Amplitude Modulation
Frequency Modulation
(definstrument fm (start-time duration carrier-freq modulator-freq index amplitude &key (amp-env '(0 0 0.5 1 1 0))) (let* ((beg (floor (* start-time *srate*))) (end (+ beg (floor (* duration *srate*)))) (carrier (make-oscil :frequency carrier-freq)) (modulator (make-oscil :frequency modulator-freq)) (envelope (make-env :envelope amp-env :scaler amplitude :duration duration))) (run (loop for i from beg to end do (outa i (* (env envelope) (oscil carrier (* index (oscil modulator)))))))))) |
©2000/2005 Fernando Lopez-Lezcano. All Rights Reserved. nando@ccrma.stanford.edu
|