Está en la página 1de 8

Msica por computadora

Ernesto Romero y Hernani Villaseor


Centro Multimedia 2012
Sesin 16
Sntesis Granular
La sntesis granular fue explorada de manera conceptual y aplicada en instrumentos y msica
electr!nica a finales de los aos "0 por #annis $ena%is e implementada posteriormente en la
computaci!n por Road Curtis y &arry 'ruax en los aos (0 )Collins* "+2,+
La sntesis granular parte del presupuesto -ue fragmentos microsc!picos de sonido al ser
escuc.ados /untos son perci0idos como un sonido continuo )Valle* 21"22003,+
Cuando com0inamos muc.os sonidos microsc!picos para formar grandes nu0es sonoras*
podemos o0tener paisa/es sonoros macrosc!picos )Collins* "+2,+
La duraci!n de estos granos de sonido puede 4ariar entre 1 y 100 ms* cada grano tiene un
en4ol4ente de amplitud definido lo -ue influye en el resultado sonoro+
En la sntesis granular podemos tra0a/ar a partir de ondas sinoidales con un en4ol4ente muy
corto o pe-ueas muestras de sonido+
Esta sntesis se 0asa en seal impulsi4a* los granos pueden ser controlados so0re el tiempo
para o0tener masas sonoras* por e/emplo al alterar su densidad+
Cada grano tiene diferentes par5metros2 afinaci!n* duraci!n del en4ol4ente o 4entana* posici!n
en el campo est6reo o paneo+
La nu0e sonora cuyos par5metros afectan glo0almente al sonido son2 rango de frecuencias de
los granos* densidad o cantidad de granos+
Materiales con los que podemos trabajar:
SinOsc.ar // con envolventes micro
FSinOsc.ar // con envolventes micro
PlayBuf.ar // Muestras de Sonido
1
Objetos para sntesis granular:
GrainBuf
7rain&uf+ar)numCanales* disparo* dur* snd0uf* 4elocidad* pos* interpolaci!n* pan* en40ufnum*
max7ranos,
Es sntesis granular a partir de un sonido guardado en un 0uffer+
8ecesitamos leer un sonido desde un 0uffer para lo -ue utili9amos &uff+read y lo igualamos a
una 4aria0le+
b = Buffer.read(s, sounds/a11l!"1.av#$
(
Synt%&ef('(rainBuf,)*sndbuf,envbuf ,+ate=1*
var sen, env, ,an-
sen=(rainBuf.ar(1,
.m,ulse.ar(1"$,".1,sndbuf,/F0oise1.!r.ran+e(1,1$,/F0oise1.!r.ran
+e(",1$,1,",envbuf$23-
env=4nv(en.!r(4nv.asr(1,1$,+ate,done5ction61$-
Out.ar(",sen2env$
7$.send(s$
$
a=Synt%('(rainBuf$
Grains
'7rains+ar )numCanales* disparo* 0ufnum* 4elocidad* posCentral* dur* pan* amp* interpolaci!n,
Es un granulador de &uffer por lo -ue necesitamos crear un &uffer+alloc en el cual alo/aremos
sonido+ Entonces el &uffer lo diseamos para poder alo/ar sonido en segundos+ :i sa0emos
-ue un segundo de audio en formato digital contiene 11100 muestras* ese nmero lo
multiplicamos por la cantidad de segundos -ue -ueramos nuestro &uffer+
;/ buffer con dos se+undos de duraci8n en mono
b = Buffer.alloc(s, 331"" 2 1, 1$
// lue+o %acemos un buffer ,ara +rabar sonido
2
(
Synt%&ef('+rabar,)*sen="*
var entrada-
entrada=Sound.n.ar(sen$-
9ecordBuf.ar(entrada, b.bufnum$-
7$.send(s$
$
: = Synt%('+rabar$
:.free // al declarar esta linea se ;ueda un sonido en el buffer
// re,roducimoslo +rabado
(
Synt%&ef('re,roducir,)*salida="*
var senal-
senal=PlayBuf.ar(1,b.bufnum,1$-
Out.ar(salida,senal<1$
7$.send(s$
$
y=Synt%('re,roducir$
// +ranulamos el buffer con =(rains, usamos Buf&ur ,ara saber la
duraci8n del buffer
(
Synt%&ef('=+rains,)*salida=", buffer="*
var senal-
senal==(rains.ar(1,.m,ulse.ar(1>$,b.bufnum,1,Mouse?.!r(",Bu
f&ur.!r(b.bufnum$$,".1,",1,1$-
Out.ar(",senal<1$
7$.send(s$
$
=Synt%('=+rains$
!arp1
<arp1+ar )numC.annels* 0ufnum* pointer* fre-:cale* =indo=:i9e* en40ufnum* o4erlaps*
=indo=RandRatio* interp* mul* add,
>
Este ?7en estira y comprime un 0uffer+ &asado en un o0/eto de Csound .ec.o por Ric.ard
@rpens+
'am0i6n existen esto o0/etos 7rain#n* 7rain:in y 7rainAM
M"todo manual
Bara .acer una sintesis granular con completo dominio de cada parametro se puede usar el
siguiente algoritmo -ue consiste en tres partes2
aC ?n :ynt.Def -ue genere los granos
0C ?n 'def -ue acti4e la granulacion
cC ?n grupo de 'def -ue cam0ien los parametros en el tiempo
a# a# $n S%nt&'ef que genere los granos
s+0oot

Brimero cargamos en un 0uffer la muestra de audio -ue -ueramos granular
gE&uffer+read)s*F;.ome;.arpo;s.are;:uperCollider;sounds;soundsGC:ystem;feed0ac%+=a4F,
g+play
Este es el :ynt.Def para los granos+ :e crea con un BLay&uf y se crean argumentos para cada
parametro de modo -ue podamos cam0iar sus 4alores desde afuera+ La en4ol4ente de0e ser
pe-uea para cada grano+
)
:ynt.Def)Hgranulador* IJ0ufE0*rateE1*posE0* ampE1* attE1*durE0+01*relE1*panE0J
4ar sig* en4K
sigEBlay&uf+ar)1*0uf*rate*1*pos,LampK
en4EEn47en+%r)En4)M0*1*1*0N*MdurLatt*dur L )1 C )attOrel,,*durLrelN,*donePction22,K
Qut+ar)0*Ban2+ar)sig*pan,Len4,K
R,+send)s,K
,K
b# $n def que acti(e la granulacion
Creamos 4aria0les glo0ales para cada parametro de nuestra granulacion
)
SrateEI1RK
1
SposEI0RK
SampEI1RK
SattEI1;2RK
SdurEI0+01RK
SrelEI1;2RK
SpanEI0RK
SdensEI0+01RK
,K
Creamos un 'def -ue en4ie estos 4alores a los argumentos del :ynt.Def+ ?samos la 4aria0le
Sdens para el =ait+ 8otar -ue el =ait y la duracion del grano pueden ser diferentes* de/ando asi
espacios entre los granos o 0ien superponiendolos+ De esta forma podemos crear densidades
diferentes independientes del tamao del grano+
)
'def)Hgranulador* I
inf+doI
:ynt.)Hgranulador* MH0uf* g+0ufnum*
Hrate* Srate+4alue*
Hpos* Spos+4alue*
Hamp* Samp+4alue*
Hatt* Satt+4alue*
Hdur* Sdur+4alue*
Hrel* Srel+4alue*
Hpan* Span+4alueN,K
Sdens+4alue+=aitK
R
R,+-uantT)0,K
,K


'def)Hgranulador,+play
'def)Hgranulador,+stop
Bodemos asignar rangos de aleatoriedad para los parametros
)
SrateEIrrand)0+U*1+1,RK
SposEI11100Lrrand)0+U*1+1,RK
SattEIrrand)1;2*1;100,RK
SampEIrrand)1*0+1,RK
SdurEIrrand)0+001*0+1,RK
"
SrelEIrrand)1;2*1;100,RRK
SpanEIrrand)C0+"*0+",RK
SdensEIrrand)0+1*0+001,RRK
,K
c# $n grupo de def que cambien los parametros en el tiempo
;;;;;;;;;;;;; RP'E
P-ui se declara el 'def -ue mue4e los minimos y maximos del rango aleatorio del parametro de
rate+ 'am0ien indicamos una cantidad de tiempo -ue -ueremos -ue se tarde el 'def en .acer el
recorrido+
)
Srate:up#niE1K
Srate#nf#niE1K
SrateEIrrand)Srate:up#ni*Srate#nf#ni,RK
Srate:upAinE2K
Srate#nfAinE0+"K
Srate'iempoE"K
'def)Hrate* I4ar min* sup* paso#nf* paso:upK
minESrate#nf#niK
supESrate:up#niK
paso#nfE)Srate#nfAin C Srate#nf#ni,;100K
paso:upE)Srate:upAin C Srate:up#ni,;100K
100+doI
minEminOpaso#nfK
supEsupOpaso:upK
Mmin*supN+postlnK
SrateEIrrand)min*sup,RK
)Srate'iempo;100,+=aitK
R
R,+-uantT)0,K
,
'def)Hrate,+play
'def)Hrate,+stop
V
P-ui podemos indicar los nue4os minimos y maximos a los -ue -ueremos ir y el tiempo -ue se
tomara en .acerlo
)
Srate#nf#niESrate#nfAinK
Srate:up#niESrate:upAinK
Srate#nfAinE0+1K
Srate:upAinE0+3K
Srate'iempoE10K
'def)Hrate,+play
,
Lo mismo pero para el parametro de la posici!n
;;;;;;;;;;;;; BQ:
)
Spos:up#niE11100K
Spos#nf#niE11100K
SposEIrrand)Spos:up#ni*Spos#nf#ni,RK
Spos:upAinE11100L1+1K
Spos#nfAinE11100L0+3K
Spos'iempoE"K
'def)Hpos* I4ar min* sup* paso#nf* paso:upK
minESpos#nf#niK
supESpos:up#niK
paso#nfE)Spos#nfAin C Spos#nf#ni,;100K
paso:upE)Spos:upAin C Spos:up#ni,;100K
100+doI
minEminOpaso#nfK
supEsupOpaso:upK
Mmin*supN+postlnK
SposEIrrand)min*sup,RK
)Spos'iempo;100,+=aitK
(
R
R,+-uantT)0,K
,
'def)Hpos,+play
'def)Hpos,+stop
)
Spos#nf#niESpos#nfAinK
Spos:up#niESpos:upAinK
Spos#nfAinE11100L0+"K
Spos:upAinE11100L0+(VK
Spos'iempoE1K
'def)Hpos,+play
,
Biblografa
Collins* 8+ )s;a,+ :CCourse+ Recuperado de2
.ttp 2;; === + sussex + ac + u% ; ?sers ; nc 31; courses ; cm 1; =or%s.op + .tml
Valle* P+ )2003,+ The SuperCollider Italian Manual at CIRMA. 'orino2 C#RMP+
#xi Pudio )2003,+ SuperCollider Basics. Recuperado de2
=== + ixi C audio + net
Esta o0ra est5 su/eta a la licencia Pttri0utionC8onCommercialC:.arePli%e >+0 ?nported de
Creati4e Commons+ Bara 4er una copia de esta licencia* 4isite
.ttp2;;creati4ecommons+org;licenses;0yCncCsa;>+0; o en4ie una carta a Creati4e Commons* 111
Castro :treet* :uite U00* Mountain Vie=* California* U1011* ?:P+3
3

También podría gustarte