0% found this document useful (0 votes)
50 views69 pages

Creative Machines

The document discusses various aspects of creativity and how machines may capture or emulate human creativity. It mentions psychological and historical perspectives on creativity. It also discusses concepts like combination, exploration, transformation, and how machines could potentially capture human creativity by modeling things like the human brain, subconscious processes, allusion, recombinance, influence from context, learning and inference. It includes notes on an integrated model of musical creativity and examples of algorithms for musical composition.
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
50 views69 pages

Creative Machines

The document discusses various aspects of creativity and how machines may capture or emulate human creativity. It mentions psychological and historical perspectives on creativity. It also discusses concepts like combination, exploration, transformation, and how machines could potentially capture human creativity by modeling things like the human brain, subconscious processes, allusion, recombinance, influence from context, learning and inference. It includes notes on an integrated model of musical creativity and examples of algorithms for musical composition.
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 69

Creative Machines

Joseph Wilk

Romance

Creativity

Creativity
Psychological Historical

Combination

Combination

Exploration

Exploration

Transformation

Transformation

Transformation

Creative Machines

Death

Entropy!
=

Chaos

Music

Complexity

Capture Human creativity

Delta Theta

Alpha Beta Gamma

Test!subject:!X

HUMAN BRAIN

An Integrated Model of Musical Creativity

Allusion
Creativity!relies!in!part!on!the!juxtaposition!of! allusions!to!the!work!of!others
David Cope

https://github.com/josephwilk/musical-creativity/blob/master/src/musical_creativity/allusion/sorcerer.clj

Recombinance
Creativity!does!not!originate!from!a!vacuum
David!Cope

beat

beat

beat

beatComposition beat beat

beat

beat

beat

beat

beat

beat

beat

beat

beat

beat

beat

beat

beat

beat

beat

beat

beat

beat

beat

beat

beat

beat beat beat beat beat beat beat beat beat

beat

beat

beat

beat

beat

beat

beat

beat

beat

Leading!voice
Beat!store beat
72
{:start-notes '(53 57 62 65) :destination-notes '(45 57 64 72) :events '((22000 53 500 4 96) (22000 57 1000 3 96) (22000 62 1500 2 96) (22000 65 1000 1 96) (22500 55 500 4 96) (23000 57 1000 4 96) (23000 57 1000 3 96) (23000 64 1000 1 96) (23500 61 500 2 96)) :voice-leading '((4 -8 0 b43800b-14) (9 -8 2 b43800b-14) (12 -8 7 b43800b-14) (5 0 2 b43800b-14) (8 0 7 b43800b-14) (3 2 7 b43800b-14))}

beat beat beat beat beat beat beat

beat

72

72

72

Leading!voice
Beat!store beat
72
{:start-notes '(53 57 62 65) :destination-notes '(45 57 64 72) :events '((22000 53 500 4 96) (22000 57 1000 3 96) (22000 62 1500 2 96) (22000 65 1000 1 96) (22500 55 500 4 96) (23000 57 1000 4 96) (23000 57 1000 3 96) (23000 64 1000 1 96) (23500 61 500 2 96)) :voice-leading '((4 -8 0 b43800b-14) (9 -8 2 b43800b-14) (12 -8 7 b43800b-14) (5 0 2 b43800b-14) (8 0 7 b43800b-14) (3 2 7 b43800b-14))}

beat beat beat beat beat beat

beat

72

72

72

53 - 45

beat

(4 -8 0 b43800b-14) 57-53 57-57

Leading!voice
Beat!store beat
72
{:start-notes '(53 57 62 65) :destination-notes '(45 57 64 72) :events '((22000 53 500 4 96) (22000 57 1000 3 96) (22000 62 1500 2 96) (22000 65 1000 1 96) (22500 55 500 4 96) (23000 57 1000 4 96) (23000 57 1000 3 96) (23000 64 1000 1 96) (23500 61 500 2 96)) :voice-leading '((4 -8 0 b43800b-14) (9 -8 2 b43800b-14) (12 -8 7 b43800b-14) (5 0 2 b43800b-14) (8 0 7 b43800b-14) (3 2 7 b43800b-14))}

beat beat beat beat beat beat beat

beat

72

72

72

Lexicon
{"bach-45-57-64-72" {:beats ("b43800b-15" "b43600b-62" "b43300b-10" "b43100b-2")}}

Recombinance DEMO

CHEAT!

BAD Recombinance DEMO

Influence
Creativity!develops!within!enfolding!and! influencing!context,!and!not!in!isolation
David!Cope

Learning Inference
Creativity!requires!learning!and!knowledge!in!order!to! produce!useful!rather!than!arbitrary!results
David Cope

Inference!&!Analogy

David Cope

Emily Howell

Creative Machines
Joseph Wilk

it!can!do!whatever!we!know!how!to!order!it! to!perform!
!

it!has!no!pretensions!whatever!to!originate! anything

Not Conscious

(ns ^{:doc "The semi-sweet representation of provided forms."} midje.parsing.3-from-lexical-maps.from-fake-maps (:use midje.clojure.core midje.checking.core [midje.checkers :only [exactly]] [midje.checking.checkers.defining :only [checker?]] [midje.parsing.arrow-symbols]) (:require [midje.util.exceptions :as exceptions])) (defn- mkfn:arg-matcher "Based on an expected value, generates a function that returns true if the actual value matches it." [expected] (if (and (extended-fn? expected) (not (checker? expected))) (fn [actual] (extended-= actual (exactly expected))) (fn [actual] (extended-= actual expected))))

(defn mkfn:arg-matchers-with-arity "Generates a function that returns true if all the matchers return true for the actual args its passed." [matchers] (fn [actual-args] (let [arg-matchers (map mkfn:arg-matcher matchers)] (and (= (count actual-args) (count arg-matchers)) (extended-list-= actual-args arg-matchers))))) (defn mkfn:arg-matchers-without-arity "Generates a function that returns true if all the matchers return true but it ignores arity matching." [matchers] (fn [actual-args] (let [arg-matchers (map mkfn:arg-matcher matchers)] (extended-list-= actual-args arg-matchers)))) (defmulti mkfn:result-supplier (fn [arrow & _] arrow))

Empty Program

(defmethod mkfn:result-supplier => [_arrow_ result] (constantly result)) (defmethod mkfn:result-supplier =streams=> [_arrow_ result-stream] (let [the-stream (atom result-stream)] (fn [] (when (empty? @the-stream) (throw (exceptions/user-error "Your =stream=> ran out of values."))) (let [current-result (first @the-stream)] (swap! the-stream rest) current-result)))) (defmethod mkfn:result-supplier =throws=> [_arrow_ throwable] (fn [] (when-not (instance? Throwable throwable)

Non human

Creativity

Subconscious
Joseph Wilk

Subconscious
Joseph Wilk

You might also like