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

29
1 The old computing is about what computers can do… the new computing is about what people can do. - Ben Shneiderman

Upload: wilfred-webster

Post on 21-Jan-2016

220 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 0 The old computing is about what computers can do… the new computing is about what people can do. - Ben Shneiderman

1

The old computing is about what computers can do…

the new computing is about what people can do.

- Ben Shneiderman

Page 2: 0 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

Page 3: 0 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

Page 4: 0 The old computing is about what computers can do… the new computing is about what people can do. - Ben Shneiderman

4

Code == Musical instrument

Page 5: 0 The old computing is about what computers can do… the new computing is about what people can do. - Ben Shneiderman

5

Page 6: 0 The old computing is about what computers can do… the new computing is about what people can do. - Ben Shneiderman

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

Page 7: 0 The old computing is about what computers can do… the new computing is about what people can do. - Ben Shneiderman

7

Chistory-1

Page 8: 0 The old computing is about what computers can do… the new computing is about what people can do. - Ben Shneiderman

8

Chistory-2

Page 9: 0 The old computing is about what computers can do… the new computing is about what people can do. - Ben Shneiderman

9

Chistory-3

Page 10: 0 The old computing is about what computers can do… the new computing is about what people can do. - Ben Shneiderman

10

Flexibility, readability trumps performance

Page 11: 0 The old computing is about what computers can do… the new computing is about what people can do. - Ben Shneiderman

11

Core Language Features

Page 12: 0 The old computing is about what computers can do… the new computing is about what people can do. - Ben Shneiderman

12

=>

Page 13: 0 The old computing is about what computers can do… the new computing is about what people can do. - Ben Shneiderman

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

Page 14: 0 The old computing is about what computers can do… the new computing is about what people can do. - Ben Shneiderman

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

Page 15: 0 The old computing is about what computers can do… the new computing is about what people can do. - Ben Shneiderman

15

Concurrency

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

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

Page 16: 0 The old computing is about what computers can do… the new computing is about what people can do. - Ben Shneiderman

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

Page 17: 0 The old computing is about what computers can do… the new computing is about what people can do. - Ben Shneiderman

17

ChucK Virtual Machine

Page 18: 0 The old computing is about what computers can do… the new computing is about what people can do. - Ben Shneiderman

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”)

Page 19: 0 The old computing is about what computers can do… the new computing is about what people can do. - Ben Shneiderman

19

On-the-fly Programming(running with sonic scissors)

Page 20: 0 The old computing is about what computers can do… the new computing is about what people can do. - Ben Shneiderman

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:

Page 21: 0 The old computing is about what computers can do… the new computing is about what people can do. - Ben Shneiderman

21The League of Automatic Composers (1974)

Page 22: 0 The old computing is about what computers can do… the new computing is about what people can do. - Ben Shneiderman

22

demo

Page 23: 0 The old computing is about what computers can do… the new computing is about what people can do. - Ben Shneiderman

23

The Audicle

Page 24: 0 The old computing is about what computers can do… the new computing is about what people can do. - Ben Shneiderman

24

Hmm-1Editor

Compiler

VM

Debugger

Run-time

Develop

Page 25: 0 The old computing is about what computers can do… the new computing is about what people can do. - Ben Shneiderman

25

Hmm-2Editor

Compiler

VM

DebuggerDevelop

Run-time

Page 26: 0 The old computing is about what computers can do… the new computing is about what people can do. - Ben Shneiderman

26

demo

Page 27: 0 The old computing is about what computers can do… the new computing is about what people can do. - Ben Shneiderman

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!

Page 28: 0 The old computing is about what computers can do… the new computing is about what people can do. - Ben Shneiderman

28

http://chuck.cs.princeton.edu/

Page 29: 0 The old computing is about what computers can do… the new computing is about what people can do. - Ben Shneiderman

29

=^