Up: Esquema Sonoro: Una Aproximación Musical a


Apéndice

Los siguientes ejemplos son parte de algoritmos utilizados en la realización de Esquemas de Marimonda. Para generar estos sonidos se utilizó el editor de sonido SND23, que traduce el código de programación en SCHEME a señal de audio. Mayor información y teoría para la aplicación de estos métodos puede encontrarse en la Introducción a plástica sonora24.


 		 
 

              function gain0 = lissajgain(A,omega,delta,B,points,cycles)
              clf;
              twopi=2*pi;
              inc=cycles/(omega*points); 
              theta=0:inc:(cycles/omega); 
              omegatheta=twopi*omega.*theta;
              xt = A*sin(omegatheta + delta);
              yt = B*sin(twopi.*theta);
              gain0 = (yt+1)./2;
              gain1 = (xt+1)./2;
              plot(gain1,gain0,"^1-")
              endfunction


 		 
 

(define* (lissajous beg dur freq amp mc-ratio index #:key
		    (index-env '(0 1.0 80 4.27 100 1.0))
		    (amp-env '(0 0 5 1 90 1 100 0))
		    (omega (/ 3 2))     ;; parameters a/b;
		    (delta (/ pi 2))    ;; phase parameter
		    (points 100) (cycles 1))
  (let* ((start (seconds->samples beg))
         (end (+ start (seconds->samples dur)))
         (cr (make-oscil freq))
         (md (make-oscil (* freq mc-ratio)))
         (fm-index (hz->radians (* index mc-ratio freq)))
         (ampf (make-env amp-env :scaler amp :duration dur)) 
         (indf (make-env index-env :scaler fm-index :base 32
			 :duration (/ dur cycles)))
	 (twopi (* 2 pi))
	 (zeta (make-env :envelope '(0 1  1 points )
		      :duration (/ dur cycles) :scaler 1.0))
	 (amp-env (make-env :envelope '(0 1  1 1 )
			    :duration dur
			    :scaler amp)))	 	 
    (run
     (lambda ()
       (do ((i start (1+ i)))
	   ((= i end))
	(let* ((t (env zeta) )
	       (omegat (* omega t twopi))
	       (xt (sin (+ omegat delta)))
	       (yt (sin (* twopi t)))
	       (m (if (= xt 0) (+ 0.00) (abs (/ yt xt))))
	       (theta (atan m))
	       (deltaq0 (- theta 0.00 )) 
	       (deltaq1 (- theta (/ pi 2) )) 
	       (g0 (if (< (abs deltaq0) (/ pi 2))
		       (* (abs xt) (cos deltaq0))
		       (+ 0.00)))
	       (g1 (if (< (abs deltaq1) (/ pi 2))
		       (* (abs  yt) (cos deltaq1))
		       (+ 0.00)))
	       (fmSignal  (* (env ampf)                  
			      (oscil cr (* (env indf)    
					   (oscil md)))) ) )
	  (outa i  (*  fmSignal g0) *output*)
	  (outb i  (*  fmSignal g1) *output*)
	  (if *reverb* (outa i (* fmSignal g0 rev-amount) *reverb*))
	  (if *reverb* (outb i (* fmSignal g1 rev-amount) *reverb*)) )
	(if (> (mus-location indf) (mus-length indf))
	    (mus-reset indf))
	(if (> (mus-location zeta) (mus-length zeta))
	    (mus-reset zeta)) 	)))))


next up previous
Next: Bibliografía Up: Esquema Sonoro: Una Aproximación Musical a Previous: Conclusiones

© Copyright 2001-2008 CCRMA, Stanford University. All rights reserved.
Created and Mantained by Juan Reyes