Centro Multimedia 2012 Sesin 19 Secuenciadores Un secuenciador es un dispositivo en el que acomodamos eventos sonoros en dos ejes: altura y tiempo El secuenciador viene de la tecnolo!"a de los primero sinteti#adores$ y toma como modelo la estructura musical$ entonces la altura est% &asada en tonos y el tiempo en ritmo musical 'ri!inalmente los secuenciadores (unciona&an a partir de pasos$ o sea escaos donde acomodar en evento$ la distancia entre cada escao era sim)trica de tal (orma que con 1* pasos se (orma&a un comp%s de + cuartos su&dividido en + dieciseisavos pr cuarto$ o sea 1* pasos ,osteriormente con el protocolo M-.-$ esta resoluci/n de 1* pasos se 0i#o m%s compleja$ y la posi&ilidad de acomodar alturas qued/ determinada por los 1 &its del protocolo$ lo que di/ 121 lu!ares para acomodar notas$ m%s de las que tiene un piano convencional$ as" las notas se asi!naron a un n2mero del 0 al 123 donde *0 es el do central y cada n2mero 0acia arri&a o 0acia a&ajo representa un semitono s&oot 4 5ynt0.e(46!ac0o$ 78(req9100$ dur902:$ amp90:$ add91$ (m;req90$ d90$ out9*0$ pan908 var si!$ env<
si!9Mi=4R>,;ar45a?ar4(req@A1$100:B@>;Coise1Dr4A001$0011B$001$1E@5in'scDr4(m;req$0$d$a ddE$ampE$>;Coise2Dr4001F$:000$12000E$001EE< si!9>,;ar4si!$1200$amp@2EG5in'scar4(req@A1$1*B$0$amp@A03:$002:BE< env9EnvHenDr4Envperc4002$durE$doneIction:2E< 'utar4out$,an2ar4si!$ panE@envE< JEsend4sE< E< 1 K@ 5ynt046!ac0o$ A6dur$ 10BE @K 4 5ynt0.e(46!ac0oRev$ 78mi=90:$ room903$ !ate918 var si!$ env< si!9;reeVer&ar4-nar4*0$2E$mi=$roomE< env9EnvHenDr4Envasr4001$1$+E$!ate$doneIction:2E< 'utar40$si!@envE< JEsend4sE< E< K@ L!ac0oRev95ynt046!ac0oRev$ A6mi=$ 0111:$ 6room$ 01*:+1MB$ addIction: 6addI(terE L!ac0oRevset46mi=$ 0111:$ 6room$ 01*:+1ME @K Lnotas9A0$2$F$2$:$F$3$12$3$F$:$:$F$2B Lritmo9A0$2$:$3$1B 5e puede 0acer un secuenciador tam&i)n con el m)todo s?itc0 dentro de un Nde( Usamos el ar!umento i del in(do para crear un contador y lo limitamos a 1 pasos con el modulo O1 Esco!emos despues en que numero de la cuenta 0a&r% un evento y lo encerremos en una (unci/n 4 Nde(46sec5?itc0$ 7 in(do78i8 s?itc04ias-nte!erO1$ 0$ 75ynt046!ac0o$ A6dur$ 01$ 6(req$ 1BEJ$ 2$ 75ynt046!ac0o$ A6dur$ 01$ 6(req$ ::BEJ$ F$ 75ynt046!ac0o$ A6dur$ 01BEJ$ :$ 75ynt046!ac0o$ A6dur$ 01$ 6(req$ 100@ P:midiratioBEJ E< 02?ait< J JEquantQ40E E 4 Nde(46sec5?itc0Eplay< Nde(46sec5?itc0Estop E 2 ,odemos meter varios s?itc0 dentro del mismo Nde( usando di(erentes m/dulos 4 Nde(46sec5?itc0$ 7 in(do78i8 s?itc04ias-nte!erO1$ 0$ 75ynt046!ac0o$ A6dur$ 01$ 6(req$ 1BEJ$ 2$ 75ynt046!ac0o$ A6dur$ 01$ 6(req$ ::BEJ$ F$ 75ynt046!ac0o$ A6dur$ 01BEJ$ :$ 75ynt046!ac0o$ A6dur$ 01$ 6(req$ 100@ P:midiratioBEJ E<
02?ait< J JEquantQ40E E 4 Nde(46sec5?itc0Eplay< Nde(46sec5?itc0Estop E 'tra t)cnica$ mas poderosa es 0acer arrays con valores espec"(icos para cada evento En el si!uiente ejemplo tenemos un array cuyos elementos son arrays con pares de valores para altura y duraci/n Lsec9AA0$1K1*B$A0$1K1*B$A0$1K1*B$A0$1K1*B$ A12$1K+B$A0$1K1B$A0$1K1B$ A12$1K+BB< L(und9*0midicps< 4 Nde(46secuenciador$ 7var altura$ dur< in(do78i8 altura9LsecAiOLsecsi#eBA0Bmidiratio< dur9LsecAiOLsecsi#eBA1B@2<
dur?ait< J JEquantQ40E< E< K@ Nde(46secuenciador2Eplay< Nde(46secuenciador2Estop< @K K@ 4 Nde(46secuenciadorEplay< Nde(46secuenciador2Eplay< E 4 Nde(46secuenciadorEstop< Nde(46secuenciador2Estop< E @K 5e pueden a!re!ar tam&i)n valores especiales para eventos en particular El si!uiente array incluye el strin! R(R en al!unos de sus elementos El Nde( usa una condicionante i( para detectar si e=iste una modulaci/n Lsec9AAP10$1K1*B$A0$1K1*B$APM$1K1*B$A0$1K1*B$ A12$1K+$ R(RB$A1$1K1B$A0$1K1B$ A2+$1K+$ R(RBB< L(und9*0midicps< 4 Nde(46secuenciador$ 7var altura$ dur< in(do78i8 altura9LsecAiOLsecsi#eBA0Bmidiratio@L(und< dur9LsecAiOLsecsi#eBA1B@+< i(4LsecAiOLsecsi#eBA2B99nil$7 5ynt046!ac0o$ A6(req$ altura$ 6dur$ dur@01$ 6amp$ 0+$ 6pan$ 0:BE< J$ 7 5ynt046!ac0o$ A6(req$ altura$ 6dur$ dur$ 6(m;req$ 1$ 6d$ 0:$ 6pan$ 0:BE< J : E< dur?ait< J JEquantQ40E< E< K@ Nde(46secuenciadorEplay< Nde(46secuenciadorEstop< @K I0ora veamos como crear arrays independientes de alturas y duraciones para despu)s unirlos en un array que los a!rupe por pares en arrays m%s pequeos de altura y duraci/n Lnotas9Irrayrand412$0$12E< Ldur9Irrayrand412$0$10Enormali#e5um@+< Lsec9ALnotas$LdurB(lop< K@ Nde(46secuenciadorEplay< Nde(46secuenciadorEstop< @K I!re!uemos la posi&ilidad de 0acer cam&ios en el tempo mediante una ci(ra metron/mica &mp 4&its por minutoE L&pm9*0 4 Nde(46secuenciador$ 7var altura$ dur< in(do78i8 altura9LsecAiOLsecsi#eBA0Bmidiratio@L(und< dur9LsecAiOLsecsi#eBA1B@44*0@+EKL&pmE< 5ynt046!ac0o$ A6(req$ altura$ 6dur$ dur@2$ 6amp$ 0*:$ 6pan$ P0:BE< dur?ait< J JEquantQ40E< E< K@ Nde(46secuenciadorEplay< Nde(46secuenciadorEstop< @K * S por 2ltimo a!re!uemos otra vo# con otro secuenciador Lnotas29Irrayrand412$0$12E P12< Ldur29Irrayrand412$0$10Enormali#e5um@1*< Lsec29ALnotas2$Ldur2B(lop< 4 Nde(46secuenciador2$ 7var altura$ dur< in(do78i8 altura9Lsec2AiOLsec2si#eBA0Bmidiratio@L(und< dur9Lsec2AiOLsec2si#eBA1B@44*0@+EKL&pmE< 5ynt046!ac0o$ A6(req$ alturaK2$ 6dur$ dur@2$ 6amp$ 0*:$ 6pan$ P0:BE< dur?ait< J JEquantQ40E< E< K@ Nde(46secuenciador2Eplay< Nde(46secuenciador2Estop< @K K@ 4 Nde(46secuenciadorEplay< Nde(46secuenciador2Eplay< E 4 Nde(46secuenciadorEstop< Nde(46secuenciador2Estop< E 4 Ldur9A1K1*T1$ 1K1T+$ 1K+T2$1K2B(latscram&le< Lnotas9Irrayrand4Ldursi#e$0$12E< Lsec9ALnotas$LdurB(lop< Ldur29A1K1*T1$ 1K1T+$ 1K+T2$1K2B(latscram&le< Lnotas29Irrayrand4Ldur2si#e$0$12E P12< Lsec29ALnotas2$Ldur2B(lop< E @K 3 Mquina de Estados Finitos Es un modelo de comportamiento de un sistema donde la seal de salida depende de una seal de entrada m%s sus estados anteriores >a m%quina de estados (initos 5e compone de una serie de estados En cada estado se tienen di(erentes opciones para moverse a otros estados ,or ejemplo$ ima!inemos que tenemos + estados en los que podemos estar ,artimos de un estado inicial$ sea el 0 .el 0 podr"amos ir al estado 1 o al 2 5i vamos al estado 1 podemos ir al estado 2 5i vamos al estado 2 encontramos que de a0i podriamos ir de re!reso al estado 0 o ir al estado F 5i estamos en el estado F ya aca&amos Empie#as en 0 5i estas en 0 puedes ir a 1 o 2 5i estas en 1 puedes ir a 2 5i estas en 2 puedes ir a 0 o F 5i estas en F ya aca&aste Hacer el recorrido una ve# Este es solo un caso 0ipot)tico >a cantidad de estados y las opciones a donde se puede diri!ir en cada estado son determinadas por quien disea la m%quina En 5C e=iste el patr/n llamado ,s(m Pattern Finite State Machine$ para llevar aca&o este tipo de secuencias Pfsm(lista, repeticiones) Cada estado consiste de un art"culo y un Irray de "ndices enteros de posi&les estados pr/=imos El art"culo inicial se esco!e de manera aleatoria del Irray que representa los estados de entrada$ ese estado que aca&a de ser esco!ido se re!resa y el si!uiente estado es esco!ido de los posi&les estados pr/=imos Cuando el 2ltimo estado es esco!ido$ a0" termina el (lujo de estados ,(sm4A UAestados iniciales posi&lesB$ estadoQ1$ UAestados a los que se puede irB$ estadoQ2$ UAestados a los que se puede irB$ estadoQF$ UAestados a los que se puede irB$
ultimoQestado$ nil B$ 1 cantidadQdeQrepeticiones E
Ha!amos un ejemplo lineal para empe#ar En este caso solo podemos empe#ar en el estado 0 .el estado 0 solo podemos ir al 1$ del 1 solo al 2 y del 2 solo al F Lme(9,(sm4 A UA0B$ 0$ UA1B$ 1$ UA2B$ 2$ UAFB$ F$ nil B$1Eas5tream
Cecesitamos mandar el mensaje as5tream al ,(sm para poder pedir sus resultados ,ara pedir los resultados usamos el mensaje ne=t
Lme(ne=t 5i declaramos varias veces Lme(ne=t nos arrojar% los n2meros 0$ 1$ 2 y F .espu)s de esto nos marcar% error por que el ,(sm 0a terminado de 0acer su recorrido y solo le pedimos que lo 0iciera una ve#
I0ora 0a!amos el caso 0ipot)tico que planteamos al inicio
Esto: Empie#as en 0 5i estas en 0 puedes ir a 1 o 2 5i estas en 1 puedes ir a 2 5i estas en 2 puedes ir a 0 o F 5i estas en F ya aca&aste Hacer el recorrido una ve# 5e convierte en esto: Lme(9,(sm4 A UA0B$ 0$ UA1$ 2B$ 1$ UA2B$ M 2$ UA0$ FB$ F$ nil B$1Eas5tream
>a m%quina de estados (initos es per(ecta para esta&lecer recorridos arm/nicos o&edeciendo las re!las cadenciales de la armon"a cl%sica Estas re!las en pala&ras son: Nenemos los si!uientes acordes: i 9 primer !rado ii 9 se!undo !rado iv 9 cuarto !rado v 9 quinto !rado vi 9 se=to !rado >as re!las de conducci/n cadencial son las si!uientes: Empie#as en i 5i estas en i puedes ir a ii$ iv o a v 5i estas en ii puedes ir a v 5i estas en iv puedes ir a i o a v 5i estas en v puedes ir a i$ vi 5i estas en vi puedes ir a iv -mplementado en un ,(sm queda as": Lme(9,(sm4 A UA0B$ 1$ UA1$ 2$ FB$ KK 0 2$ UAFB$KK 1 +$ UA0$ FB$ KK 2 :$ UA0$ +B$ KK F *$ UA2B$ KK + B$in(Eas5tream 4 5ynt0.e(46cadencias$ 78(req9UA200$F00$+00$+:0B$ !ate918 var si!$ env< si!95in'scar4(req$0$1KFEmean< env9EnvHenDr4Envasr401$1$2E$!ate$ doneIction:2E< 'utar40$si!@envE< JEsend4sE< E 10 4 5ynt0.e(46cadencias2$ 78(req9200$ !ate918 var si!$ env< si!95in'scar4(req$0$1KFE< env9EnvHenDr4Envasr401$1$2E$!ate$ doneIction:2E< 'utar40$si!@envE< JEsend4sE< E Lsynt095ynt046cadencias$ A6(req$ A0$+$3$12Bmidiratio@200BE Con un Nde( evaluamos el Lme(ne=t y de(inimos di(erentes (unciones para cada estado en estas (unciones estamos esta&leciendo las notas de los di(erentes acordes L?ait91< 4 Nde(46cadencias$ 7 in(do7 s?itc04Lme(ne=tpostln$ 1$ 7Lacorde9A0 P12$+$3$12BJ$ 2$ 7Lacorde9A2 P12$:$M$1+BJ$ +$ 7Lacorde9AP3 $:$M$12BJ$ :$ 7Lacorde9AP: P12$:$3$11BJ$ *$ 7Lacorde9APF P12$+$M$12BJ E< Lsynt0set46(req$ Lacordemidiratio@200E< L?ait?ait< JJEquantQ40E< E Nde(46cadenciasEplay Nde(46cadenciasEstop Lsynt0set46!ate$ 0E Lsynt0295ynt046cadencias2$ A6(req$ A0$2$+$:$3$M$11$12Bc0oosemidiratio@200BE Lsynt02set46(req$ A0$2$+$:$3$M$11$12Bc0oosemidiratio@200E Lsynt02set46!ate$ 0E 4 Nde(46melodia$ 7 in(do7 11 Lsynt02set46(req$ A0$2$+$:$3$M$11$12Bc0oosemidiratio@200E< 4L?ait@A1K+$1K2$1Bc0ooseE?ait< JJEquantQ40E< E Nde(46melodiaEplay Nde(46melodiaEstop Esta o&ra est% sujeta a la licencia Ittri&utionPConCommercialP50areIliDe F0 Unported de Creative Commons ,ara ver una copia de esta licencia$ visite 0ttp:KKcreativecommonsor!KlicensesK&yPncPsaKF0K o envie una carta a Creative Commons$ +++ Castro 5treet$ 5uite M00$ Mountain Vie?$ Cali(ornia$ M+0+1$ U5I 12