# HG changeset patch # User Robert McIntyre # Date 1340651738 18000 # Node ID 2de44c6184ee0496feb144118b579b31d765cc74 # Parent 3f2072b8e45706580a4b0d122a026db2622afa60 refactored functionality of play-midi into midi-bytes for reuse. diff -r 3f2072b8e457 -r 2de44c6184ee clojure/com/aurellem/run/choreo.clj --- a/clojure/com/aurellem/run/choreo.clj Mon Jun 25 12:45:57 2012 -0500 +++ b/clojure/com/aurellem/run/choreo.clj Mon Jun 25 14:15:38 2012 -0500 @@ -9,3 +9,27 @@ (:import java.io.File)) + +;; take over game +;; [X] silence noise +;; [ ] construct writing/playing kernel +;; [ ] play pony song while writing picture-program +;; [ ] run picture program to display pinkie pie mark + + + +(defn-memo silence-noise + ([] (silence-noise (launch-main-bootstrap-program))) + ([script] + (->> script + (write-RAM 0xFF1A [0 0 0])))) + + +(defn-memo write-pony-music-data + ([] (write-pony-music-data (silence-noise))) + ([script] + (->> script + (write-RAM 0xA000 + + + diff -r 3f2072b8e457 -r 2de44c6184ee clojure/com/aurellem/run/music.clj --- a/clojure/com/aurellem/run/music.clj Mon Jun 25 12:45:57 2012 -0500 +++ b/clojure/com/aurellem/run/music.clj Mon Jun 25 14:15:38 2012 -0500 @@ -580,16 +580,15 @@ :duty (zipmap (map :out duty-info) (map #(get % :duty 0) duty-info))})) -(defn play-midi [#^File midi-file] +(defn midi-bytes [^File midi-file] (let [voice-1-target 0xA000 voice-2-target 0xB000 noise-target 0xA900 program-target 0xC000 mini-midi (midi->mini-midi midi-file) - long-silence (flatten (note-codes 20 0 20001)) - long-noise-silence - (interleave (range 500) (repeat 0x00) (repeat 255)) - + long-silence (flatten (note-codes 20 0 5000)) + long-noise-silence + (interleave (range 100) (repeat 0x00) (repeat 255)) voice-1 (flatten (:voice-1 mini-midi)) wave-duty-1 ((:duty mini-midi) 0 0) @@ -597,19 +596,29 @@ wave-duty-2 ((:duty mini-midi) 1 0) noise (flatten (:noise mini-midi)) - ] + kernel (music-kernel wave-duty-1 wave-duty-2)] + {:voice-1 {:address voice-1-target + :data (concat voice-1 long-silence)} + :voice-2 {:address voice-2-target + :data (concat voice-2 long-silence)} + :noise {:address noise-target + :data (concat noise long-noise-silence)} + :kernel {:address program-target + :data (music-kernel wave-duty-1 wave-duty-2)}})) + +(defn play-midi [^File midi-file] + (let [bytes (midi-bytes midi-file)] (-> (second (music-base)) - (set-memory-range voice-1-target long-silence) - (set-memory-range voice-2-target long-silence) - (set-memory-range noise-target long-noise-silence) - (set-memory-range voice-1-target voice-1) - (set-memory-range voice-2-target voice-2) - (set-memory-range noise-target noise) (set-memory-range - program-target - (music-kernel wave-duty-1 wave-duty-2)) - (PC! program-target)))) + (:address (:voice-1 bytes)) (:data (:voice-1 bytes))) + (set-memory-range + (:address (:voice-2 bytes)) (:data (:voice-2 bytes))) + (set-memory-range + (:address (:noise bytes)) (:data (:noise bytes))) + (set-memory-range + (:address (:kernel bytes)) (:data (:kernel bytes))) + (PC! (:address (:kernel bytes)))))) (defn test-noise [] (let [noise-pattern diff -r 3f2072b8e457 -r 2de44c6184ee todo.org --- a/todo.org Mon Jun 25 12:45:57 2012 -0500 +++ b/todo.org Mon Jun 25 14:15:38 2012 -0500 @@ -1,4 +1,4 @@ -* vba-clojure [3/7] +* vba-clojure [3/8] - [X] create ram display - [ ] derpy hack - [X] sound recording