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

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

Jan 21, 2016

Download

Documents

Wilfred Webster
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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

=^