Title: The old computing is about what computers can do
1The old computing is about what computers can
dothe new computing is about what people can
do. - Ben Shneiderman
2The old computing is about what computers can
dothe new computing is about what people can
do. - Ben Shneiderman
3Motivation
- programming the passage of time
- specifying / controlling
- reasoning about time in code
- flexible granularity
- concurrency
- parallel
- easy to program
- precise granular
- gain insight about audio programs
- make audio programming more accessible
- further enable rapid experimentation
4Code Musical instrument
5(No Transcript)
6ChucK Facts
- text-based, general-purpose programming
- tailored for real-time audio synthesis and
analysis - open-source, cross-platform
- designed from the ground-up
- high-level syntax, low-level control
7Chistory-1
8Chistory-2
9Chistory-3
10Flexibility, readability trumps performance
11Core Language Features
12gt
13Controlling Time
Impulse i gt dac
- // infinite time loop
- while( true )
-
- // set the next sample
- 1.0 gt i.next
- // advance time
- 100ms gt now
demo
14Advancing Time
- time stands still until you advance it
- two semantics for advancing time
- chuck to now
- 1second gt now
- wait on event
- event gt now
- you are responsible for keeping up with time
- time sound
15Concurrency
- implemented using shreds
- resemble non-preemptive threads
- automatically synchronized by time!
- can work at low and high level
16Strongly-timed
- what it means
- programs have precise control over their own
timing - sample-synchronous control may be asserted at any
time - for any unit generator
- transfer primary control over time
- from implicit scheduling to the language
- program flow time flow
- staying in the language
- express more from within the language
- provide natural modularity for on-the-fly programs
17ChucK Virtual Machine
18ChucK Virtual Machine
Code (foo.ck)
Code (foo.ck, bar.ck)
19On-the-fly Programming(running with sonic
scissors)
20 (n.) the act of modifying the
logic and structure of a program during runtime,
for the purpose of rapid experimentation, and
exerting expressive control. (also live coding)
on-the-fly programming
21- The League of Automatic Composers (1974)
22demo
23The Audicle
24Hmm-1
Editor
25Hmm-2
Editor
Debugger
Compiler
VM
26demo
27Language Design Solutions
- make time itself computable
- time and duration native types
- allow a program to be self-aware in time
- allow code to schedule itself
- synchronize concurrency by time or by events
- automatically (by time)
- manually (using events, also sample-synchronous)
- hide the mundane, expose true control.
- do it on-the-fly!
28- http//chuck.cs.princeton.edu/
29