Dani Prieto tenía un ejemplo similar al tuyo aunque el desarrollo
espectral era bastante mas micro-tonal. El ejemplo original estaba en
Csound pero él lo tradujo a Lisp de Audacity. Este ejemplo debería estar
en los archivos de expyeZp pero no lo encuentro y, es uno de los mejores
ejemplos de síntesis aditiva que recuerde, documentado en el libro de
los sonidos de Jean Claude Risset.  Tampoco se que hice el plug-in de
audacity de Dani por si alguien la tiene.

La versión en Scheme es la sigue y esta documentado en [1]. La versión
de Csound creo que esta online. El problema es que en Pd puede ser algo
tedioso por la suma de osciladores en el trayecto de la señal.

[1]
http://www.maginvent.org/articles/psontoot/Arpeggio_s_intesis_aditiva.html


                 

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; 
;;;     Arpeggio a_la_ Risset,
;;;     Ejemplo de síntesis aditiva utilizando
;;;     Waveshape synthesis                                       
;;;
;;;                                       juanig\_at\_ccrma
;;;
;;;                                              (c) 2005

(define arpeggio
  (lambda* (beg dur freq amp
                #:key
                (ampenv '(0 0 0.5 1 1 0))
                (offset 1.0))
      (let* ((start (floor (* beg (srate))))
             (end (+ start (floor (* dur (srate)))))
             (waveshbank (make-vector 12))
             (amp-env (make-env :envelope ampenv 
                                :scaler (* amp .25)
                                :start start  
                                :end end))
             (output (make-vct end)))
        (do ((i 0 (1+ i)))
          ((= i 12))
          (vector-set! waveshbank i (make-waveshape 
                                     :frequency (+ freq (* offset (1+ (* i 
0.1))))
                                     :partials '(1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 
9))
                       ))
        (do ((i 0 (1+ i)))
            ((= i end))
          (let ((wvsum 0.0))
            (do ((j 0 (1+ j)))
                ((= j 12))
              (set! wvsum (+ wvsum (waveshape (vector-ref waveshbank j)))))
            (vct-set! output i (* (env amp-env) wvsum ))))
        (vct->channel output start end ))))





_______________________________________________

Expyezp mailing list
[email protected]
http://lists.slow.tk/listinfo.cgi/expyezp-slow.tk

Archivo de mensajes:
http://lists.slow.tk/pipermail/expyezp-slow.tk/

Responder a