Next: Comandos de llamada y Up: Instrumento de Sintesis FM Previous: Instrumento de Sintesis FM


Código en Scheme para el Instrumento Basico,


 		 
(define fm
  (lambda* 
   (comienzo duracion frecuencia 
             amplitud #:key
             (envolvente-amplitud '(0 0 25 1 75 1 100 0))
             ;; radio c:m 
             (radio-portadora 1) (radio-moduladora 1)
             ;; Indice de modulacion
             (indice 1) 
             (envolvente-indice '(0 1 100 1)))
   ;;
   (let* ((inicio (floor (* comienzo (srate))))
          (final (floor (* duracion (srate))))
          ;;
          (onda-portadora 
           (make-oscil 
            :frequency  frecuencia))
          (onda-moduladora 
           (make-oscil 
            :frequency 
            (* frecuencia 
               (/ radio-moduladora radio-portadora))))
          ;;
          (funcion-amplitud 
           (make-env 
            :envelope envolvente-amplitud :scaler amplitud 
            :start inicio :end final))
          (funcion-indice 
           (make-env 
            :envelope envolvente-indice 
            :scaler (in-hz 
            (* frecuencia radio-moduladora indice)) 
            :start inicio :end final))  
          ;;
          (salida (make-vct final)))
     ;;
     (vct-map! salida 
               (lambda () 
                 (* (env funcion-amplitud) 
                    (oscil onda-portadora 
                           (* (env funcion-indice) 
                              (oscil onda-moduladora))))
                 ))
     ;;
     (vct->samples inicio final salida)) ))


Subsecciones

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