[[File:Study_in_keith.ogv|alt=Example live coding performance|miniatura|200x200px|''A Study in Keith'' è una performance musicale di live coding con il software Impromptu eguitaeseguita da Andrew Sorensen.]] ▼
Il ''' Il live coding''', <ref>Collins, N., McLean, A., Rohrhuber, J. & Ward, A. (2003), "[http://akustik.hfbk.net/publications/LiveCodingInLaptopPerformance.pdf Live Coding in Laptop Performance] {{Webarchive|url=https://web.archive.org/web/20110811070509/http://akustik.hfbk.net/publications/LiveCodingInLaptopPerformance.pdf |date=11 agosto 2011 }}", ''Organised Sound'' 8(3): 321–30. {{Doi|10.1017/S135577180300030X}}</ref> a volte indicato anche con i termini '''on-the-fly programming''', <ref name="auto" >Wang G. & Cook P. (2004) [http:/ /soundlab.cs.princeton.edu/publications/on-the-fly_nime2004.pdf "On-the-fly Programming: Using Code as an Expressive Musical Instrument"], In ''Proceedings of the 2004 International Conference on New Interfaces for Musical Expression (NIME)'' (New York: NIME, 2004).</ref> '''just in time programming''' e '''conversational programming''', è una tecnica che rende l'attività di programmazione parte integrante del programma in esecuzione. <ref>Alan Blackwell, Alex McLean, James Noble, Jochen Otto, and Julian Rohrhuber, "Collaboration and learning through live coding (Dagstuhl Seminar 13382)", Dagstuhl Reports 3 (2014), no. 9, 130–168.</ref> ▼
▲[[File:Study_in_keith.ogv|alt=Example live coding performance|miniatura|200x200px|''A Study in Keith'' è una performance musicale di live coding con il software Impromptu eguita da Andrew Sorensen.]]
▲'''Il live coding''', <ref>Collins, N., McLean, A., Rohrhuber, J. & Ward, A. (2003), "[http://akustik.hfbk.net/publications/LiveCodingInLaptopPerformance.pdf Live Coding in Laptop Performance]", ''Organised Sound'' 8(3): 321–30. {{Doi|10.1017/S135577180300030X}}</ref> a volte indicato anche con i termini '''on-the-fly programming''', <ref name="auto">Wang G. & Cook P. (2004) [http://soundlab.cs.princeton.edu/publications/on-the-fly_nime2004.pdf "On-the-fly Programming: Using Code as an Expressive Musical Instrument"], In ''Proceedings of the 2004 International Conference on New Interfaces for Musical Expression (NIME)'' (New York: NIME, 2004).</ref> '''just in time programming''' e '''conversational programming''', è una tecnica che rende l'attività di programmazione parte integrante del programma in esecuzione. <ref>Alan Blackwell, Alex McLean, James Noble, Jochen Otto, and Julian Rohrhuber, "Collaboration and learning through live coding (Dagstuhl Seminar 13382)", Dagstuhl Reports 3 (2014), no. 9, 130–168.</ref>
Il live coding è maggiormente praticato come forma d'[[Arti performative|arte performativa]] e tecnica creativa. L'attività è caratterizzata dalla scrittura del [[codice sorgente]] dal vivo e sull'uso della programmazione interattiva in modo [[Improvvisazione|improvvisato.]] Il live coding viene spesso impegatoimpiegato per creare media digitali basati su suoni e immagini, nonché per gestire sistemi di illuminazione, [[danza]] e poesia <ref>Magnusson, T. (2013). [https://liveprogramming.github.io/2013/papers/thor.pdf The Threnoscope. A Musical Work for Live Coding Performance]. In Live 2013. First International Workshop on Live Programming.</ref> <ref>{{Cita news|url=http://news.bbc.co.uk/1/hi/technology/8221235.stm|titolo=Tech Know: Programming, meet music|editore=BBC News|data=2009-08-28|accesso=2010-03-25}}</ref>. Tuttavia, è maggiormente diffuso per la creazione di [[computer music]] o musica informatica a carattere improvvisativo, anche se possiamo trovarlo impegatoimpiegato anche in combinazione con la composizione algoritmica . <ref>Collins, N. (2003) "[https://wiki.brown.edu/confluence/download/attachments/74258672/Collins,+Generative+Music.pdf Generative Music and Laptop Performance] {{Webarchive|url=https://web.archive.org/web/20140514102233/https://wiki.brown.edu/confluence/download/attachments/74258672/Collins,+Generative+Music.pdf|data=2014-05-14}}", ''Contemporary Music Review'' 22(4):67–79.</ref> Tipicamente, il processo di scrittura del codice sorgente è reso visibile proiettando lo schermo del computer nello spazio del pubblico, mostrando quindi l'attività di continua ricerca compiuta dal performer. <ref>McLean, A., Griffiths, D., Collins, N., and Wiggins, G. (2010). [http://yaxu.org/visualisation-of-live-code/ Visualisation of live code] {{Webarchive|url=https://web.archive.org/web/20110321224717/http://yaxu.org/visualisation-of-live-code/ |date=21 marzo 2011 }}. In Electronic Visualisation and the Arts London 2010.</ref> Le tecniche di live coding sono impiegate anche al di fuori della performance dal vivo, come nella produzione di colonne sonore per film <ref>{{Cita libro|autore=Rohrhuber|nome=Julian|titolo=Artificial, Natural, Historical in Transdisciplinary Digital Art. Sound, Vision and the New Screen|url=http://akustik.hfbk.net/publications/rohrhuber_artificial_natural_historical.pdf|anno=2008|editore=Springer Berlin Heidelberg|pp=60–7060-70|accesso=1 agosto 2021|dataarchivio=11 agosto 2011|urlarchivio=https://web.archive.org/web/20110811070536/http://akustik.hfbk.net/publications/rohrhuber_artificial_natural_historical.pdf|urlmorto=sì}}</ref> o lavori audiovisivi per installazioni artistiche interattive. <ref>{{Cita web|url=http://www.creativeapplications.net/scripts/communion-cinder-scripts-events-special/}}</ref> Inoltre, i computer dei performer possono essere interconnessi grazie a una rete creadacreata ad-oc hoc, rendendo possibile la realizzazione di performance collaborative e l'interazione in gruppo.
Il o la '''live coder''' è la persona che esegue l'atto del live coding, solitamente "artisti o artiste che vogliono imparare a programmare, e programmatori che vogliono esprimersi" <ref>{{Cita web|url=http://www.britishscienceassociation.org/blog/live-coding-brings-programming-to-life-an-interview-with-alex-mac|titolo=Copia archiviata|accesso=1 agosto 2021|dataarchivio=4 marzo 2016|urlarchivio=https://web.archive.org/web/20160304142548/http://www.britishscienceassociation.org/blog/live-coding-brings-programming-to-life-an-interview-with-alex-mac|urlmorto=sì}}</ref> o, utilizzando i termini di Wang & Cook il "programmatore/esecutore/compositore" . <ref name="auto">Wang G. & Cook P. (2004) [http://soundlab.cs.princeton.edu/publications/on-the-fly_nime2004.pdf "On-the-fly Programming: Using Code as an Expressive Musical Instrument"], In ''Proceedings of the 2004 International Conference on New Interfaces for Musical Expression (NIME)'' (New York: NIME, 2004).</ref>
Il live coding è anche una tecnica sempre più popolare nelle lezioni e nelle conferenze relative alla programmazione ed è stata descritta come una "buona pratica" per le lezioni di informatica da Mark Guzdial . <ref>{{Cita web|url=http://computinged.wordpress.com/2011/08/01/what-students-get-wrong-when-building-computational-physics-models-in-python-cabellero-thesis-part-2/}}</ref>
== Tecniche ==
=== Rappresentazione e manipolazione del tempo ===
Le possibilità offerte dai media con un forte legame alla temporalità e l'interazione dal vivo con il codice hanno portato a tutta una serie di sviluppi innovativi nel campo dei linguaggi di programmazione. Attraverso l'incorporamento reciproco di sottosistemi imperativi e dichiarativi, all'interno del linguaggio di programmazione [[SuperCollider]] <ref>James McCartney (1996), SuperCollider: a new real time synthesis language, ICMC Proceedings, 1996.
</ref> è stata realizzata una libreria che consente di inserire dati ed istruzioni incomplete e provvisorie che possono essere poi riscritte e modificate in maniera processuale ovvero mentre sono in esecuzione. <ref>Julian Rohrhuber, Alberto de Campo, and Renate Wieser (2005), Algorithms today - Notes on Language Design for Just In Time Programming, Proceedings of International Computer Music Conference (Barcelona), ICMC, 2005, pp. 455–458.</ref>
Il linguaggio di programmazione [[ChucK]] ha introdotto il concetto della programmazione "fortemente temporizzata" nel 2002, incorporando una precisa scansione dei tempi all'interno del flusso di controllo, grazie all'uso di una sintassi concisa.
"Ricorsività temporale" era un termine coniato inizialmente in relazione all'ambiente di programmazione Impromptu. Gli elementi tecnici all'interno di un ambiente di programmazione continuano a risolvere i problemi di tempo attraverso l'uso di compressori e soluzioni basate sulla ricorsività, ma la sincronizzazione e la scansione temporale rimane comunque un problema significativo. Mentre la forma generale di una ripetizione, essendo qualsiasi ricorsività di funzione asincrona nel tempo, è disponibile per qualsiasi sistema guidato da eventi, Impromptu ha posto un'enfasi speciale su questo particolare modello di progettazione, <ref>Sorensen, A & Gardner, H (2010) "[http://eprints.qut.edu.au/55712/1/sorensen_ow_2010.pdf Programming With Time: Cyberphysical Programming In Impromptu, In proceedings of the ACM Splash Conference 2010]"</ref> rendendolo il pezzo centrale dell'architettura della concorrenza su quella piattaforma. La ricorsività temporale è stata ripetutamente utilizzata in [[SuperCollider]] e da allora è stata implementata anche nell'ambiente Fluxus .
Un altro approccio funzionale alla rappresentazione del tempo è mostrato nel caso del [[Domain-specific language|DSL]] Tidal, <ref>{{Cita libro|autore=McLean|nome=Alex|titolo=In proceedings of the 2nd ACM SIGPLAN International Workshop on Functional Art, Music, Modelling and Design|url=https://github.com/yaxu/Tidal/blob/master/doc/farm/farm.pdf?raw=true|anno=2014|città=Gothenburg|capitolo=Making programming languages to dance to: Live Coding with Tidal}}</ref> che rappresenta gli schemi temporali come combinatori che operano attraverso funzioni del tempo, simili alle tecniche di programmazione reattiva funzionale . <ref>{{Cita web|url=https://yaxu.org/tidal/|titolo=Copia archiviata|accesso=1 agosto 2021|dataarchivio=21 novembre 2015|urlarchivio=https://web.archive.org/web/20151121190435/http://yaxu.org/tidal/|urlmorto=sì}}</ref>
=== Programmazione multiutente e memoria condivisa ===
Per quanto riguarda il live coding, la programmazione multiutente si è sviluppata nel contesto della produzione musicale di gruppo, attraverso il lungo sviluppo del software ''Republic'' sviluppato e impiegato dai membri della band ''PowerBooks Unplugged'', un gruppo che si riunisce ed esibisce attraverso l'uso di una rete informatica. <ref>Rohrhuber, J., A. de Campo, R. Wieser, J.-K. van Kampen, E. Ho, and H. Hölzl (2007). [http://www.wertlos.org/articles/Purloined_letters.pdf Purloined letters and distributed persons] {{Webarchive|url=https://web.archive.org/web/20160303192832/http://www.wertlos.org/articles/Purloined_letters.pdf|data=2016-03-03}}. In Music in the Global Village Conference 2007.</ref> ''Republic'' è stato integrato all'interno del linguaggio SuperCollider e consente ai partecipanti di scrivere un codice in maniera collaborativa e dal vivo, attraverso una rete informatica. Sono stati fatti altri tentativi con linguaggi di programmazione diversi, come lo spazio di tuple distribuito utilizzato nel linguaggio Impromptu. <ref>Sorensen, A. (2010). [http://impromptu.moso.com.au/extras/icmc2010.pdf A distributed memory for networked livecoding performance] {{Webarchive|url=https://web.archive.org/web/20210226081451/http://impromptu.moso.com.au/extras/icmc2010.pdf |date=26 febbraio 2021 }}. In Proceedings of International Computer Music Conference 2010.</ref> Inoltre, i linguaggi Overtone, Impromptu ed Extempore supportano sessioni multiutente, in cui un numero qualsiasi di live coder può intervenire sul codice durante una determinata fase del processo di runtime. <ref>Sorensen, A. (2005). [http://eprints.qut.edu.au/31056/ Impromptu : an interactive programming environment for composition and performance, In proceedings of the Australasian Computer Music Conference 2005]</ref> La scrittura di codice in maniera condivisa può avvenire anche nella stessa stanza, attraverso una rete locale, oppure anche da postazioni remote accedendo, attraverso Internet, ad un server condiviso. Termini come laptop band, laptop orchestra, live coding collaborativo o live coding collettivo vengono utilizzati per inquadrare una pratica di programmazione dal vivo in rete sia attraverso un network locale sia da remoto attraverso l'uso di Internet.
== Organizzazioni collettive di live coder ==
TOPLAP è il nome dell'organizzazione informale costituita nel febbraio 2004 allo scopo di riunire le comunità che si erano formate in diverse parti del mondo attorno alla pratica del live coding. Il nome deriva da un acronimo derivante da termini variabili, ma sempre con le stesse lettere iniziali. Di seguito una lista dei termini più impiegati per comporre l'acronimo: (The|Temporary|Transnational|Terrestrial|Transdimensional) Organization for the (Promotion|Proliferation|Permanence|Purity) of Live (Algorithm|Audio|Art|Artistic) Programming)). <ref>Ward, A., Rohrhuber, J., Olofsson, F., McLean, A., Griffiths, D., Collins, N., and Alexander, A. (2004). [http://art.runme.org/1107861145-2780-0/livecoding.pdf Live algorithm programming and a temporary organisation for its promotion]. In Goriunova, O. and Shulgin, A., editors, read_me - Software Art and Cultures.</ref> L'organizzazione si è dotata anche di un manifesto, ovvero una dichiarazione di intenti dove si affermano alcuni principi che stanno alla base di una performance di live coding. In particolare, uno degli enunciati del manifesto afferma che i o le performer dovrebbero mostrare al pubblico gli schermi dei propri computer durante la loro esibizione. Questo enunciato afferma un principio di trasparenza della performance: ogni membro del pubblico deve essere consapevole che la performance alla quale sta assistendo avviene dal vivo e che il prodotto artistico è creato dal o dalla performer e non dal computer autonomamente. <ref>{{Cita web|url=http://toplap.org/wiki/ManifestoDraft|sito=Toplap.org}}</ref>
== Ricerca sul live coding ==
Diversi progetti e gruppi di ricerca sono stati creati per esplorare la tecnica del live coding, spesso adottando approcci interdisciplinari, creando ponti tra l'ambito umanistico e quello scientifico. Le prime esperienze di questo tipo, sia per potenziare lo sviluppo della tecnica sia per collocarla all'interno di uno schema teorico coerente, si sono avute dal 2005 al 2008 con il progetto chiamato "Interactivity in Hybrid Networks", finanziato dalla [[Deutsche Forschungsgemeinschaft|Fondazione tedesca per la ricerca]] .
Un'altra esperienza di ricerca è stata quella del Live Coding Research Network, supportato dai finanziamenti dell'Arts and Humanities Research Council del Regno Unito. Per due anni, a partire dal febbraio 2014, questo progetto ha organizzato una serie di attività come simposi e laboratori ed una conferenza internazionale, con cadenza annuale, chiamata International Conference on Live Coding (ICLC). <ref>{{Cita web|url=https://gtr.ukri.org/projects?ref=AH%2FL007266%2F1|sito=Gtr.ukri.org|dataaccesso=}}</ref>
A ottobre 2020 ha preso il via il progetto di ricerca [https://onthefly.space/ On-The-Fly], finanziato con risorse del programma [https://ec.europa.eu/culture/creative-europe Creative Europe] dell'[[Unione europea|Unione Europea]] e condotto da alcuni centri culturali basati in diverse città europee come: [https://hangar.org/en/ Hangar] di [[Barcellona]], [[Spagna]]; [https://creativecodingutrecht.nl/ Cretive Coding Utrecht], [[Paesi Bassi]]; [https://wiki.ljudmila.org/Main_Page Ljudmila], [[Lubiana]], [[Slovenia]]; [https://zkm.de/en ZKM], [[Karlsruhe]], [[Germania]]. Lo scopo del progetto è promuovere la pratica del live coding, diffondere la filosofia del software open-source, stimolare la ricerca scientifica nell'ambito del live coding e allargare il pubblico che assiste agli spettacoli o che fruisce di arte creata attraverso il live coding.
== Ambienti di live coding ==
* Chuck
* Extempore
* Pure Data
* Scratch
* [[Sonic Pi]]
* SuperCollider
* TidalCycles
== Live coder internazionali ==
* Joanne Armitage
* Renick Bell
* Antonio Roberts
== Altri riferimentiNote ==
<references/>
* [[Algorave]]: Modello di evento in cui la musica e/o immagini sono generate da algoritmi, solitamente scritti dal vivo dal performer
* [[Demoscene]]: Sottocultura dedicata alla programmazione di presentazioni audiovisive (demo)
* [[Programmazione esplorativa|Programmazione esplorativa:]] pratica di creare software come un modo per comprenderne i requisiti e la struttura
* [[Programmazione interattiva]]: pratica di programmazione che utilizza il live coding per lo sviluppo di software
* [[NIME]] - Ciclo di conferenze accademiche e performance artistiche incentrata sui progressi nella tecnologia musicale. Alcune volte le conferenze hanno ospitato presentazioni, performance e opere d'arte incentrate sul live coding. {{Reflist}}
== Riferimenti aggiuntivi ==
== Bibliografia ==
* Andrews, Robert. " [https://www.wired.com/science/discoveries/news/2006/07/71248 Real DJs Code Live]." ''Wired'' (online), 7 marzo 2006.
* Brown, Andrew R. " [http://journal.media-culture.org.au/0612/03-brown.php Code Jamming] ". ''M/C Journal'' 9/6 (dicembre 2006).
* Magnusson, Thor. " [http://www.mitpressjournals.org/doi/pdf/10.1162/COMJ_a_00216 Herding Cats: Observing Live Coding in the Wild] ". "Computer Music Journal" Primavera 2014, vol. 38, n. 1, pp. 8-16.
* Ramsay, Stefano. “ [http://vimeo.com/9790850 Algorithms are Thoughts, Chainsaws are Tools].” Critical Code Studies Workshop, March 2010. A short film on live coding and the TOPLAP manifesto.
* Sorensen, Andrew e Henry Gardner. " [http://impromptu.moso.com.au/extras/sorensen_ow_2010.pdf Programming With Time: Cyber-physical programming with Impromptu] {{Webarchive|url=https://web.archive.org/web/20210226081448/http://impromptu.moso.com.au/extras/sorensen_ow_2010.pdf |date=26 febbraio 2021 }}.” 22 September 2010.
* Di Prospero, Carolina. " [http://www.revistacontenido.com/wp-content/uploads/2015/02/art%C3%ADculo-3-%C2%B7-Carolina-Di-Prospero.pdf Live coding.] [http://www.revistacontenido.com/wp-content/uploads/2015/02/art%C3%ADculo-3-%C2%B7-Carolina-Di-Prospero.pdf Arte computacional en proceso] ." ''Contenido. Arte, Cultura y Ciencias Sociales'' 2015, vol. 5, pagg. 5-19.
* Mori, Giovanni. [http://www.aracneeditrice.it/index.php/pubblicazione.html?item=9788825532449 Live Coding? What does it mean? An Ethnographical Survey on an Innovative Improvisational Approach] {{Webarchive|url=https://web.archive.org/web/20210801141617/http://www.aracneeditrice.it/index.php/pubblicazione.html?item=9788825532449 |date=1 agosto 2021 }}. Aracne, Rome, 2020.
* ICLC 2015. " [https://zenodo.org/collection/user-iclc2015 Proceedings of the First International Conference on Live Coding]." Leeds, UK.
== LinkVoci esternicorrelate ==
* [[Algorave]]
* [[Demoscene]]
* [[NIME]]
* [[Programmazione esplorativa]]
* [[Programmazione interattiva]]
== Collegamenti esterni ==
* [http://toplap.org/ Sito ufficiale TOPLAP]
* [https://toplapitalia.gitlab.io/ Sito ufficiale del nodo italiano di TOPLAP]
* [https://web.archive.org/web/20130104152439/http://vivo2012.cenart.tv/index.html /*vivo*/ simposio sul live coding]
* [https://iclc.toplap.org/ Conferenza internazionale sul Live Coding]
{{Portale|informatica|musica}}
[[Categoria:Arte digitale]]
[[Categoria:Programmazione]]
[[Categoria:Computer music]]
[[Categoria:Musica sperimentale]]
[[Categoria:Category:Musica dal vivo]]
[[Categoria:Category:Algorave]]
[[Categoria:Category:Live Coding]]
[[Categoria:Improvvisazione musicale]]
|