Con respecto a sampling (3.4.2.2) aprendió como cambiar la velocidad de reproducción de un sonido existente en un array, pero esto resulto también en un cambio de altura. Una forma de desacoplar estos parámetros es usar síntesis granular. La idea de síntesis granular es que un sonido es sampleado a velocidad original pero es reproducido a diferente velocidad desde cada punto de sample.
Ud. tiene un `indicador` que se mueve por el array a velocidad normal:
patches/3-7-1-1-granular-theory1.pd
Solo en determinados intervalos tenemos información sobre la posición presente del `indicador`; cuando esta información es recibida, el array se reproduce desde ese punto, por ende a diferente velocidad.
Para entender mejor esto, digamos que esta es la velocidad normal de reproducción :
... y esta es una velocidad `mas rápida`:
... entonces la síntesis granular hace esto:
Aunque la reproducción sea `mas rápida` (o `mas lenta`), siempre comienza en un punto que corresponde a la velocidad inicial. Estos bloques se denominan “grains”; su tamaño es referido como “grain size” o “window size”. Estos “grains” son tan pequeños y usados en tan grandes cantidades, que no se escuchan individualmente, sino como un todo continuo. Esa es la magia detrás de la “granular synthesis”.
Cada “grain” individual se reproduce así:
Luego de reproducir cada “grain”, hay un salto a la próxima posición; esta posición se toma de la actual posición del `indicador principal`. Hay un objeto especial para lograr esto: “samphold~”. Funciona como “spigot”, pero en el signal level. Ambos inlets reciben signal. Cuando hay un descenso en el inlet derecho, “samphold~” envia inmediatamente el sample del inlet izquierdo y repite este hasta que el valor en el inlet derecho sea menor que el que lo precede. Esto es de alguna manera extraño pero tiene sentido si por su inlet derecho recibe un “phasor~”. Solo recibe una vez – justo al final de un periodo – un valor descendiente. Un “grain” puede ser leído de esta forma y el offset puede ser sumado a su termino:
patches/3-7-1-1-granular-theory2.pd
De este modo, todo suena a mayor altura pero con la misma duración que el original. Si lo “mira” mas de cerca queda claro que esto puede llegar a complicaciones. Si la reproducción desde un sample hacia el próximo es mas veloz que la velocidad del indicador (que se desplaza a velocidad original), entonces re dispararemos un sample (nt: aquí se refiere a un segmento de audio, mas precisamente el final de cada “grain”) volveremos a el cuando se dispare el “samphold~”. Contrariamente si los “grains” son reproducidos mas lento que el indicador, algunas partes serán omitidas. Pero mientras las velocidades de reproducción y la original no difieran mucho, esto no es (terriblemente) notorio. Para mejorar esto, primero usaremos un Hanning window para suprimir los clicks que resultan de cada salto hacia un nuevo valor (nt: salto entre cada “grain”):
patches/3-7-1-1-granular-theory3.pd
Los entre cortes resultantes se pueden llenar usano un segundo lector de “grain”, desplazado en medio periodo.
patches/3-7-1-1-granular-theory4.pd
Lo bueno de la síntesis granular es que, ademas de poder cambiar la altura sin afectar la velocidad, se puede cambiar la velocidad sin afectar la altura:
patches/3-7-1-1-granular-theory5.pd
La síntesis granular también puede usarse como sintetizador para nubes de tonos, mas convenientemente usando un generador aleatorio:
patches/3-7-3-1-granularsynthesizer.pd