Livecoding: Programació creativa en temps real

Introducció al livecoding

Definició

El livecoding és una forma d’art performatiu que consisteix principalment en l’escriptura de codi informàtic en entorns interactius i en temps real de forma improvisada. Encara que l’ús més comú del livecoding és la creació de música i visuals, també s’utilitza en altres pràctiques com per exemple la creació de coreografies.

L’essència del livecoding és experimental i es basa en la idea de mostrar al públic el procés creatiu, així com els errors i els canvis que es produeixen durant la creació. Aquesta pràctica permet als artistes i als espectadors explorar noves formes d’expressió artística i repensar la relació entre l’art i la tecnologia.

En una actuació de livecoding veurem com el livecoder escriu codi, i el veurem projectat, de manera que podrem seguir exactament el seu procés creatiu. Cada vegada que el livecoder executa el codi, n’escoltem o veiem el resultat. Seguidament, el livecoder començarà la següent iteració, modificant el codi existent o afegint-ne de nou, i el tornarà a executar.

L’actuació es converteix així en un diàleg entre el livecoder i l’ordinador (moltes vegades el propi livecoder no sap què passarà exactament en el moment que executi el codi que està escrivint), i l’audiència es converteix en testimoni d’aquest diàleg perquè pot veure com es construeix l’obra en temps real.

Com que és unapràctica experimental, els mateixos livecoders defugen de definir el livecoding, i constantment podem veure l’aparició de noves idees, tècniques, llenguatges i eines que amplien els límits del que es pot fer amb el livecoding.

La major part de llenguatges i eines que s’utilitzen en el livecoding han estat desenvolupades pels mateixos membres de la comunitat i no és estrany veure a un livecoder utilitzant un llenguatge que ell mateix ha creat (i que potser ningú més utilitza), en una versió altament inestable. Equivocar-se i saber continuar és un aspecte fonamental en la filosofia del livecoding, fins al punt que es considera un honor portar el sistema tant al límit que es pengi a mitja actuació, especialment si el livecoder és capaç de reiniciar-lo i continuar com si res hagués passat.

El livecoding és inclusiu i accessible a tothom: de la mateixa manera que sempre es mostra el codi que s’està escrivint, la pràctica totalitat de les eines utilitzades en livecoding són programari lliure (amb llicències com la GPL de GNU o la MIT) i estan disponibles gratuïtament.

El programari lliure és aquell la llicència del qual permet:

  • L’ús del programari per a qualsevol propòsit.

  • L’estudi del funcionament del programari i la seva adaptació a les necessitats de l’usuari.

  • La redistribució de còpies del programari.

  • La millora del programari i la distribució de les millores a la comunitat.

Tot i el seu enfocament aparentment tècnic, la comunitat de livecoding està formada per persones amb orígens i interessos molt diversos: programadors, músics, compositors, artistes visuals, il·lustradors, entre d’altres. La gran varietat d’eines i llenguatges existents, juntament amb una comunitat oberta i una documentació accessible, facilita que qualsevol persona amb un ordinador pugui practicar el livecoding, independentment de la seva experiència prèvia en programació.

Cal destacar també la diversitat de gènere i d’orígens que caracteritza la comunitat, un aspecte que s’ha treballat intensament en els darrers anys, especialment en comparació amb altres àmbits com el de la música electrònica. El livecoding constitueix avui un espai segur i inclusiu, on tothom és benvingut.

Origen

Encara que als anys 80 ja hi ha documentada alguna performance que podríem considerar livecoding, el livecoding apareix com a disciplina artística a finals dels 90 i principis dels 2000. En aquests moments és quan es comercialitzen els primers ordinadors personals prou potents com per permetre l’execució de codi on the fly.

