Aesthetics and Narrative: Programming What Cannot Be Programmed

A presentation at I T.A.K.E Unconference in May 2017 in Bucharest, Romania by D. Schmudde

Slide 1

Slide 1

Aesthe cs and Narra ve: Programming What Cannot Be Programmed @dschmudde h p ://schmud.de

Slide 2

Slide 2

Lambda Calculus Lisp Scheme Clojure Haskell

Slide 3

Slide 3

λ REPL

Slide 4

Slide 4

λ Symbolic Expressions

Slide 5

Slide 5

λ Composable g(f(x))

Slide 6

Slide 6

λ Pure

Slide 7

Slide 7

λ Reason About Code Finance (Quan ta ve) Data (Quan ta ve)

Slide 8

Slide 8

Quan ta ve Reasoning Mathema cally Provable  Correctness  Performance Cogita ng  Behavior  Improvements

Slide 9

Slide 9

λ Long History in Abstract Domains Aesthe cs Story

Slide 10

Slide 10

Art

Slide 11

Slide 11

Process Chaos and Surrender Decisiveness and Agency

Slide 12

Slide 12

The Decisive Ar st Know the Rules Before You Can Break Them

Slide 13

Slide 13

The Decisive Programmer Know the Rules Before You Can Write Them

Slide 14

Slide 14

We Don’t Always Know the Rules

Slide 15

Slide 15

AARON Development: 1968 ‐ 21st Century FORTRAN → C→ Lisp (CLOS)

Slide 16

Slide 16

1983

Slide 17

Slide 17

1992

Slide 18

Slide 18

Color Composing a Small Number of Primi ves

Slide 19

Slide 19

Process AARON Consider All Possibili es and Decide

Slide 20

Slide 20

Process Ar st Manifest Intent and Respond

Slide 21

Slide 21

Intelligence? Crea ve?

Slide 22

Slide 22

Autonomy “ I want to make it clear that in trying to model Harold Cohen “ cognitive behavior in a computer program […] I was not a cognitive scientist doing research, I was an artist attempting to give form to what my own cognitive experience had told me.

Slide 23

Slide 23

Autonomy Harold Cohen (1 May 1928 – 27 April 2016) Pain ngs by AARON (1968 ‐ ?)

Slide 24

Slide 24

Zork Development: 1975 ‐ 1982 FORTRAN (Adventure) → MDL (PDP‐10) → ZIL (Z‐Machine running Zork I‐III)

Slide 25

Slide 25

Slide 26

Slide 26

1975 Colossal Cave Adventure Verb‐Noun Commands go west

Slide 27

Slide 27

1977 Zork Preposi ons and Conjunc ons Direct and Indirect Objects fill the bo le with water

Slide 28

Slide 28

ZIL <OBJECT LANTERN (LOC LIVING-ROOM) (SYNONYM LAMP LANTERN LIGHT) (ADJECTIVE BRASS) (DESC “brass lantern”) (FLAGS TAKEBIT LIGHTBIT) (ACTION LANTERN-F) (FDESC “A battery-powered lantern is on the trophy case.”) (LDESC “There is a brass lantern (battery-powered) here.”) (SIZE 15)>

Slide 29

Slide 29

Parsing and Language Small Number of Primi ves

Slide 30

Slide 30

Autonomy Narra ve Guide Natural Language

Slide 31

Slide 31

Making a Movie

Slide 32

Slide 32

Film Script: A Technical Document Clarity and precision for interpretation: Production breakdowns Camera shooting scripts Direction for actors and directors Basis for novelizations

Slide 33

Slide 33

Autonomy script ≠ film code ≠ execu on

Slide 34

Slide 34

Quan ta ve Acts of Crea vity

Slide 35

Slide 35

Every Icon (1997‐present) John F. Simon, Jr.

Slide 36

Slide 36

Super Mario Bros. (1985) Shigeru Miyamoto

Slide 37

Slide 37

Qualita ve Reasoning Unknown Quan es Explora on of the Idea

Slide 38

Slide 38

Borderless Kinect Overtone

Slide 39

Slide 39

Abstract Domain

Slide 40

Slide 40

Transducers → Input personEntered personUpdated personWillLeave

Slide 41

Slide 41

→ Input 0: pid; 1: oid; 2: age; 3: centroid.x; 4: centroid.y; 5: velocity.x; 6: velocity.y; 7: depth; 8: boundingRect.x;

Slide 42

Slide 42

→ Input 9: boundingRect.y; 10: boundingRect.width; 11: boundingRect.height; 12: highest.x 13: highest.y 14: haarRect.x; 15: haarRect.y; 16: haarRect.width;

Slide 43

Slide 43

Output → vca (loudness) reverb (timbre) vco (pitch) attack (timbre) sustain (timbre) release (timbre) gate (loudness) silence (loudness)

Slide 44

Slide 44

A/V Flow → Input: Kinect Vision Δ Internally: Clojure: Operate on Primitives → Output: Overtone Sound

Slide 45

Slide 45

Δ Opera ons osc/person-enter ∈ @person-sound{id-1 “vowel-1” id-2 “vowel-2” …} (osc/person-updated ‘(id age)) ∃ @person-sound{id …} × (vowel (map #(* age %) [amp verb osc])

Slide 46

Slide 46

Complexity (definst drone-ae-sus “I make the ‘ae’ vowel sound at a given frequency. I start/stop with the gate set to 1 or 0.” [freq 100 gate (synth-defaults ::gate) amp (synth-defaults ::vca) verb (synth-defaults ::reverb) kr-mul (synth-defaults ::vco)] (let [kr-mul eq-freq hpf-rlpf q synth-unit (:value kr-mul) [270 2290 3010] [600 8000 0.6] 0.1 (synth-unit-layered freq eq-freq q kr-mul)] (synth-filter-chain synth-unit amp verb gate hpf-rlpf)))

Slide 47

Slide 47

Art Qualita ve Reasoning Know the rules before you can break them

Slide 48

Slide 48

Art Qualita ve Reasoning Know the rules before you can break them Constraints breed creativity

Slide 49

Slide 49

clojure.spec Integrated System For Specifica on and Tes ng

Slide 50

Slide 50

spec Scien fic Constraints (s/def ::frequency (s/and number? #((control-range 20 20000) %) ))

Slide 51

Slide 51

spec Aesthe c Constraints (s/def ::vca (s/and number? #((control-range 0.4 1) %))) (s/def ::reverb (s/and integer? #((control-range 0 1000) %))) (s/def ::vco (s/and integer? #((control-range 0 25) %)))

Slide 52

Slide 52

Autonomy testable experiment‐able with spec

Slide 53

Slide 53

Autonomy Unexpected Paths Unexpected Results Expressive Tool

Slide 54

Slide 54

Autonomy Ar ficial Intelligence (Computers)

Slide 55

Slide 55

Autonomy Augmented Intelligence (Humani es)

Slide 56

Slide 56

Autonomy & Authorship

Slide 57

Slide 57

Aesthe cs and Narra ve: Programming What Cannot Can Be Programmed @dschmudde h p ://schmud.de Licensed under a Creative Commons license.