Content deleted Content added
Fix dead links |
|||
(10 intermediate revisions by 9 users not shown) | |||
Line 5:
'''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> sometimes referred to as '''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''' and '''conversational programming''', makes programming an integral part of the running program.<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>
It is most prominent as a [[performing arts]] form and a [[creativity technique]] centred upon the writing of [[source code]] and the use of [[interactive programming]] in an [[improvisation|improvised]] way. Live coding is often used to create sound and image based [[digital media]], as well as light systems, improvised [[dance]] and poetry,<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>{{cite news|url=http://news.bbc.co.uk/1/hi/technology/8221235.stm|title= Tech Know: Programming, meet music |publisher=BBC News|accessdate=2010-03-25 | date=2009-08-28}}</ref> though is particularly prevalent in [[computer music]] usually as improvisation, although it could be combined with [[algorithmic composition]].<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 |date=2014-05-14 }}", ''Contemporary Music Review'' 22(4):67–79.</ref> Typically, the process of writing source code is made visible by projecting the computer screen in the audience space, with ways of visualising the code an area of active research.<ref>McLean, A., Griffiths, D., Collins, N., and Wiggins, G. (2010). [http://yaxu.org/visualisation-of-live-code/ Visualisation of live code]. In Electronic Visualisation and the Arts London 2010.</ref> Live coding techniques are also employed outside of performance, such as in producing sound for film<ref>{{cite book|last=Rohrhuber|first=Julian|title=Artificial, Natural, Historical in Transdisciplinary Digital Art. Sound, Vision and the New Screen|year=2008|publisher=Springer Berlin Heidelberg|pages=60–70|url=http://akustik.hfbk.net/publications/rohrhuber_artificial_natural_historical.pdf}}</ref> or audiovisual work for interactive art installations.<ref>{{cite web|title=Communion by Universal Everything and Field.io: interview|date=24 May 2011 |url=http://www.creativeapplications.net/scripts/communion-cinder-scripts-events-special/|accessdate=5 February 2013}}</ref> Also, the interconnection between computers makes possible to realize this practice networked in group.
The figure of '''live coder''' is who performs the act of live coding, usually "artists who want to learn to code, and coders who want to express themselves"<ref>{{cite web|last=Bell|first=Sarah|title=Live coding brings programming to life - an interview with Alex McLean|work=British Science Association |url=http://www.britishscienceassociation.org/blog/live-coding-brings-programming-to-life-an-interview-with-alex-mac|accessdate=2 March 2016}}</ref> or in terms of Wang & Cook the "programmer/performer/composer".<ref name="auto"/>
Live coding is also an increasingly popular technique in programming-related lectures and conference presentations, and has been described as a "best practice" for computer science lectures by [[Mark Guzdial]].<ref>{{cite web|last=Guzdial|first=Mark|title=What students get wrong when building computational physics models in Python: Cabellero thesis part 2|url=http://computinged.wordpress.com/2011/08/01/what-students-get-wrong-when-building-computational-physics-models-in-python-cabellero-thesis-part-2/|accessdate=5 February 2013|date=August 2011}}</ref>
Line 22:
"Temporal recursion" was a term initially coined in relation to the [[Impromptu (programming environment)|Impromptu]] programming environment. Technical elements within a programming environment continue to locate compressors and recursion solutions, but timing had been a major issue. While the general form of a temporal recursion, being any asynchronous function recursion through time, is available to any event driven system, Impromptu has placed a special emphasis on this particular design pattern,<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> making it the centre piece of the concurrency architecture on that platform. Temporal recursion had repeatedly been used in [[SuperCollider]] and has since been implemented in the [[Fluxus (programming environment)|Fluxus]] environment.
Another functional approach to the representation of time is shown in the [[Tidal (livecoding)|Tidal]] pattern [[Domain-specific language|DSL]],<ref>{{cite book|last=McLean|first=Alex|chapter=Making programming languages to dance to: Live Coding with Tidal|url=https://github.com/yaxu/Tidal/blob/master/doc/farm/farm.pdf?raw=true|title=In proceedings of the 2nd ACM SIGPLAN International Workshop on Functional Art, Music, Modelling and Design|year=2014|___location=Gothenburg}}</ref> which represents patterns as combinators operating over functions of time, similar to techniques in [[functional reactive programming]].<ref>{{cite web|last=McLean|first=Alex|title=Tidal homepage|work=Alex McLean |url=https://yaxu.org/tidal/|date=2013-08-02}}</ref>
=== Multi-user programming and shared memory ===
Line 30:
TOPLAP (The (Temporary|Transnational|Terrestrial|Transdimensional) Organisation for the (Promotion|Proliferation|Permanence|Purity) of Live (Algorithm|Audio|Art|Artistic) Programming) is an informal organization formed in February 2004 to bring together the various communities that had formed around live coding environments.<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> The TOPLAP manifesto asserts several requirements for a TOPLAP compliant performance, in particular that performers' screens should be projected and not hidden.<ref>{{Cite web | url=http://toplap.org/wiki/ManifestoDraft |title = ManifestoDraft |website=Toplap.org}}</ref>
On-the-fly
== Research ==
A number of research projects and research groups have been created to explore live coding, often taking interdisciplinary approaches bridging the humanities and sciences. First efforts to both develop live coding systems and embed the emerging field in the broader theoretical context happened in the research project Artistic Interactivity in Hybrid Networks from 2005 to 2008, funded by the [[Deutsche Forschungsgemeinschaft|German Research Foundation]].<ref>"Artistic Interactivity in Hybrid Networks" (2016) [https://web.archive.org/web/20160303215643/http://www.uni-koeln.de/phil-fak/muwi/c10/index.html]
Further, the Live Coding Research Network was funded by the UK [[Arts and Humanities Research Council]] for two years from February 2014, supporting a range of activities including symposia, workshops and an annual international conference called International Conference on Live Coding (ICLC).<ref>{{Cite web|url=https://gtr.ukri.org/projects?ref=AH%2FL007266%2F1|title=Live Coding Network|last=|first=|date=|website=Gtr.ukri.org|archive-url=|archive-date=|access-date=}}</ref>
Line 40:
{{div col|colwidth=10em}}
* [[ChucK]]
* [[Csound]]
* [[Extempore (software)|Extempore]]
* [[Fluxus (programming environment)|Fluxus]]
Line 45 ⟶ 46:
* [[Impromptu (programming environment)|Impromptu]]
* [[ixi lang]]
* [[Max (software)|Max]]
* [[Pharo]]
Line 53:
* [[SuperCollider]]
* [[Tidal (livecoding)|TidalCycles]]
* Sardine [https://sardine.raphaelforment.fr/]
{{div col end}}
Line 61 ⟶ 62:
* [[Interactive programming]]—programming practice of using live coding in software development
* [[NIME]]—academic and artistic conference on advances in music technology, sometimes featuring live coding performances and research presentations
* [[Creative coding]]—programming approach to create something expressive
==References==
|