Tradicionalment, un programador escriu un programa informàtic utilitzant un llenguatge de programació. Quan vol executar aquest programa per provar-ne el resultat, cal traduir-lo al llenguatge intern del processador, anomenat codi màquina. Aquest procés es coneix com a compilació. La compilació genera un fitxer directament executable. D’aquesta forma, un programa té per una banda el codi que ha escrit el programador (el codi font) i l’executable. Si el programador vol fer una modificacio al programa, ha d’editar el codi font i tornar a generar un nou executable.

Aquest procés és massa lent i laboriós per utilitzar-lo en una actuació en directe. En cert moment, apareixen els llenguatges de programació anomenats interpretats. En aquest tipus de llenguatges, el procés de traducció a codi màquina es realitza a la memòria de l’ordinador, partint directament del codi font. Això fa que el procés de modificació i prova del programa sigui molt més àgil.

Tota la tecnologia web es basa en llenguatge interpretats, com per exemple el JavaScript, que s’interpreta i s’executa a l’ordinador que visita una pàgina web.

Així i tot, en general, els entorns i llenguatges de programació no estan pensats per veure el resultat de l’execució del codi que escrivim al mateix temps que l’estem escrivint. Els sistemes que són capaços de reinterpretar el codi al mateix temps que ja s’està executant, i afectar així al resultat obtingut, sense interrupcions entre l’execució d’una versió i de la següent, s’anomenen on the fly, i són els que s’utilitzen en livecoding.

La consolidació del terme livecoding es produeix després que diversos artistes l’utilitzessin sense especificar-ne un nom, de vegades de forma independent i aïllada. Entre els primers esdeveniments de livecoding, que podríem considerar fundacionals tenim:

  • Les actuacions del duet Slub (Alex McLean i Adrian Ward) a principis dels 2000, a Anglaterra.

  • Les actuacions al local anomenat Public Life a Londres, on es reunien els practicants de la música generativa, precusora del livecoding.

En general, aquestes primeres actuacions ja marquen el caràcter underground, experimental i polític del moviment, així com el fet de no prendre’s a si mateixos massa seriosament.

El terme livecoding apareix de forma més o menys oficial al voltant de l’any 2000. El desenvolupament de capacitats de programació en temps real a SuperCollider, i el llançament del llenguatge de programació on the fly ChucK, així com les primeres performances de livecoders, conduiran a la creació de TOPLAP el febrer 2004.

SuperCollider és un entorn i llenguatge de programació per a la síntesi de so i la manipulació de senyals de so en temps real. Continua essent un dels llenguatges lliures més utilitzats per a qualsevol cosa que tingui a veure amb experimentació sonora. Diversos llenguatges de livecoding utilitzen SuperCollider com a motor de so.

SuperCollider és un llenguatge compilat, però permet l’execució en temps real mitjançant JIT (Just-In-Time Compilation), que és un sistema d’optimització que compila el codi a mesura que s’executa.

TOPLAP (Temporary Organisation for the Promotion of Live Algorithm Programming) és una comunitat de livecoders que es va crear amb l’objectiu de promoure la pràctica del livecoding i la creació d’una xarxa de livecoders. TOPLAP va ser fundada per Alex McLean, Adrian Ward, Nick Collins i Dave Griffiths, i aviat es van unir altres artistes i programadors interessats en la pràctica del livecoding.

Logo de Toplap
Figure 1. Logo de Toplap

Amb els anys, la comunitat de livecoders ha crescut i s’ha diversificat. Actualment, existeixen més de 30 nodes locals de TOPLAP repartits per tot el món. La comunitat al voltant de Barcelona, Toplap Barcelona, és una de les més nombroses i actives del món. També hi ha Toplap Madrid, que agrupa els livecoders d’aquesta zona.

El livecoding té una vessant acadèmica important. Per una banda, molts dels primers practicants i impulsors venen del món acadèmic. Per altra banda, tant la creació de llenguatges i sistemes nous, com el propi significat i implicacions de què vol dir en viu o de la relació de la notació amb el resultat ha despertat l’interès de nombrosos estudiosos. Un dels esdeveniments anuals més importants en el món del livecoding és l’ICLC (International Conference on Live Coding). Es tracta d’una trobada entre livecoders que combina la part més acadèmica (presentació de papers d’investigació) amb la part més performativa, amb actuacions diverses, incloent-hi una algorave. L’ICLC se celebra des de l’any 2015 a una ciutat diferent del món i el 2025 s’ha celebrat a Barcelona.

