0 The old computing is about what computers can do… the new computing is about what people can do....

Post on 21-Jan-2016

213 views 0 download

Transcript of 0 The old computing is about what computers can do… the new computing is about what people can do....

1

The old computing is about what computers can do…

the new computing is about what people can do.

- Ben Shneiderman

2

The old computing is about what computers can do…

the new computing is about what people can do.

- Ben Shneiderman

3

Motivation

• 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

4

Code == Musical instrument

5

6

ChucK 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

7

Chistory-1

8

Chistory-2

9

Chistory-3

10

Flexibility, readability trumps performance

11

Core Language Features

12

=>

13

Controlling Time

// infinite time loop

while( true )

{

// set the next sample

1.0 => i.next;

// advance time

100::ms +=> now;

}

Impulse i => dac;

demo

14

Advancing Time

• time stands still until you “advance” it• two semantics for advancing time

– chuck to now1::second +=> now;

– wait on eventevent => now;

• you are responsible for keeping up with time• time == sound

15

Concurrency

• implemented using “shreds”– resemble non-preemptive threads

• automatically synchronized by time! • can work at low and high level

16

“Strongly-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

17

ChucK Virtual Machine

18

ChucK Virtual Machine

Code (“foo.ck”)

On-the-fly compiler

Process

shred shred shred

Shreduler

ChucK Virtual Machine

Audio Engine

I/O Manager

Execution Unit

Code (“foo.ck”, “bar.ck”)

19

On-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:

21The League of Automatic Composers (1974)

22

demo

23

The Audicle

24

Hmm-1Editor

Compiler

VM

Debugger

Run-time

Develop

25

Hmm-2Editor

Compiler

VM

DebuggerDevelop

Run-time

26

demo

27

Language 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

=^