Rethinking “time” in 3.1 Programming Languages

Download Report

Transcript Rethinking “time” in 3.1 Programming Languages

Rethinking “time” in 3.1
Programming Languages
Adam M. Smith
([email protected])
My goal
Convince you that livecoding…
– is practical
– is interesting
– invalidates commonly held assumptions
– raises new language-design questions
(hint: they all involve time)
Livecoding
Livecoding is the process of making
substantial modifications to an algorithm
even as it runs.
????!?!!!
Why would you do such a thing?
Who can pull this off?
Wtf does it even look like?
TOPLAP
QuickTime™ and a
decompressor
are needed to see this picture.
(Temporary|Transnational|Terrestrial|Transdimensional) Organisation for the (Promotion|Proliferation|Permanence|Purity) of Live (Algorithm|Audio|Art|Artistic) Programming
http://toplap.org
“Generative music is about sowing seeds, comparable with genetic modification;
altering DNA, putting the DNA in eggs, and watching it grow to see/hear the
effects. In contrast, live coding is more about piecing animals together from
scratch in the womb, splicing different live animals together, modifying their DNA
while they're still growing, then experimenting with different ways of slaughtering
them to get the best audio/visual/aromatic effects.”
Strange Places
by Andrew Sorensen
QuickTime™ and a
decompressor
are needed to see this picture.
A 15 minute masterpiece from the world’s
foremost livecoding virtuoso.
(some dude on the Internet from Austrialia)
A few languages for
livecoding music
Language
Paradigm
Syntax
Temporality
PureData
Patcher
(data-flow)
Boxes and wires
(similar to Max)
implicit time, continuous
recomputation as in a
spreadsheet
ChucK
OO-imperative
C++-like with
superpowered
=> operator
explicit scheduling of
synchronous shreds in
abstract time, time types
Impromptu
Functional
Scheme
asynchronous, explicit
scheduling of temporally
tail-recursive functions,
samples as only t-unit
Cfml*
Document(?)
(think of XML)
Scheme
implicit time,
JIT composition, general
temporal recusion
*an internal DSL hosted by
Impromptu
Demo time!
“Time”
• Software development
–
–
–
–
Design-time
Compile-time
Run-time
Dynamic-? Agile methods?
• Music composition
– Composition-time
– Performance-time
– Notation? Improvisation?
• Generative music
– Waveform period
– Onset time
– Note duration
– Generation delay
– Algorithm? Output?
Where will time fit into
your language?
It’s over now; you may begin asking questions.
•
•
•
•
PureData - http://puredata.info/
ChucK - http://chuck.cs.princeton.edu/
Impromptu - http://impromptu.moso.com.au/
Cfml - http://github.com/rndmcnlly/cfml/
That’s me