(define (ring-mod carrier-pitch modulator-pitch) (let ((carrier-frequency (hertz carrier-pitch)) (modulator-frequency (hertz modulator-pitch))) (list (keynum (+ carrier-frequency modulator-frequency) :hz) (keynum (- carrier-frequency modulator-frequency) :hz)))) (define (ring-mod-list carrier-pitches modulator-pitches) (if (and carrier-pitches modulator-pitches) (cons (ring-mod (car carrier-pitches) (car modulator-pitches)) (ring-mod-list (cdr carrier-pitches) (cdr modulator-pitches))))) (define (make-glissando start-frequency end-frequency steps) (cond ((<= steps 0) nil) ((= steps 1) (list (keynum end-frequency :hz))) (t (cons (keynum start-frequency :hz) (make-glissando (+ start-frequency (/ (- end-frequency start-frequency) (- steps 1))) end-frequency (- steps 1)))))) (ring-mod-list (make-glissando 440 880 13) (make-glissando 330 220 13))