+ All Categories
Home > Documents > Paradigma live Coding

Paradigma live Coding

Date post: 07-Jul-2018
Category:
Upload: daniel
View: 226 times
Download: 0 times
Share this document with a friend

of 28

Transcript
  • 8/18/2019 Paradigma live Coding

    1/28

    Live Coding

    El paradigma de la programación en vivo

    v.2

    Hernani Villaseñor Ramírez, 2013

    Centro Multimedia, CENART, Méi!o "#$#

    ¿Qué es Live Coding ?

    Live Coding  es una %r&!ti!a deri'ada de la m(si!a ele!tr)ni!a %or !om%utadora * la

    'ideo anima!i)n donde se %ro+rama en 'i'o mientras se e%one el !)di+o unto !on el sonido

    * la ima+en resultante#

    Esta !orriente !omenz) a tomar -uerza en Euro%a en los años .0 * a!tualmente es un

    eer!i!io dentro del arte ele!tr)ni!o e%erimental# M!/ean 12., men!iona ue el término

    sur+i) alrededor del 2003, %ara des!riir una a!ti'idad !on una a%roima!i)n a nue'as

    -ormas de 4a!er m(si!a %or !om%utadora * 'ideo anima!i)n, asimismo su+iere ue el

    término live coding  se usa m&s en el !onteto de la im%ro'isa!i)n#

    5or su %arte, Ro4r4uer et al 2002, men!ionan ue “Just in time programming (or:

    conversational programming, live coding, on-the-flying-programming, interactive

     programming)” se re-iere a un %aradi+ma ue in!lu*e la a!ti'idad de %ro+ramar en la

    -un!ionalidad misma del %ro+rama, lo ue 4a!e ue es!riir !)di+o se !on'ierta en una

    a!ti'idad !er!ana a una %r&!ti!a musi!al o e%erimental#

    Antecedentes

    T4e Hu es un ensamle de %ro+ramadores6!om%ositores %ioneros en la %r&!ti!a de

    M(si!a %or Com%utadora en Red1# Este ensamle se !ara!teriza %or !om%artir datos e

    in-orma!i)n a tra'és de una red %ara ser modi-i!ados durante la %resenta!i)n# El ensamle

    1 Computer Music Network 

    1

  • 8/18/2019 Paradigma live Coding

    2/28

    esta -ormado %or Tim 5er7ins, 8o4n 9is!4o--, C4ris 9ro:n, ;!ot ard, uienes diseñan sus %ro+ramas de audio en ase a len+uaes !omo 5earl *REA/9asi! Collins et al, 2003?323# 5osteriormente, "a'e iser# 59@5 to!an !on sus la%to%s sin !one!tarse a

    un sistema de sonido, inter!amiando !)di+o a tra'és de una red, el !ual 'an +enerando *

    modi-i!ando en el momento de la %resenta!i)n#

    aa=!ell es un duo australiano de live coding a!ti'o  desde el 200D, !on-ormado %or

     Andre: R# 9ro:n * Andre: ;orenson, uienes usan el %ro+rama m%rom%tu en sus

    %resenta!iones, el !ual 4a sido diseñado %or ;orenson#

    9enoFt and t4e Mandelrots, es un ensamle de live coding  -ormado en el 200. en

    Barlsru4e# Cone!tados a tra'és de una red se sin!ronizan * en'ian datos# nte+rado %or 8uan

     A# Romero, 5atri!7 9or+eat, Hol+er 9all:e+ * Matt4ias ;!4neideran+er#

    Tamién %odemos men!ionar los %rimeros -esti'ales de live coding   GC4an+in+

  • 8/18/2019 Paradigma live Coding

    3/28

    Live Coding  en México: una perspectiva desde el Centro Multimedia

    /a %r&!ti!a de live coding  en el Centro Multimedia tiene sus orí+enes en el año 200,

    !on una serie de !on!iertos de la a+ru%a!i)n m@, la !ual estaa -ormada %or Eduardo

    Meléndez, Ezeuiel Netri * Ernesto Romero uienes traaaan en el Taller de Audio delCentro Multimedia, estos !on!iertos tu'ieron lu+ar en la @ni'ersidad eroameri!ana, el

    $esti'al 5lata-orma de 5uela * "or7ot Méi!o# Adem&s de este e'ento, el 1I de ulio 200.,

    se lle') a!ao el %rimer !on!ierto de ;ines!enia2, donde Ezeuiel Netri %resent) G5r&!ti!as

    !on !)di+o en 'i'o? Re=modula!i)n en 'i'o de !)di+o aierto a tra'és de ;u%er!ollider, ue

     unto a los !on!iertos de m@ %odrían !onsiderse las %rimeras %resenta!iones de de live

    coding  en el CMM3#

    En di!iemre 2010, !on una !re!iente !omunidad de usuarios de ;u%erCollider, $luus

    * 5ro!essin+ !er!anos al CMM, se dan las !ondi!iones %ara 4a!er la %rimer sesi)n de live

    coding   !on 'arios %arti!i%antes, la !ual se lle') a!ao en la

  • 8/18/2019 Paradigma live Coding

    4/28

    el Museo de Cien!ias de Morelos 4an sido nue'os es!enarios %ara estas sesiones, ue %o!o

    a %o!o se 4an estale!ido !omo una %lata-orma %ara e%oner el traao de artistas *

    %ro+ramadores, uienes !onsolidan la %r&!ti!a en Méi!o#

    Ms all de las sesiones de Live Coding en el CMM

    /a sesiones de live coding   en el CMM, adem&s de ser'ir !omo %lata-orma %ara

    di-undir una %r&!ti!a * !rear una !omunidad, 4an sido detonador %ara la or+aniza!i)n de

    otros e'entos li+ados a esta %r&!ti!a, %or eem%lo G"iarios E-ímeros !i!lo or+anizado %or

    8aime /oato dentro de ndeM@AC, %ro+rama de m(si!a !ontem%r&nea del Museo

    @ni'ersitario de Arte Contem%or&neo de la @NAM# Este !i!lo se lle') a !ao entre el 1 de

    a+osto * el 30 se%tiemre 2012, !on tres a!tos en 'i'o de live coding   sumado a otras

    dis!i%linas !omo %intura, danza * circuit ending ! "

    Como -i+uras desta!adas de la !omunidad en torno a las sesiones de Live Coding  del

    CMM se %uede men!ionar a Ernesto Romero ue unto a Hernani Villaseñor 4an or+anizado

    * %romo'ido esta %r&!ti!a dentro de este es%a!io# Tamién %odemos men!ionar a /uis

    Na'arro, Eduardo H Jieta, 8or+e Ramírez, Martín uma*a, 8aime /oato, Aleandro $ran!o,

    Mitzi Jl'era, Aleandra C&rdenas, Emilio J!elotl, 8aime 8alil Ramírez, 8osé Carlos Hasun,

    8ulio aldí'ar, Arsitotles 9enitez * el Cole!ti'o Radiador#

     !"vivo"! a dos a#os de tra$a%o so$re el tema

    En el 2012 se or+aniz) el ;im%osio nterna!ional de M(si!a * C)di+o 6'i'o6, el !ual

    tu'o lu+ar en el CMM entre el 13 * 1 de no'iemre 2012 !on el tema? Live Coding, usto dos

    años des%ués de 4aer !omenzado la sesiones mensuales" Este sim%osio -ue el ter!ero

    realizado a ni'el mundial !on esta tem&ti!a * !ont) !on la %arti!i%a!i)n de 8ulian Ro4r4uer,

     Ale M!/ean, "a'e

  • 8/18/2019 Paradigma live Coding

    5/28

    &ntroducción a 'uperCollider 

    ;u%erCollider es un len+uae de %ro+rama!i)n de sonido, en el !ual se %ro+rama

    !)di+o de la misma -orma en ue es!riimos en un %ro!esador de teto# Este %ro+rama -ue

    diseñado %or 8ames M!Cartne* en 1..P, * desde enton!es 4a sido ado%tado %or una!omunidad ue traaa en torno a la m(si!a al+orítmi!a * el sonido !reado %or !om%utadora#

    Conoce tu teclado

    En!uentra en tu te!lado los si+uientes !ara!teres? Q, S, U, # Tilde, !or!4ete, lla'e *

     pipe# En!uentra las si+uientes -un!iones? enter, !md, alt, !trl, es!#

    (ola Mundo )

    Como en !ualuier a%roima!i)n al estudio de una 4erramienta de %ro+rama!i)n, el

    %rimer %aso es ase+urarnos ue est& instalada !orre!tamente * ue -un!iona, esta %rimer

    %ro+rama!i)n se llama G#ello $orld %” 

    5ara realizar nuestro GHola mundo W en ;u%erCollider ne!esitamos saer !omo a!ti'ar

    una línea de !)di+o * !omo -renar el %ro!eso# Estas a!!iones est&n determinadas %or el

    sistema o%erati'o ue usamos * %or la -orma en la ue !orremos ;u%erCollider 1# Enton!es,

    %ara 4a!er -un!ionar un !)di+o %onemos el !ursor sore la línea ue ueremos a!ti'ar o

    sele!!ionamos 'arias líneas, %or (ltimo %resionamos la te!la ue nuestra 'ersi)n de

    ;u%erCollider reuiere# 5ara -renar el %ro!eso asta %resionar las te!las ue a!!ionan el

    !omando stop" Nue'amente, este shortcut es distinto en !ada sistema#

     A !ontinua!i)n los shortcuts en los sistemas m&s !omunes?

    1 or eemplo SuperCollider puede 0uncionar dentro del editor de te$tos edit en -inu$'

    /

  • 8/18/2019 Paradigma live Coding

    6/28

    ;istema En!ender 5arar  

    Ma! enter !md X #

    >indo:s !trl X intro !trl X #

    /inu =

  • 8/18/2019 Paradigma live Coding

    7/28

    ;inJs! oeto, siem%re em%ieza !on ma*(s!ula

    #%la* método, lle'a un %unto antes del mensae

    Z ru%tura de !)di+o

    , una !oma se%ara los ar+umentos

    Guna %alara !omillas, en+loan teto dentro de un !)di+o en -un!i)n[nomre dia+onal, de-ine el nomre de una rutina, un sinte o un mensae

    Q tilde, de-ine una 'ariale +loal

    Todos estos !ara!teres no tiene sentido %or si solos, %ero es ne!esario identi-i!ar ue

    -un!i)n tienen dentro del !)di+o, esto en un %rin!i%io es im%ortante *a ue el !)di+o %odría

    %are!ernos una se!uen!ia de %alaras * n(meros in!om%rensiles# Al de-inir estos

    !ara!teres %odemos leer !)di+o sin %erdernos * dete!tar los errores m&s r&%ido#

    Ver eem%lo 02 en la !ar%eta de eem%los#

    La ventana del servidor local

    ;u%erCollider tiene dos ser'idores? lo!al e interno# En nuestro !aso traaaremos !on

    el ser'ido interno# /a 'entana del ser'idor interno nos muestra el !om%ortamiento de

    ;u%erCollider, de interés son? la !antidad de %ro!esamiento em%leado * el n(mero de

    sintetizadores a!ti'os# "esde esta 'entana tamién %odemos %render nuestro ser'idor *

    a!ti'arlo !omo default #

    La ventana post 

    Esta 'entana nos indi!a !on ma*or %re!isi)n lo ue su!ede !on ;u%erCollider, nos

    in-orma ue el %ro+rama se 4a en!endido !orre!tamente, la !ara!terísti!a de !ada -un!i)n

    ue de!laramos * nos alerta !uando 4a* un error en la %ro+rama!i)n# Tamién im%rime la

    in-orma!i)n ue le indiuemos o los 'alores arroados %or una a!!i)n#

    // declara este código en supercollider

    5

  • 8/18/2019 Paradigma live Coding

    8/28

    12.postln

    6imprime esto".postln

    Lectura de errores

    Como men!ioné antes, la 'entana post nos alerta de errores en la %ro+rama!i)n, esto

    es de suma im%ortan!ia !uando %ra!ti!amos live coding , *a ue !uando al+o no suena es

    uena idea re'isar si 4a* un error en la  post , de esta manera tendremos elementos %ara

    resol'erlo#

    Estas alertas nos indi!an en ue línea esta el error * de ue ti%o es, a 'e!es nos da la

    su-i!iente in-orma!i)n %ara resol'erlo, otras tenemos ue re'isar dire!tamente el !)di+o ue

    a!aamos de de!larar * ue arro) un error#

    *+ens

    /a unidades +eneradoras =&nit 'enerators=, son %eueños m)dulos de %ro+rama!i)n

    ue a!e%tan %ar&metros de entrada !on al menos una salida# Estas unidades +eneradoras

    %ueden !one!tarse a otras %ara diseñar, lo ue en m(si!a ele!tr)ni!a, se !onsidera se+(n

    "od+e * 8erse1..K?K2, un instrumento o al+oritmo el !ual realiza un e'ento musi!al#

    En ;u%erCollider estas unidades se llaman @

  • 8/18/2019 Paradigma live Coding

    9/28

    Enton!es en el eem%lo anterior oser'amos ue un @

  • 8/18/2019 Paradigma live Coding

    10/28

    sin ' SinOsc.ar$20000.1%;

    pulso ' (ulse.ar $0.)%;

    sin * pulso}.play

    /as 'ariales +loales son letras min(s!ulas o %alaras ue em%iezan !on una tilde

    !omo Q'ariale# /as 'ariales +loales %ueden ser de!laradas en !ualuier momento %ara

    ser usadas !uando ueramos# Es im%ortante men!ionar ue 4a* letras ue son reser'adas

    !omo la \s\ ue esta asi+nada %ara erver #

    a ' )

    b ' +

    a , b

    -!recuencia ' )00

    -amplitud ' 1

    Ver eem%lo 03 en la !ar%eta de eem%los#

    Argumentos

    /os ar+umentos en ;u%erCollider son 'alores asi+nados a !ada oeto, los !uales

    tienen un ran+o * est&n de-inidos dentro de la %ro+rama!i)n de !ada oeto# 5ara saer

    !uantos ar+umentos tiene un oeto, ué de-ine !ada uno * !u&l es su ran+o de o%era!i)n,

    asta 'er la a*uda del oeto# En Ma! sele!!ionamos el teto del oeto * %resionamos !md

    X "#

     Anali!emos el oeto ue +enera tonos sinoidales? ;inJ;!#ar, el !ual tiene I

    ar+umentos ue son? -re!uen!ia, -ase, multi%li!a!i)n * adi!i)n#

    ;inJs!#ar -re, %4ase, mul, add

    En este !aso fre  di!e ue -re!uen!ia +enera el os!ilador,  phase  en ue momento

    1*

  • 8/18/2019 Paradigma live Coding

    11/28

    !omienza la onda, este ar+umento se mide en radianesZ lue+o mul, es la are'iatura de

    multi%li!a!i)n lo !ual de-ine la am%litud normalizada en un ran+o de 0 Y 1, * %or (ltimo add  es

    una suma la !ual se %uede usar %ara !ontrolar el !om%rtamiento del os!ilador#

    // as &iene especi!icada la ayuda de SinOscSinOsc.ar$!re pase mul add%

    Arra-s

    /os arre+los o arrays son !ontenedores de in-orma!i)n, son elementos or+anizados

    en una lista, +eneralmente n(meros ue %ueden usarse de maneras di'ersas# En

    ;u%erCollider un arre+lo se en!asilla entre !or!4etes * sus elementos se se%aran %or !omas,

    !ada elemento es un índi!e * tiene una %osi!i)n dentro del array !on la !ual %uede ser

    a!!esado# Así, el %rimer elemento es el índi!e 0, el se+undo índi!e 1, et!#

    // array de &alores

    1234)+56

    /os 'alores internos de los arrays se identi-i!an mediante índi!es, !omenzando %or el

    índi!e 0#

    // array de &alores es el ndice 0 3 el ndice 1 4 el ndice 2 etc.

    34+523)6

    5ara a!!eder a un índi!e del array utilizamos un o%erador de a!!eso ue en

    ;u%erCollider -un!iona indi!ando entre !or!4etes el n(mero de índi!e ue reuerimos, antes

    deemos i+ualar el array  a una 'ariale#

    // igualamos una array  de elementos a la &ariable 7a7

    a'34+324106

    11

  • 8/18/2019 Paradigma live Coding

    12/28

    // el operador de acceso llama el ndice ue le indicamos

    a06

    // la post nos arro8a el n9mero 3 ue es el &alor ue ocupa la primera

    posición del array 

    /os arra*s tamién a!e%tan otro ti%o de 'alores !omo %uede ser una lista de %alaras#

     Adem&s son -leiles *a ue en realidad !ada elemento del arra* es una 'ariale, es de!ir es

    sus!e%tile de ser sustituida %or otro 'alor#

    Ver eem%lo 0I en la !ar%eta de eem%los#

    Live Coding  con 'uperCollider: La li$rera /&0Li$

    8T/i es una lirería de ;u%erCollider desarrollada %or 8ulian Ro4r4uer# 8T/i

    si+ni-i!a GJust in time programming”  otra -orma de re-erise al live coding #

    1rox-'pace

    5ro*;%a!e %ertene!e a la lirería 8T/i * es uno de los !uatro entornos de esta

    lirería !on el !ual es %osile modi-i!ar el !)di+o de una %ro+rama!i)n mientras !orre#

    1rimeros pasos

    5ara !omenzar ini!iamos el amiente 5ro* de!larando la si+uiente línea de !)di+o?

    p ' (ro#ySpace.pus$s.boot%

    /ue+o de!laramos una 'ariale +loal, %ara lo !ual ante%onemos una tilde a la %alara

    ue -ormar& nuestra 'ariale * usamos el mensae #%la*, de esta manera 4emos !reado al+o

    12

  • 8/18/2019 Paradigma live Coding

    13/28

  • 8/18/2019 Paradigma live Coding

    14/28

    // pongo en pausa y continuo los procesos el sinte no se librea del ser&er

    -a.play

    -a'{SinOsc.ar$40000.)%}

    -a.pause

    -a.resume

    elease!'end

    Estos mensaes no a-e!tan el monitoreo del sinte, #send lo ue 4a!e es en!ender un

    nue'o sinte, #release lo liera# Jser'emos !omo el sinte sale del ;er'er# En este !aso

    -adeTime a-e!ta el tiem%o de en!endido * de liera!i)n#

    // libero y pongo en marca un sinte el sinte se librea del ser&er

    -a.play

    -a'{SinOsc.ar$40000.)%}

    -a.release

    -a.send

    3ade0ime

    -adeTime determina el tiem%o ue utilizar& !ada nue'o !amio, %odemos de!lararlo de

    manera +eneral o asi+narlo a !ada 'ariale#

    Hemos i+ualado nuestro amiente 5ro* a \%\, así ue %odemos !rear un -adeTime

    +loal de 10 se+undos de la si+uiente manera?

    p.!ade

  • 8/18/2019 Paradigma live Coding

    15/28

    -salida.!adetodo.set sustituimos el &alor 400 por 500

    -y.set$?!re 500%

    El método #set, +enera un crossfade  ue de%ende del 'alor asi+nado en -adeTime,

    es de!ir si este es de D se+undos la transi!i)n ue se lo+ra entre el 'alor anterior * el nue'o

    es de D se+undos, esto !rea transi!iones ue e'itan los !amios aru%tos al sustituir los

    'alores de un sonido !on el mensae #set#

    // este m>todo es similar al anterior la di!erencia es ue aplica un

    cross!ade ue depende de !ade

  • 8/18/2019 Paradigma live Coding

    16/28

    Es %osile de!larar las -un!iones de manera e%lí!ita, es de!ir, indi!ar si ser&n de

    !ontrol o de audio, %ara %osteriormente utilizarlas de manera anidada dentro de otra -un!i)n#

    // especi!co ue la &ariable ser de control y asigno el control mediante

    el ratón-algo.@r

    -algo'{AouseB.@r$2002000%}

    // a un SinOsc le aCado como argumento la &ariable -algo.@r ue controlar

    su !recuencia

    -ob8eto.play

    -ob8eto'{SinOsc.ar$-algo.@r00.)%}

    Es %osile ma%ear el !ontrol mediante el método #ma% utilizando ar+umentos dentro

    de la !onstru!!i)n del sinte#

    -a.play

    // creamos el argumento !rec

    -a'{=!rec'400= SinOsc.ar$!rec 0 0.)%}

    // creamos la &ariable -c y le asignamos un control con el ratón

    -c'{AouseB.@r$300 3000%}

    // con el m>todo .map indicamos ue el contenido de -c modi!iue el

    argumento ?!rec

    -a.map$?!rec -c%

    5ara uitar el ma%a usamos el método #unma% sore la 'ariale ue -ue ma%eada

    anteriormente#

    14

  • 8/18/2019 Paradigma live Coding

    17/28

    // ambos m>todos remue&en el mapeo

    -a.unmap

    -a.uset

    @na 'ariante de #ma% !on la ue %odemos lo+rar transi!iones sua'es es #ma%, este

    método utiliza el #-adeTime ue es a%li!ado sore la 'ariale#

    Ver eem%lo 0P en la !ar%eta de eem%los#

    Aleatoridad - reconstrucción de valores

    Ha* 'arios métodos %ara !rear 'alores aleatorios en ;u%erCollider, %or eem%lo rrand

    o e%rand, ue indi!a ue es!o+er&n un n(mero de manera aleatoria dentro de un ran+o ue

    nosotros indiuemos#

    // cada &eD ue declaremos el sinte se producir un nue&o &alor entre 100 y

    200

    -a.play

    -a'{SinOsc.ar$rrand$100200%01%}

    5ara re!onstruir estos 'alores %odemos mandar el mensae #uild, el !ual sir'e %ara

    re!onstruir un sinte dentro del ser'idor, es ueno usarlo si el sinte -ue %ro+ramado !on

    'alores aleatorios#

    // le dice al sinte ue reconstruya los &alores aleatorios

    -a.rebuild

    Ver eem%lo 0. en la !ar%eta de eem%los#

    15

  • 8/18/2019 Paradigma live Coding

    18/28

    +eneración de ritmo mediante 1ulsos

    Ha* 'arios métodos en ;u%erCollider ue +eneran %ulsos, este re!urso es so!orrido

    %ara +enerar rítmi!as dentro de una %ro+rama!i)n, * %uede utilizarse !omo una estrate+ia%ara realizar %ro+rama!i)n en 'i'o# Esta té!ni!a nos %ermite tener resultados mediante un

    %ulso ue sir'e !omo detonador de ritmos, aunue no es tan -leile en la %ro+rama!i)n de

    rítmi!as !omo %odría ser el uso de %atrones# /o ue 4a!emos es multi%li!ar un @

  • 8/18/2019 Paradigma live Coding

    19/28

    le*endo los 'alores del arre+lo de %rin!i%io a -in#

    Femand.@r$Gmpulse.@r$1% 0 Fse$01234)6in!%%

    En el eem%lo anterior %odemos leer ue "emand utiliza un m%ulse#7r !omo trigger, el

    'alor 1 indi!a el tiem%o ue el im%ulso 'a a !amiar de no %ositi'o a %ositi'o, lue+o elar+umento 0 es el reset del "emand, * des%ués 'iene el oeto ue +enera la se!uen!ia, en

    este !aso "se# Adentro de "se se en!uentra una lista ordenada en un arre+lo * su

    dura!i)n, en este !aso in-, lo ue indi!a ue esa se!uen!ia se 'a a re%etir al in-inito# En su

    lu+ar %odríamos determinar la dura!i)n mediante el n(mero de 'e!es ue ueremos re%etir

    la se!uen!ia#

    Ha* di-erentes ti%os de +eneradores de se!uen!ia ue !amian el !om%ortamiento en

    la le!tura de los 'alores de la lista o arre+lo, %or eem%lo "rand tiene un !om%ortamiento

    aleatorio#

    // creamos una secuencia ba8o demanda con lectura de &alores aleatoria y la

    insertamos como control en el argumento de !rec de un tono

    Qa]Femand.@r$Gmpulse.@r$5% 0 Frand$100200300400)00006in!%%}

    -b'{[email protected]%}

    -b.play

    Jtra -orma de realizar se!uen!ia ao demanda es mediante el oeto "ut*, la

    di-eren!ia !on "emand es ue "ut* tiene un m%ulse in!luído en su %rimer ar+umento, otra

    di-eren!ia es ue en el %rimer ar+umento es %osile usar una se!uen!ia ao demanda !omo

    %uede ser un "se, !on lo !ual %odemos +enerar un !om%ortamiento rítmi!o#

    -d.play

    -c'{Futy.@r$10Fse$2004005006in!%%}

    -d'{SinOsc.ar$-c.@r00.)%}

    // e8emplo con una secuencia ba8o demanda en el primer argumento

    18

  • 8/18/2019 Paradigma live Coding

    20/28

    -d.play

    -c'{Futy.@r$Fse$1/41/26in!%0Fse$2004005006in!%%}

    -d'{SinOsc.ar$-c.@r00.)%}

    Ver eem%lo 11 en la !ar%eta de eem%los#

    elo% - cuanti5ación

    5odemos re-eren!iar las a!!iones realizadas dentro de un amiente 5ro* a un relo *

    a su 'ez !uantizar di!4as a!!iones, tener un relo nos sir'e %ara sin!ronizar los e'entos ue

    'amos %ro+ramado * es (til !uando traaamos !on e'entos rítmi!os#

    // establece un relo8 basado en el tiempo inicial de arranue

    p.cloc@ '

  • 8/18/2019 Paradigma live Coding

    21/28

    1atrones

    El tema de %atrones es am%lio, * aunue no es un tema e!lusi'o de 8T/i, estos

    %ueden usarse dentro del amiente 5ro*# Antes deemos e%li!ar ue*atterns

     es la -ormaen la ue %odemos %ro+ramar mediante %atrones en ;u%erCollider, de manera similar a

    %ro+ramar un se!uen!iador# /os *atterns tienen una am%lia 'ariedad de estru!turas ue nos

    a*udan a !om%oner de manera se!uen!ial#

    "entro de 5ro*;%a!e un %atr)n se %uede de!larar de la misma -orma ue un sinte, el

    %rimer %atr)n ue 'amos a e%li!ar es el 5ind !u*a -un!i)n es la de !ominar 'alores de

    distinos ti%os de %atrones en un solo -luo de datos# Es im%ortante men!ionar ue dentro de

    la estru!tura de *atterns *a eisten ar+umentos %reestale!idos, %or eem%lo la dura!i)n se

    es%e!i-i!a [dur * la am%litud [am%#

    -a.play

    // este código ace sonar una nota de un sinte preestablecido cada medio

    segundo

    -a'(bind$?dur 0.)%

    "es%ués %odemos a+re+ar nuestro %rimer %atr)n anidado, ue -ormar& una se!uen!ia

    de dura!iones, %ara este -in usamos 5se# Este %atr)n ne!esita de un arra* !on elementos

    ue indi!an los distintos tiem%os de dura!i)n, los !uales ser&n leídos uno %or uno de manera

    serial, des%ués de nuestro arra* indi!amos el n(mero de 'e!es ue ser& ee!utado, si

    ueremos ue esto su!eda de manera in-inita usamos el mensae in-#

    // patrón con un arreglo de ) elementos ue se e8ecuta de manera in!inita(se$1 2 3 4 )6 in!%

    // aplicado a nuestro e8emplo anterior

    -a' (bind$?dur (se$0.2) 0.2) 0.)6 in!%%

    21

  • 8/18/2019 Paradigma live Coding

    22/28

    // aplicamos (se a la duración y a la amplitud

    -a' (bind$?dur (se$0.2) 0.2) 0.)6 in!% ?amp (se$0.1 16in!%%

     

    5odemos a+re+ar azar !on el %atr)n 5rand, el !ual se estru!tura i+ual ue 5se soloue los 'alores no son leídos de manera se!uen!ial sino de -orma aleatoria#

    // aplicamos (se a la duración y a la amplitud y (rand a !recuencia

    -a'(bind$?dur (se$0.2) 0.2) 0.)6 in!% ?amp (se$0.1 16in!%

    ?!re (rand$2004005001006in!%%

    Ver eem%lo 13 en la !ar%eta de eem%los#

    Mensa%es so$re patrones - valores midi

    Métodos !omo #%*ramid * #mirror a+re+an a los %atrones un !om%ortamiento en el ue

    !onstru*en !adenas de 'alores a %artir de un modelo, %or eem%lo mirror re%ite los 'alores

    del arra* en re'ersa una 'ez ue estos terminaron * %*ramid !onstru*e una una se!uen!ia

    en -orma de %iramide#

    5ara ue estos a!tuen sore un %atr)n asta !olo!arlo des%ués del arra* ue esta

    dentro de un 5attern#

    -a'(bind$?dur 0.) ?!re (rand$2004005001006.mirrorin!%%

    El mensae #midi!%s nos %ermite traaar !on notas midi en lu+ar de 'alores de

    -re!uen!ia# Re!ordemos ue los 'alores de notas midi 'an de 0 a 12K, donde 0 !orres%onde

    al do !entral#

    -a'(bind$?dur 0.) ?!re (rand$024)++16.midicpsin!%%

    22

  • 8/18/2019 Paradigma live Coding

    23/28

    0ra$a%ando con nuestros sintes: '-nt64e7 

    El tema de ;*nt4"e- es !om%leo, estos %ueden usarse dentro de 5ro*;%a!e * es

    una manera m&s elaorada de traaar sonidos# Men!ionaré este tema %ero sin %ro-undizaren la !onstru!!i)n de ellos# El modelo de nuestro eem%lo %uede ser utilizado %ara 4a!er

    'aria!iones de su estru!tura#

    SyntFe!$?sinte{=out'0=

    Out.ar$out(an2.ar$SinOsc.ar$20000.1%*Jn&Ken.@r$Jn&.perc$0.10.1%doneLct

    ionM2%%%}%.add

    Limpiar el am$iente - salir de 1rox-'pace con .clear - .pop

    @na 'ez ue 4emos terminado nuestra sesi)n de live coding   o !uando al+una

    %ro+rama!i)n no resulto %odemos lim%iar el amiente 5ro* o una 'ariale es%e!í-i!a %ara lo

    ue utilizaremos el método #!lear, este método remue'e los sintes, el monitor, el +ru%o *

    liera el us#

    5or (ltimo, en !aso de uerer salir de nuestro entorno de %ro+rama!i)n 5ro*, asta

    !on de!larar #%o%#

    // limpia el contenido de la &ariable -a

    -a.clear

    // limpia todo el contenido del (ro#ySpace

    p.clear

    // podemos especi!icar en cuanto tiempo realice esta acción

    p.clear$5%

    // salimos del ambiente (ro#y

    p.pop

    23

  • 8/18/2019 Paradigma live Coding

    24/28

    Código - memoria: la clase (istor-

    /a idea de !onser'ar nuestra im%ro'isa!i)n %uede resultar interesante !uando usamos

    !)di+o, *a ue adem&s del resultado sonoro oser'ar el %ro!eso de %ro+rama!i)n %aso a%aso %uede ser'irnos de re-eren!ia %ara analizar nuestra %ro+rama!i)n o re%rodu!irla

    nue'amente#

    5ara realizar esta tarea %odemos usar Histor*, una !lase %ro+ramada %or Alerto de

    Cam%o, la !ual est& diseñada %ara re+istrar el desarrollo de una %ro+rama!i)n a lo lar+o de

    una línea de tiem%o, re+istrando !ada !amio ue realizamos sore nuestra %ro+rama!i)n#

    Histor* !omienza a +enerar un do!umento !uando le en'iamos el mensae #start * dea

    de +enerarlo !on #end#

    // comienDa a registrar el istorial

    Nistory.start

    // cada &eD ue declaremos una linea de código se registra una entrada en

    el documento

    -a.play

    -a'{SinOsc.ar$20000.1%}

    -a.release

    // paramos el registro

    Nistory.end

    5ara 'er el resultado usamos #do!ument, al ee!utar este mensae se are una nue'a

    'enta ue nos muestra la 4istoria#

    Nistory.document

    2(

  • 8/18/2019 Paradigma live Coding

    25/28

    El do!umento resultante nos indi!a el tiem%o en ue !ada nue'a línea de !)di+o -ue

    de!larada# Con #%la* %odemos re%rodu!ir nuestra ee!u!i)n * !on #sto% dear de re%rodu!irla#

    Nistory.play

    Nistory.stop

    5ara !onser'ar nuestra 4istoria de !ada %ro+rama!i)n es ne!esario sal'arlas, %ara lo

    !ual utilizamos #sa'e;tor*, indi!ando una ruta * asi+nando un nomre# /a ruta se indi!a entre

    %arentesis * !omillas * el nomre del do!umento lle'a la etensi)n #s!d

    Nistory.sa&eStory$/Psers/compu/Focumentos/istoria1.scdQ%

    5ara llamar una 4istoria de %ro+rama!i)n anterior utilizamos #load;tor*, indi!ando

    entre %arentesis * !omillas, la ruta donde +uardamos el do!umento#

    Nistory.loadStory$/Psers/compu/Focumentos/istoria1.scdQ%

    5ara !omenzar una nue'a 4istoria, %odemos orrar los datos ue se 4an uedado

    +uardados en el do!umento del 4istorial !on el mensae #!lear, de otra manera los nue'os

    datos !omenzar&n a +uardarse des%ués del re+istro de la (ltima %ro+rama!i)n#

    Nistory.clear

    @na -un!i)n (til de Histor* es la 'entana de 'isualiza!i)n, !on #ma7e>in se !rea esta

    'entana donde %odemos 'er !omo se 'a desarrollando nuestra %ro+rama!i)n en el -ormato

    de Histor*# Esta 'entana !ontiene 'arias otones ue nos %ermiten realizar al+unas a!!iones

    desde la 'entana !omo star6end#

    Nistory.ma@eRin

    Ver eem%lo 1I en la !ar%eta de eem%los#

    2/

  • 8/18/2019 Paradigma live Coding

    26/28

  • 8/18/2019 Paradigma live Coding

    27/28

    Ver eem%lo 1D en la !ar%eta de eem%los#

    8tros programas para Live Coding

    5or (ltimo resta men!ionar ue, la lirería 8T/i es una 4erramienta mu* %otente *

    -leile %ara la %r&!ti!a de live coding , en ;u%erCollider tamién se %uede %ro+ramar -uera

    del amiente 5ro* mediante el uso de 5de-, Tde- * Nde-#

     Asimismo, adem&s de ;u%erCollider otros %ro+ramas !omo C4u!B o Etem%ore son

    usados %ara %ro+ramar sonido# En el !aso de la %ro+rama!i)n de im&+enes $luus o

    5ro!essin+ son de los %ro+ramas m&s utilizados# 9ao el %aradi+ma de live patching   5ure

    "ata * Ma6M;5# n!luso el len+uae C a%li!ado a mi!ro!ontroladores#

    9i$liogra7a

    Collins, N#, M!/ean, A#, Ro4ur4uer, 8#, * >ard, A# 2003# Live coding in laptop performance#

    Camrid+e? Camrid+e @ni'ersit* 5ress#

    "e Cam%o, A#, Ro4r4uer, 8# * >eiser, R# 200I#  .lgorithms today: /otes on language

    design for 0ust in time programming #

    "od+e, C4# * A# 8erse, T# 1..K# Computer 1usic: ynthesis, composition and performance#

    ;!4irmer#

    M!/ean A# 2011#  .rtists-*rogrammers and *rogramming Languages for the .rts" Tesis

    do!toral#

  • 8/18/2019 Paradigma live Coding

    28/28

    Romero, E# * Villaseñor, H# 2012# 16sica por computadora# Méi!o, "$? Centro Multimedia#

    Ro4r4uer, 8#, "e Cam%o, A# * Jlo-sson, $# 2002# Just in 7ime *rogramming Lirary

    8ocumentation# ;u%erCollider "istriution 2002=2013#

    ;orensen, A# * R# 9ro:n, A# 200K# aa-cell in practice: an approach to musical live coding #

    nternational Com%uter Musi! Con-eren!e, Co%en4a+ue#

    >ilson, ;#, Cottle, "# * Collins, N# ed## 2012# 7he uperCollider 9oo # Massa!4usetts?T4e

    MT 5ress#

    Est& ora est& sueta a la li!en!ia Re!ono!imiento=NoComer!ial=Com%artir+ual 3#0 @n%orted de Creati'e

    Commons# 5ara 'er una !o%ia de esta li!en!ia, 'isite 4tt%?66!reati'e!ommons#or+6li!enses6*=n!=sa63#06#

    27


Recommended