Una algorave és una festa amb música ballable generada en directe mitjançant algorismes.

Logo d’Algorave
Figure 2. Logo d’Algorave

Manifest

La comunitat inicial de TOPLAP va redactar un manifest que resumeix els valors i principis del livecoding. Aquest manifest està permanentment en estat "d’esborrany", cosa que fa referència a la pròpia naturalesa del livecoding, que és una pràctica en constant evolució.

D’aquest manifest i de la pràctica del livecoding se’n deriven aquestes característiques:

  • Escriure i modificar codi al moment (on the fly), utilitzant l’eina que més còmode ens resulti.

  • Mostrar el codi que s’està escrivint, en una pantalla o projector, per tal que l’audiència pugui seguir el procés creatiu.

  • No tenir por de l’error, sinó més aviat veure’l com una oportunitat per explorar noves possibilitats.

  • Passar-ho bé. El livecoding no és una pràctica exclusiva per programadors o hackers, està pensat per passar-ho bé.

Exemples

Aquest és un petit recopilatori d’alguns vídeos que m’han semblat interessants perquè mostren diferents vessants del livecoding.

L’Alex McLean (yaxu) és probablement una de les persones més conegudes dins del món de livecoding. Membre de slub, cofundador de toplap, i creador del llenguatge TidalCycles (predecessor de Strudel, que veurem al curs). En aquest vídeo, l’Alex fa una demostració d’un nou desenvolupament en TidalCycles, que consisteix en mostrar visualment quina part del codi s’està executant a cada moment:

Alex McLean fent una demostració d’un nou desenvolupament a TidalCycles el 2020 (amb crash inclòs)

Des de fa uns anys, durant els solsticis, la comunitat de livecoding fa streamings maratonians (24 hores o més), on membres de la comunitat mostren en què estan treballant. En aquest vídeo, na pulu ens mostra un nou llenguatge de livecoding basat en PHP. Al canal eulerroom de youtube es recopilen molts dels vídeos de la comunitat de livecoding, entre ells totes les actuacions dels solsticis.

Pulu durant l’streaming del solstici d’hivern de 2024

Joanne Armitage (música) i Olivia Jack (ojack, visuals) en una actuació from scratch al ICLC 2017 a Mèxic. Un from scratch és una actuació d’improvisació en què els participants comencen amb una pantalla en blanc i tenen 9 minuts per crear una peça. Aquest vídeo és un bon exemple de com es pot combinar la música i els visuals en una actuació de livecoding. Olivia Jack és la creadora del llenguatge de visuals Hydra, que veurem al curs.

Actuació from scratch de Joanne Armitage i Olivia Jack al ICLC 2017

Na Lina Bautista (linalab) i en Timo Hoogland col·laboren per crear la música en aquesta algorave a Barcelona. Utilitzen l’entorn col·laboratiu flok, que veurem al curs, i el llenguatge Mercury, que ha creat en Timo. En Roger Pibernat (Loopier) fa els visuals amb animatron, un llenguatge de visuals que ell mateix ha creat per combinar el livecoding amb les seves il·lustracions.

Lina Bautista, Timo Hoogland i Roger Pibernat al festival VIU 2023

Algunes eines destacades

