2. Agenda
● Introduction
● TOPLAP
● Live Coding Environments
● What is (fluxus)?
● Quick Demo
● What is Scheme?
● More about (fluxus)
● Q&A
3. Introduction
● Live coding is becoming popular in
conference talks (presentations).
● My talk today focuses on live programming
languages for music and video performance.
● Live coding can be referred to as 'on-the-fly
programming' or 'just in time programming'.
● Keywords: real time (即時), improvise (即席)
4. TOPLAP
● TOPLAP is an organization founded in 2004, to explore
and promote live coding.
● Transdimensional Organisation for the Permanence of
Live Art Programming
● Live coding performance
● BBC News - Tech Know: Programming, meet music
● The process of writing computer code, in real time, to
compose and play music or design animations.
● Dan Stowell (beatbox coder), Dave Griffiths (live coder),
and Alex McLean (live coder)
Sources:
[1] http://toplap.org/
[2] http://news.bbc.co.uk/2/hi/technology/8221235.stm
5. Live Coding Environments
● SuperCollider
● Fluxus
Source: http://toplap.org/wiki/ToplapSystems
Name Textural Graphical Audio Visual Open source
SuperCollider V V (V) V
Pure Data V V (V) V
Fluxus V (V) V V
Max/MSP V V (V)
Impromptu V V V V
ChucK V V V
6. What is (fluxus)?
● Open source
● Live coding environment
● 3D graphics
● Rapid prototype
● Scheme language
● Cross platform
7. Quick Demo
; setup incoming sound
(start-audio “alsaplayer-xxxx:out_1” 1024
44100)
; basic loop
(define (render) (draw-cube))
(every-frame (render))
; 3 basic manipulations for 3D graphic
translate, rotate, and scale
8. What is Scheme?
● Dialect of Lisp
● Minimalist design philosophy
Sources:
[1] http://www.wired.com/wiredenterprise/2012/06/beard-gallery/
[2] http://norvig.com/21-days.html
9. Scheme (syntax comparison)
We use lots of brackets. http://repl.it/languages/Scheme
Java Scheme
method() (method)
method(arg) (method arg)
int num = 123; (define num 123)
String name = "Aki"; (define name "Aki")
int method() {
return 123;
}
(define (method) 123)
void method() {
println("Hello World!");
}
(define (method) "Hello World!")
int[] num = {1,2,3}; (define num '(1 2 3))