HOMEWORK 4


Code for Additive Synthesis:
(define add-sine 
  (lambda* (freq1 freq2	#&optional (amp1 1.0) (amp2 1.0) (phase1 0.0) (phase2 0.0) )
	   (let ((phase-inc1 (hz->radians freq1)) 
		 (phase-inc2 (hz->radians freq2))
		 (y0 0.0) (y1 0.0) (y2 0.0))         
	     (lambda (x0)
	       (set! phase1 (+ phase1 phase-inc1))
	       (set! phase2 (+ phase2 phase-inc2))
	       (set! y1 (+ x0 (* (sin phase1) amp1)))
	       (set! y2 (+ x0 (* (sin phase2) amp2)))
	       (set! y0 (+ y1 y2))
	       y0)
	     )))
Code for Amplitude Modulation:
(define am-sine 
  (lambda* (freq1 freq2	#&optional (amp1 1.0) (amp2 1.0) (phase1 0.0) (phase2 0.0) )
	   (let ((phase-inc1 (hz->radians freq1))
		 (phase-inc2 (hz->radians freq2))
		 (y0 0.0) (y1 0.0) (y2 0.0))
	     (lambda (x0)
	       (set! phase1 (+ phase1 phase-inc1))
	       (set! phase2 (+ phase2 phase-inc2))
	       (set! y1 (+ x0 (* (sin phase1) amp1)))
	       (set! y2 (+ x0 (* (sin phase2) amp2)))
	       (set! y0 (* y1 y2))
	       y0)
	     )))
Code for Frequency Modulation:
(define fm-sine
  (lambda* (freq1 freq2	#&optional (amp1 1.0) (amp2 1.0) (phase1 0.0) (phase2 0.0) )
	   (let ((phase-inc1 (hz->radians freq1))
		 (phase-inc2 (hz->radians freq2))
		 (y0 0.0) (y1 0.0) (y2 0.0))
	     (lambda (x0) 
	       (set! phase1 (+ phase1 phase-inc1))
	       (set! phase2 (+ phase2 phase-inc2))
	       (set! y2 (+ x0 (* (sin phase2) amp2)))
	       (set! y0 (+ x0 (* (sin (+ phase1 y2)) amp1)))
	       y0)
	     )))
sine wave with beating fused, complex timbre multi-pitch timbre
Y0 = sine(F1) + sine(F2) sound
wav image
fres-image
sound
image
fres-image
sound
image
fres-image
Y0 = sine(F1) * sine(F2) sound
image
fres-image
sound
image
fres-image
sound
image
fres-image
Y0 = sine(F1  + sine(F2)) sound
image
fres-image
sound
image
fres-image
sound
image
fres-image