A awesome livecoding trobareu una extensa llista de llenguatges i eines relacionades amb el livecoding. En aquest apartat en destacaré algunes que poden ser del nostre interès.

  • TidalCycles és un llenguatge de livecoding per a la creació de música en temps real. Utilitza supercollider com a motor de so, i requereix la seva instal·lació a l’ordinador (la plataforma col·laborativa Estuary en té una versió reduïda anomenada minitidal que es pot executar en web). Tot i la gran quantitat d’eines diferents que existeixen, la facilitat que dona tidal per crear patrons complexos i la seva comunitat fan que sigui un dels llenguatges més utilitzats en livecoding.

  • Strudel és un port de TidalCycles a JavaScript. És un llenguatge d’àudio executable en web, sense cap mena d’instal·lació, amb un sistema de patrons que permet crear ritmes i melodies complexos molt ràpidament. La combinació de potència amb facilitat d’ús fa que sigui una eina ideal per a la docència.

  • Hydra és un llenguatge de visuals en temps real inspirat ens els sintetitzadors modulars. També està construït per sobre de JavaScript, cosa que fa que es pugui executar en una web sense instal·lacions addicionals. La seva facilitat d’ús l’ha convertit en el que probablament sigui el llenguatge de visuals més utilitzat en livecoding.

  • Mercury és un llenguatge amb sintaxi pròpia que està pensat per ser fàcil d’aprendre. Té dues versions, una en web i una altra que treballa sobre Max8 (un programa de música amb llicència privativa). La seva sintaxi i forma de pensar és adequada per a persones que provenen del món de la música. Aquest curs es fa en Strudel per ser una solució més consolidada i tenir una major comunitat d’usuaris, però Mercury ha estat l’altra opció que s’ha considerat.

  • Punctual és un llenguatge amb capacitats tant d’àudio (centrat en drons i efectes sonors), i visuals creat per en David Ogborn. També es pot executar directament a la web, i està pensant específicament per entorns col·laboratius. Té una sintaxi i forma de pensar molt orientada al pensament matemàtic i pot ser interessant per a mostrar conceptes matemàtics de forma visual. Tot i que personalment és el meu llenguatge de visuals preferit, la seva relativa complexitat ha fet que em decanti per Hydra per aquest curs.

  • Flok és un entorn col·laboratiu amb suport per diversos llenguatges (entre ells Strudel, Hydra, Mercury i Punctual). Permet que diverses persones puguin programar al mateix temps, fins i tot modificant el mateix codi.

  • Estuary és una plataforma col·laborativa amb suport per un conjunt diferent de llenguatges (minitidal, punctual, suport parcial per hydra, entre d’altres). Estuary ofereix algunes característiques avançades interessants com la sincronització de tempo entre diferents llenguatges, i un interpret propi que impedeix que el codi d’un participant es pugui executar directament en els ordinadors dels altres participants (ideal si volem fer jams col·laboratives amb persones a qui no coneixem).

  • Sonic Pi és una eina de creació musical mitjançant codi inspirada en el llenguatge de programació Ruby i pensada per a l’ensenyament de la programació i la música. Sonic Pi utilitza un enfocament més clàssic que els altres llenguatges que hem comentat, en el sentit que utilitza estructures de programació com bucles i condicions de forma explícita.

Livecoding a la docència

El livecoding té diversos aspectes que el fan adequat per a la docència:

  • La seva naturalesa experimental i improvisada permet que els alumnes puguin construir una obra artística en temps real.

  • La seva relació amb la tecnologia fa que sigui una eina ideal per a introduir conceptes de programació de forma més amena que les tradicionals classes introductòries de programació.

  • L’acceptació de l’error facilita la creació d’un ambient de treball on els alumnes es sentin còmodes per experimentar i equivocar-se.

  • La pràctica col·laborativa permet que alumnes amb diferents nivells i formes d’aprendre puguin treballar conjuntament.

  • Es troba a la intersecció de múltiples disciplines, i el podem utilitzar en diverses matèries:

    • Música: treballant conceptes de ritme, melodia, harmonia, síntesi de so…​

    • Art: treballant conceptes de color, forma, moviment…​

    • Matemàtiques: treballant conceptes de geometria, trigonometria…​

    • Informàtica/tecnologia: introducció a la programació, gràfics per ordinador…​