Live coding

1,102 views

Published on

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,102
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
10
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Live coding

  1. 1. Live codingEsej pro předmět Umění, kultura a nová médiaStudia nových médií, FF UK Jindřich Mynarz <mynarzjindrich@gmail.com>"Music is math." - Boards of CanadaÚvodLive coding je hudební improvizace pomocí popisu hudby v kódu. Objevuje se taképojmenování "on-the-fly" nebo "just-in-time" programování (Sorensen, 2007). Tatooznačení zdůrazňují, že umělecká forma live codingu je pomíjivá a vázaná na dobukonkrétní performance. Spíše než o transkripci již dříve připravené hudby jde okonstruktivní proces. Improvizace v live codingu je svou spontánností příbuzná free-stylev hip hopu.Live coding je umělecká forma naprosto závislá na existenci počítačů. Kód je používánjako nová forma uměleckého vyjádření. Souvisí s tím kult programování a estetika kódu,která si zakládá na elegantním a chytře navržených programech.S náhodou často v live codingu využívanou se pojí glitch estetika, jejíž zájempředstavuje uplatnění ruchů, lupanců a dalších chybových zvuků do hudebního projevu.Podobně lze v live codingu nalézat spojitosti s konceptuálním uměním a serialismem,musique concrète, minimalismem, noisem a elektronickou taneční hudbou (Brown,2006).Některé hlavní myšlenky live codingu jsou z formulovány v manifestu sdružení TOPLAP(TOPLAP, 2010): • Programy jsou nástroje, které mohou samy sebe pozměnit. • Tmářství je nebezpečné. Ukažte nám vaše obrazovky. • Live coding není o nástrojích. Algoritmy jsou myšlenky. Motorové pily jsou nástroje. To je důvod, proč postřehnout algoritmy je někdy obtížnější než motorové pily. • Kód by měl být viděn i slyšen. • Laické publikum nepotřebuje pochopit kód, aby jej mohlo ocenit; podobně jako není zapotřebí vědět, jak se hraje na kytaru, abychom mohli ocenit vystoupení kytaristy.Algoritmický zápisNaproti klasické hudbě, která popisuje hudbu v notovém zápisu, využívá live codingpopis hudby pomocí algoritmů vyjádřených programovacími jazyky. Jde o výrazněflexibilnější a přesnější způsob zápisu hudby, který umožňuje symbolickou manipulaci shudebními strukturami.
  2. 2. Médiem live codingu je kód reprezentující výpočetní procesy. Algoritmická notacepředstavuje bezprostřední vazbu na elementární procesy vytvářející zvuk. Tímtozpůsobem může dojít k intimně blízkému spojení s médiem, které se mnohdy ztrácí vsoustředění na interakci s hudebními nástroji.Improvizace proto probíhá na úrovni algoritmů. V případě algoritmického vyjádření vreálném čase je důležitá jeho expresivita, protože vystoupení jsou podmíněna nutnostívypsat celý program, jenž může obsahovat mnoho řádků kódu. Kvůli požadavku navykonávání v reálném čase musí být kód efektivní a výkonný.Hudebním interpretem live codingu je počítač, který kód čte podobně jako klavírista čtenotový zápis. Neustále se měnící kód je během performance opakovaně interpretovánpočítačem. Zároveň "se kód vykonáváná v mysli programátora" (Collins, 2004).Jelikož je algoritmický zápis použit jak k popisu hudby, tak k její instrumentaci aprovedení, dochází u live codingu k mazání rozdílu mezi tvůrcem hudebního nástroje,jeho uživatelem, a hudebním skladatelem. Mnoho umělců si vytváří vlastní software prolive codingové performance. Tvorba software se může stát součástí samotnéhovystoupení. Stejně tak dochází ke smazávání hranicemi mezi hudební syntézou akompozicí, programem (nástrojem) a hudebním zápisem (textovou notací algoritmu).Mizí rozdělení mezi programem a daty, protože algoritmus může vystupovat jak v řídícíroli, tak roli řízení.Podoba live codingu souvisí s novou dynamickou kulturou agilního (nebo extrémního)programování spojenou s rozšířením využívání interpretovaných programovacích jazyků.Předchozí proces vytváření software zahrnoval fáze úprav kódu, jeho kompilace a jehospuštění. Tradiční způsob hudební produkce zahrnuje analogicky vymyšlení hudebníhotématu, jeho "kompilaci" zápisem do not a jeho přehrání ("spuštění") interprety. Livecoding podobně jako metodika agilního programování tyto fáze slučuje do jedinéhoprocesu, který umožňuje najednou projít celým cyklem.Algoritmické nástrojeHudebními nástroji live codingu jsou pravděpodobnost, lineárnost, periodicita, teoriemnožin a rekurze (Sorensen, 2007). Kód implementovaný k generování hudby jeobvykle vytvářen s modulární strukturou, která dovoluje kombinování relativněsamostatných částí kódu, reprezentujících různé hudební vzory. V algoritmech jsouvyužívány například polynomy vyšších řádů, periodické funkce, kombinatorika přivariacích akordických progresí, nebo modulární aritmetika. Využívány jsou jednoduchépravděpodobnostní funkce, jejichž výstupní hodnoty vytvářejí lineární nebo Gaussovudistribuci. Ve funkcionálně orientovaném live codingu jsou hojně uplatňoványcallbackové funkce. Kompozice kódu je v případě live codingu závislá na čase, umožňujetento způsob volání funkce odložit o přesně stanovenou dobu. Dalším obvyklým vzoremje mapování generativních funkcí na manipulaci parametru (např. nízkofrekvenčníoscilátory - LFO).Generativní algoritmy používané v live codingu mohou zasahovat do oblasti evolučníhoprogramování. Generativní umění zahrnuje určitou míru autonomie nástroje, která seprojevuje omezenou nezávislostí na umělci. Autonomie může kreativním způsobemovlivnit výsledek tvorby. Generativní procesy představují částečnou negaci intecionality,jsou nedeterministické a ne zcela předvídatelné. Výsledkem mohou být samo-organizující se algoritmické struktury, které jsou schopné samy sebe pozměnit a vyvíjetse do nových forem.V live codingu jsou vytvářeny nové globální formy (morfogeneze), manifestované vevýsledném zvuku, na základě lokálních vlivů (Blackwell, 2007). Objevuje se řízenípomocí zpětné vazby a velmi často jsou používány pseudo-náhodné generátory, které do
  3. 3. syntézy zvuku zavádějí prvek variability. Náhoda zavádí prvek neočekávanosti dohudební struktury, a proto jsou live codingové hudební improvizace nedeterministické.Toto se objevuje v postupu, který spočívá v nahrazení určitého algoritmu generátoremnáhodných čísel. Poté si umělec klade otázku, zdali tímto způsobem došlo ke zlepšenínebo zhoršení kvality výstupního zvuku, a zdali může být deterministicky určený zvuknahrazen náhodným šumem.HistorieLive coding ve své dnešní podobě vzešel z elektronické klubové scény na začátku 90. let20. století. Kořeny live codingu však sahají hlouběji do historie. Jeho rozvoj je spjat svývojem výpočetní techniky. První live codingová vystoupení začala být možná od 70. let20. století, kdy se mikropočítače staly natolik přenosné, aby mohly být použity napódiích při hudebních vystoupeních.Jedno z prvních live codingových vystoupení je připisováno Ronovi Kuivilovi, které seodehrálo v Amsterdamu roku 1985 s využitím jazyka Formula (Zmölnig, 2007). V 80.letech se objevuje neformální organizace The League of Automatic Composers (pozdějiznámá jako The Hub). Později vznikla také iniciativa TOPLAP, což je organizacededikovaná live codingu.Komunita okolo live codingu se postupně vyčlenila z diskusních skupin net.art. Spříbuznými uměleckými směry ji však pojí mnoho vazeb, například se skupinamizabývajícími se VJingem. Live codingová vystoupení bývají často kombinována shudebními vizualizacemi vytvářenými VJs.V začátcích live codingu byly používány hlavně programovací jazyky LISP a Forth.Později se jejich okruh rozšířil na další a objevily se nástroje napsané například v 1Perlu nebo REALBasicu, a dokonce byly vytvořeny jazyky specificky určené pro hudební 2syntézu . Prostředky k realizaci live codingových vystoupení mohou být jednak přidanémodifikace existujících jazyků (např. Perl), využívání frameworků nebo uplatněníkompletních integrovaných prostředí vytvořených přímo pro tento účel (ChucK,Impromptu).Začátek 90. let lze považovat za temné období live codingu, protože se pozornostumělců přesunula spíše ke grafickému programování a hudební produkci prostřednictvímmanipulací "patchů" (např. Max/MSP). S rostoucím výpočetním výkonem a rozšířeníminterpretovaných programovacích jazyků se však v průběhu 90. let stala real-time livecodingová vystoupení schůdnými. K obnovení zájmu o live coding došlo v roce 2000, kdyzačalo fungovat duo SLUB tvořené Adrianem Wardem a Alexem McCleanem, používajícíprostředí Pure Events vlastnoručně napsané v Perlu a REALBasicu. Přibližně ve stejnédobě zkouší Julian Rohrhuber první experimenty se SuperColliderem. Jeho modifikaceumožňuje používání tohoto doménově-specifického programovacího jazyka určeného prosyntetickou tvorbu zvuku pro živá vystoupení. Z nejnovějšího software lze zmínit livecodingové prostředí Impromptu založené na programovacím jazyce Scheme. Obsahuječásti zodpovědné za syntézu zvuku, časování zvukových událostí, interpreterfunkcionálně orientovaného jazyka Scheme a integrované vývojové prostředí (IDE).VystoupeníPrioritou live codingu je proces, který probíhá během živého vystoupení. Pro zdůrazněníbudování hudební struktury výhradně v průběhu vystoupení se vystoupení začínají sprázdnou obrazovkou textového editoru. Proto je obvyklé, že jejich začátek je provázen1. např. prostředí pro generativní hudební syntézu feedback.pl -http://www.toplap.org/index.php/Hacking_perl_in_nightclubs2. např. SuperCollider
  4. 4. tichem, zatímco umělec sestavuje základní bloky kódu. Komplexita kódu je budovánaprůběžně během vystoupení.Živé vystoupení klade vysoké nároky na soustředění hudebníka. Komplexita kódunarůstající během vystoupení postupně "rozpouští" programátorovu pozornost. Ten musímít rovněž přehled o množství paralelně probíhajících procesů. Komplexita musí býtvyvážena i ve výsledné hudbě, kde je třeba zachovat rovnováhu mezi jednoduchostí asložitostí. Výrazové prostředky live codingu pro zjednodušení hudby jsou opakování anáhodnost. Komplexitu je možné odstínit zvýšením úrovně abstrakce použitím jižexistujícího kódu. Avšak vždy musí být používání předpřipravených knihoven vyváženo sohledem na zachování transparentnosti kódu. Přestože programovací abstrakce jsouvelmi důležité z hlediska efektivního zápisu kódu, odstínění programátora od nízko-úrovňové konstrukce digitálního zvuku jej odděluje od přímého spojení s médiem kódu.Jedním z diskutovaných problémů live codingu je schopnost provést během vystoupenínáhlé změny. Většinou se tyto hudební kompozice postupně vyvíjejí s tím, jak jepostupně budován kód, jenž je generuje. Náhlé změny je obtížné připravit a v textovémrozhraní realizovat.Praktická vystoupení vyžadují dokonalou obeznámenost s nástroji, aby se umělec mohlplně soustředit na hudební stránku improvizace. Při hluboké znalosti programovacíhojazyka se programování může stát intuitivním prostředkem pro vyjádření hudebnípředstavivosti.Důkladná znalost programovacího jazyka je nutná zvláště v případě interpretovanýchprogramovacích jazyků. S těmi se pojí riziko pádu programu a následujícího náhléhoukončení hudební produkce, pokud je do kódu vnesena chyba. Během živéhoprogramování se umělec musí obejít bez testování a debugování.Proto jsou některá live codingová prostředí tolerantní vůči drobným překlepům achybám. Integrované prostředí (IDE) pro live coding může umělci nabízet pomocnéfunkce jako je automatické dokončování, kontrola syntaxe nebo využívání útržků kódujako základních stavebních bloků algoritmické kompozice.Umělci mohou využívat předpřipravené části kódu ve formě funkcí nebo jejich souborůve formě knihoven. Tento postup však zároveň snižuje schopnost umělce kód v reálnémčase pozměnit. Je to právě možnost přímé interakce s kódem, která se tak ztrácí. S tímsouvisí požadavek live codingu je transparentnost předváděného kódu. Namísto funkcevolané referencí jejího pojmenování se preferuje používat spíše celý její rozpis, protožetak je k dispozici celé její tělo k modifikaci. Přestože tak narůstá komplexita algoritmu apřispívá to k vyšší pravděpodobnosti výskytu chyb.Jednou z klíčových konvencí live codingu je promítání obrazovky se zdrojovým kódem,který je zodpovědný za aktuálně probíhající zvuky. Tak mohou posluchači kód explicitněvnímat. A live coding se tak podle Juliana Rohrhubera stává "aktem veřejnéhousuzování" (Brown, 2006).Live coding je možné vidět jako reakci na pasivitu ve vystoupení elektronickýchhudebníků. Sledovat hudebníka za laptopem není z vizuálního hlediska příliš zajímavé,protože posluchači nemají ponětí o tom, jak jeho chování ovlivňuje právě produkovanou 3hudbu. Běžný software pro hudební produkci vypadá pro živé vystoupení nezajímavě.Elektronická hudba odstraňuje z hudebního vystoupení kinetický aspekt, kdy viditelnáakce hudebníka má slyšitelnou odezvu (Andrews, 2006).Na rozdíl od běžných vystoupení elektronických hudebníků, kdy příčinná vazba mezijednáním interpreta a zvukovým efektem není zjevná, a lze si jí odvodit pouze nepřímo,3. např. Reason, Ableton Live
  5. 5. si lze díky projekci zdrojového kódu vytvořit přímou vazbu mezi změnami kódu azměnami v hudbě, a tak objevovat korespondující změny. Přestože v mnoha případechnení obecenstvo schopno kódu plně porozumět, může pro něj být zajímavé sledovat jehoúpravy a snažit se je navázat na změny ve zvuku. Podobně není zapotřebí umět hrát nakytaru, abychom mohli ocenit vystoupení profesionálního kytaristy.Umělci mohou toto publiku usnadnit například pomocí sugestivního pojmenovávánífunkcí (jako "outrageous-kick" nebo "grunge-it-up") pro komunikování vlivu kódu nazvuk (Sorensen, 2007). Podobně zvýrazňovací funkcionalita textového editoru (blikajícíkurzor, přebarvování bloků kódu) umožňuje posluchačům vidět, kde se právě nacházíhudebníkova pozornost.Při vystoupeních se uplatňuje metoda párového programování, kdy první programátorkód píše, zatímco druhý jej sleduje a snaží se opravit případné chyby. Při kolaborativnímlive codingu však nejsou role spoluhráčů příliš striktně vymezeny. Můžou se střídat vupravování na různých částech kódu, a tak hrát na různé "nástroje". V klasické hudbě sek takové míře flexibility nelze dostat. Například v duu flétnisty a klavíristy nikdy nebudoučlenové hrát na nástroj spoluhráče. Naproti kolaborativnímu programování existuje taképrogramování kompetitivní, které je vzdáleně přibuzné rapovým battles, kdy se jedenumělec snaží překonat výkon druhého.Součástí vystoupení může být předvedení dokonalého ovládnutí textového rozhraníexcelentními schopnostmi psaní. Textové rozhraní je jedním z hlavních rozdílů oprotitvorbě hudby pomocí grafických "patchů" (např. Max/MSP, PureData). Klávesnice tvořícítoto rozhraní může být použita dvojím způsobem. Jednak pro zápis hudební "partitury",ale také podobně jako klaviatura pro přímé spouštění zvukových událostí.Část live codingové komunity je naopak pro pomalé psaní kódu - "slow codemovement" - podobně jako existuje "slow food movement", které se vymezuje proti fastfoodu. Julian Rohrhuber tento způsob vystupování popsal jako "live coding forairports" (citace estetiky ambientní hudby označené Brianem Eno jako "music forairports") (Collins, 2007).ZávěrLive coding v sobě obsahuje různé úrovně přístupu k tvorbě hudbě: od zvukové syntézyna jednom konci, přes strukturální kompozici a hudební tektoniku na konci druhém. Máformu improvizace; hudebního jamování, kdy dochází k vytváření digitálního obsahu, cožmůže zahrnovat remixování částí kultury. Zároveň se pojí s řemeslem vytvářeníhudebních nástrojů.Využití počítačů při kreativních činnostech je možné díky tomu, že o nich uvažujeme jakoo nástrojích pro manipulaci s abstraktními strukturami. Výhodou hudby zapsané v kóduse zakládají na tom, že jde o digitální informaci, takže existuje možnost ji znovu použít aupravit. Může být uložena, zopakována, zpětně analyzována, nebo sdílena s ostatními(Sorensen, 2009).Použité zdroje 1. ALEXANDER, Amy [et al.]. Live algorithm programming and a temporary organisation for its promotion. In Proceedings of the Read_Me Software Art and Cultures Conference. Aarhus, August 23-24, 2004. Dostupný také z WWW: <http://www.toplap.org/index.php/Read_me_paper>. 2. ANDREWS, Robert. Real DJs code live. Wired [online]. 7.3. 2006 [cit. 2010-06-17]. Dostupný z WWW: <http://www.wired.com/science/discoveries/ news/2006/07/71248>.
  6. 6. 3. ARMITAGE, Tom. Making music with live computer code. Wired [online]. 24 September 2009 [cit. 2010-06-17]. Dostupný z WWW: <http://www.wired.co.uk/news/archive/2009-09/25/making-music-with-live- computer-code->. 4. BLACKWELL, Tim. Swarming and music. In Evolutionary computer music. London : Springer, 2007, s. 194--217. ISBN 978-1-84628-599-8 (print). DOI 10.1007/ 978-1-84628-600-1_9. 5. BROWN, Andrew R. Code jamming. M/C Journal [online]. Dec 2006 [cit. 2010-06-17], vol. 9, iss. 6. Dostupný z WWW: <http://journal.media- culture.org.au/0612/03-brown.php>. ISSN 1441-2616. 6. COLLINS, Nick [et al.]. Live coding in laptop performance. Organised Sound. 2004, vol. 8, no. 3, s. 321-330. ISSN 1355-7718. DOI 10.1017/ S135577180300030X. 7. COLLINS, Nick. Live coding practice. In Proceedings of the International Conference on New Interfaces for Musical Expression, June 6-10, 2007. New York, 2007. 8. RAMSAY, Stephen. Algorithms are thoughts, chainsaws are tools [online]. February 27, 2010 [cit. 2010-06-18]. Dostupný z WWW: <http://vimeo.com/ 9790850>. 9. SORENSEN, Andrew. Impromptu : an interactive programming environment for composition and performance. In Proceedings of the Australasian Computer Music Conference. Brisbane : ACMA, 2005, s. 149-153.10. SORENSEN, Andrew; BROWN, Andrew R. aa-cell in practice : an approach to musical live coding. In JENSEN, K.; SERAFIN, S. (eds). Proceedings of the International Computer Music Conference. Copenhagen, Denmark, 27-31 August 2007. Tampere : Suvisoft, 2007. Dostupný také z WWW: <http://impromptu.moso.com.au/extras/aa-cell-icmc07.pdf>. ISBN 0-9713192-5-1.11. SORENSEN, Andrew; BROWN, Andrew R. Interacting with generative music through live coding. Contemporary Music Review. Feb 2009, vol. 28, iss. 1, s. 17-29. ISSN 0749-4467. DOI 10.1080/07494460802663991.12. TOPLAP. Manifesto : draft [online]. Last modified 2010-02-18 [cit. 2010-06-17]. Dostupný z WWW: <http://www.toplap.org/index.php/ManifestoDraft>.13. WHITELAW, Mitchel. Data, code & performance [online]. 21.9. 2006. Dostupný z WWW: <http://teemingvoid.blogspot.com/2006/09/data-code- performance.html>.14. ZMÖLNIG, Johannes; ECKEL, Gerhard. Live coding : an overview. In JENSEN, K.; SERAFIN, S. (eds). Proceedings of the International Computer Music Conference, Copenhagen. Tampere : Suvisoft, 2007. ISBN 0-9713192-5-1.

×