;;; Synthesis of a musical tone. ;;; ;;; Creates the following files: ;;; ;;; sine1.data ;;; sine2.data ;;; sine3.data (load "/course/cs5500f14/Examples/FFT/modulate.sch") (define sine1 (make-sine-wave 128 0.5)) (define sine2 (make-sine-wave 64 0.125)) (define sine3 (make-sine-wave 32 0.25)) (define bytes/sample 2) (define nchannels 2) (define samples/second 44100) (define bytes/second (* nchannels bytes/sample samples/second)) (define n (* 10 bytes/second)) (define signal1 (make-bytevector n 0)) (modulate! signal1 sine1 0 n) (modulate! signal1 sine1 2 n) (define signal2 (bytevector-copy signal1)) (modulate! signal2 sine2 (+ 0 (* 1 bytes/second)) n) (modulate! signal2 sine2 (+ 2 (* 1 bytes/second)) n) (define signal3 (bytevector-copy signal2)) (modulate! signal3 sine3 (+ 0 (* 2 bytes/second)) n) (modulate! signal3 sine3 (+ 2 (* 2 bytes/second)) n) (define (save-to-file signal filename) (let ((p (open-file-output-port filename))) (put-bytevector p signal) (close-output-port p))) (save-to-file signal1 "sine1.data") (save-to-file signal2 "sine2.data") (save-to-file signal3 "sine3.data") ; sine3