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