Centro Multimedia 2012 Sesin 20 SuperCollider en la interdisciplina con nuevos medios La interdisciplina podramos entenderla como el entrecruce de diferentes disciplinas artsticas que enriquecen las diferentes prcticas de arte !s" el c#di$o %a sido un detonador en este cruce constante que se e&tiende a la ciencia y la tecnolo$a 'odemos mencionar el desarrollo de proyectos audio(isuales" el uso de sensores como e&tenciones y nodos entre artes esc)nicas" m*sica y artes (isuales Anlisis de datos E&isten innumera+les maneras de anali,ar un $rupo de datos Lo interesante es determinar el al$oritmo reali,a el anlisis que deseamos !qu (eremos un e-emplo de un al$oritmo que reali,a un anlisis a un $rupo de 100 n*meros enteros 1 .etermina que n*meros son menores que /0 y los a$rupa en un su+con-unto ! 2 .etermina que n*meros son mayores que /0 y menores que 00 y los a$rupa en un su+con-unto 1 / .etermina que n*meros son mayores que 00 y los a$rupa en un su+con-unto C 2 .etermina cuantas (eces se repite cada elemento de cada su+con-unto // Primero creamos un conjunto ~u con 100 nmeros enteros aleatorios entre 0 y 100 ~u=Array.rand(100,0,100); // Creamos los subconjuntos ac!os ~a, ~b y ~c. ~a="#; ~b="#; ~c="#; Con el si$uiente al$oritmo a$rupamos en 3a los n*meros menores que /0" en 3+ los mayores que /0 y menores que 00" y en 3c los mayores que 00 1 ( ~u.si$e.do%&i& i'(~u"i#(=)0,%~a=~a.add(~u"i#)*); i'((~u"i#+)0),,(~u"i#(=-0),%~b=~b.add(~u"i#)*); i'(~u"i#+-0,%~c=~c.add(~u"i#)*); * ) 'odemos (er c#mo quedan a$rupados los n*meros en su+con-untos despu)s del primer anlisis.
~a; ~b; ~c; 4am+i)n podemos (isuali,ar una $rfica de cada su+con-unto ~a..lot/ ~b..lot; ~c..lot;
! continuaci#n tenemos un al$oritmo que determina cuntas (eces est presente cada n*mero 'ero primero o+ser(emos los mensa-es .sort y .indices0'12ual que se usan en el al$oritmo // .sort nos .one en orden ascendente los nmeros de un array. 3i declaramos/ "4,1,),1,0,)#.sort // 0btenemos "0,1,1,4,),)# .indices0'12ual nos dice en qu) indices estan presentes un elemento dentro de un array 5i queremos sa+er en qu) indices se encuentra presente el n*mero 1 dentro del array "0,1,1,4,),)# declaramos6 "0,1,1,4,),)#.indices0'12ual(1); 2 7 o+tenemos6 "1,4# // Para saber la cantidad de eces 2ue el nmero 1 se encuentra en el array "0,1,1,4,),)# 5acemos esto/ "0,1,1,4,),)#.indices0'12ual(1).si$e; !%ora s" el si$uiente al$oritmo determina cuntas (eces est cada n*mero en al su+con-unto 3a y nos $enera 2 arre$los6 el arre$lo 3elementos! con los elementos de 3a en orden y sin repetir y otro arre$lo 3incidencias! con la cantidad de (eces que esta cada elemento en 3a ( ar array=~a, elemento6anterior=nil; ~elementosA="#; ~incidenciasA="#; array.si$e.do%&i& i'(array.sort"i#7=elemento6anterior, % ~elementosA=~elementosA.add(array"i#);
( ~elementos9..ostln; ~incidencias9 ) // : .ara ~c ( ar array=~c, elemento6anterior=nil; ~elementosC="#; ~incidenciasC="#; array.si$e.do%&i& i'(array.sort"i#7=elemento6anterior, % ~elementosC=~elementosC.add(array"i#); ~incidenciasC=~incidenciasC.add(array.indices0'12ual(array"i#).s i$e); *); elemento6anterior=array"i#; *; ) ( ~elementosC..ostln; 2 ~incidenciasC ) Mapeo 'or mapeo entendemos la traducci#n de informaci#n de parmetros distintos" que por su cualidad informtica estn representados en n*meros" pero que en su salida representan diferentes campos de acci#n Es decir una frecuencia es representada en un n*mero que puede ser traducido a un canal de color R81" am+os son representados en n*meros pero sus ran$os son distintos !plicando una t)cnica de mapeo podemos transponer el ran$o de frecuencia del odo %umano 920 a 20"000 H,9 a un canal de color del sistema R81 90 a 2::9 Esto es sencillo dado que dentro de la computadora estos n*meros tienen el mismo comportamiento y son fcilmente escala+les" toman sentido de ser frecuencia o color solo en su salida MouseX.kr / MouseY.kr;(alor min" (alor ma&" en(ol(imiento" inter(alo< =$en del cursor" en plano (ertical y %ori,ontal de la pantalla (alMin" (alMa&6 ran$o de (alores entre i,quierda y derec%a de la pantalla inter(alo6 factor del inter(alo en(ol(imiento6 cur(a del mapeo 0 es lineal" 1 es e&ponencial inter(alo6 factor de inter(alo" sir(e para el mo(imiento del cursor MouseButton.kr;(alMin" ValMa&" inter(alo< =$en del +ot#n del rat#n (alMin6 (alor cuando el +ot#n no est presionado (alMa&6 (alor cuando el +ot#n est presionado inter(alo6 factor del inter(alo ( 3ynt5;e'(<ma.eo,%&out=0& ar sen, en, mouse=, mouse:, mouse9; mouse==>ouse=.?r()00,)000,1); mouse:=>ouse:.?r(1.0,0.001,1); mouse9=>ouse9utton.?r(0,1,0.1); sen=@3in0sc.ar(mouse=,0,mouse:); en=1nAen.?r(1n..erc(0.1,)),mouse9,doneAction/0); 0ut.ar(out,senBen) *).send(s) ) a=3ynt5(<ma.eo) a.'ree : >tros recursos son los mensa-es linlin y line&p que interpolan datos de manera lineal y e&ponencial .linlin;entradaMin" entradaMa&" salidaMin" salidaMa&" clip< En(uel(e los datos de tal manera que un ran$o lineal de entrada es mapeado a un ran$o lineal de salida clip6 puede ser uno de estos 26 nil" no %ay clip" ?minma& %ay clip en el mnomo y m&imo de salida" ?min %ay clip en el mnimo de salida" ?ma& %ay clip en el m&imo de salida .linep;entradaMin" entradaMa&" salidaMin" salidaMa&" clip< En(uel(e los datos de tal manera que un ran$o lineal de entrada es mapeado a un ran$o e&ponencial de salida Hay que tener cuidado que el mnimo y m&imo de salida no sean menores de cero y que sean del mismo si$no El clip funciona i$ual en en linlin !SC >pen 5ound Control es un protocolo de comunicaci#n en red que utili,an tanto computadoras como sinteti,adores y otros aparatos multimedia !simismo este protocolo comunica diferentes pro$ramas 5C tiene implementado >5C para su comunicaci#n interna y de manera e&terna para comunicarse con otros pro$ramas como pueden ser 'rocessin$" >pen@rameAorBs o 'ure.ata Este protocolo tam+i)n es *til para comunicar un smartphone o para %acer cola+oraciones en red a tra()s de Cnternet o de manera local mediante 4C'DC' a tra()s de los puertos =.' La comunicaci#n mediante >5C podemos pensarla en de dos maneras" una es el en(o de datos y otra es la recepci#n de datos "nv#o de datos $etAddr;C'" puerto< .irecci#n de red C'6 es una cadena de n*meros6 E12F001G representa comunicaci#n interna puerto6 es un n*mero como este :F120" es el n*mero de puerto e&clusi(o de 5C // en!o de datos de 3C a 3C dentro de la misma com.utadora CetAddr(D14E.0.0.1D, FE140) %ecepcin de datos 0 >5Cresponder;direcci#n" nom+reComando" acci#n< Cliente que responde a la red" re$istra una funci#n para ser llamada con un comando especfico de una direcci#n >5C especfica direcci#n6 la direcci#n desde donde reci+e el responder, puede ser nil en cuyo caso responde a cualquier direcci#n nom+re de comando6 un comando >5C del tipo6 Dal$o acci#n6 una funci#n que ser e(aluada cuando un comando de ese nom+re es reci+ido por la direcci#n // rece.ciGn de datos 03Cres.onder (n, D/buenas/tardesD, %arH tiem.o, mensaje, res.uesta; "mensaje, tiem.o#*).add Comen,amos en(iando datos internamente en 5uperCollider // declaro el cGdiHo .ara eniar datos a 3C dentro de mi .c n=CetAddr(D14E.0.0.1D, FE140) // delcaro el cGdiHo .ara recibir datos de 3C dentro de mi .c r=03Cres.onder(nil,D/reciboD,%&tiem.o,res.uesta,mensaje,comando& "tiem.o,res.uesta,mensaje,comando#..ostln*).add // mando un mensaje con esta l!nea, en la .ost a.arece el resultado n.send>sH(D/reciboD,1) La post me imprime una serie de (alores encasillados dentro de un !rray" de los cuales me interesa el tercero que es el mensa-e" el cual a su (e, es un !rray que contiene el comando >5C y un (alor *til 'ara filtrar ese (alor usaremos un >5Cresponder que indica que informaci#n quiero leer Aplicaciones del mapeo & !SC Soni'icacin de datos La sonificacion a+orda el mane-o de un con-unto con una $ran cantidad de elementos o de un flu-o constante de datos (aria+les para con(ertirlos en sonido !%ora (amos a sonificar el con-unto 3u despu)s de %a+er sido anali,ado Creamos primero un 5ynt%.ef que acepte cam+ios en ar$umentos de frecuencia y duraci#n ( F 3ynt5;e'(<sonido, %&'re2=400, am.=0.F, dur=0.1F& ar siH, en; siH=3aI.ar('re2, am.); en=1nAen.?r(1n.sine(dur,1),doneAction/4); 0ut.ar(0,siHBen); *).send(s); ); 3ynt5(<sonido) // Jeestructuramos los subconjuntos ~a, ~b y ~c. ( ~a="#; ~b="#; ~c="#; ~u.si$e.do%&i& i'(~u"i#(=)0,%~a=~a.add(~u"i#)*); i'((~u"i#+)0),,(~u"i#(=-0),%~b=~b.add(~u"i#)*); i'(~u"i#+-0,%~c=~c.add(~u"i#)*); * ) // ;eclaramos una 'recuancia 'undamental. ~'und=)0; El si$uiente al$oritmo de sonificaci#n le manda el mensa-e midiratio a los n*meros enteros del su+con-unto 3a para leerlos como semitonos so+re la fundamental La duraci#n es el in(erso de la cantidad de (eces que se repite el n*mero entero !dems repite la nota que representa ese n*mero entero la cantidad de (eces que se repite dentro de 3a ( ( Kde'(<soni'icacionA, %ar dur; ~a.si$e.do%&i& dur=1/ (~incidenciasA"~elementosA.'ind("~a"i##)#)..ostln; ~incidenciasA"~elementosA.'ind("~a"i##)#.do% 3ynt5(<sonido, "<'re2, ~a"i#.midiratioB~'und, <dur, dur#); H dur.Iait; * * *).2uant6(0); ); /B Kde'(<soni'icacionA)..lay; Kde'(<soni'icacionA).sto.; B/ // 8o mismo .ara ~b. ( Kde'(<soni'icacion9, %ar dur; ~b.si$e.do%&i& dur=1/ (~incidencias9"~elementos9.'ind("~b"i##)#)..ostln;
~incidenciasC"~elementosC.'ind("~c"i##)#.do% 3ynt5(<sonido, "<'re2, ~c"i#.midiratioB~'und, <dur, dur#); dur.Iait; * * *).2uant6(0); ); /B Kde'(<soni'icacionC)..lay; Kde'(<soni'icacionC).sto.; B/ ) // A2u! 5ec5amos a andar los tresubconjuntos soni'icados. /B ( Kde'(<soni'icacionA)..lay; Kde'(<soni'icacion9)..lay; Kde'(<soni'icacionC)..lay; ); ( Kde'(<soni'icacionA).sto.; Kde'(<soni'icacion9).sto.; Kde'(<soni'icacionC).sto.; ) B/ Bi(lio)ra'#a Jetri" E y Romero" E ;200H< Curso de SuperCollider Intermedios. Centro Multimedia6 M)&ico 10 Esta o+ra est su-eta a la licencia !ttri+ution9JonCommercial95%are!liBe /0 =nported de C r e a t i ( e C o mmo n s ' a r a ( e r u n a c o p i a d e e s t a l i c e n c i a " ( i s i t e %ttp6DDcreati(ecommonsor$DlicensesD+y9nc9saD/0D o en(ie una carta a Creati(e Commons" 222 Castro 5treet" 5uite I00" Mountain VieA" California" I2021" =5! 11
Inteligencia artificial: Lo que usted necesita saber sobre el aprendizaje automático, robótica, aprendizaje profundo, Internet de las cosas, redes neuronales, y nuestro futuro