comparison clojure/com/aurellem/run/sound.clj @ 526:2620d6318e8d

sound recording complete.
author Robert McIntyre <rlm@mit.edu>
date Sun, 24 Jun 2012 13:34:15 -0500
parents fa7676dbf6f2
children 8d3177d19d5f
comparison
equal deleted inserted replaced
525:fa7676dbf6f2 526:2620d6318e8d
6 bootstrap-0 bootstrap-1)) 6 bootstrap-0 bootstrap-1))
7 (:require clojure.string) 7 (:require clojure.string)
8 (:import [com.aurellem.gb.gb_driver SaveState]) 8 (:import [com.aurellem.gb.gb_driver SaveState])
9 (:import java.awt.image.BufferedImage) 9 (:import java.awt.image.BufferedImage)
10 (:import java.io.File) 10 (:import java.io.File)
11 (:import javax.sound.sampled.AudioFormat) 11
12 (:import com.aurellem.gb.WaveWriter)) 12 (:import com.aurellem.gb.WaveWriter))
13 13
14 (defn sound-test [] 14 (defn sound-test []
15 (step (mid-game)) 15 (step (mid-game))
16 (println (frequencies (sound-data))) 16 (println (frequencies (sound-bytes)))
17 (run-moves @current-state (repeat 10 [])) 17 (run-moves @current-state (repeat 10 []))
18 (println (frequencies (sound-data)))) 18 (println (frequencies (sound-bytes))))
19 19
20 (def probable-format (AudioFormat. 44100 16 2 true false)) 20 (defn record-sound!
21 ([^File target-file state n]
22 (set-state! state)
23 (let [writer (WaveWriter. target-file)]
24 (dorun
25 (for [y (range n)]
26 (do (step)
27 (.process writer
28 (sound-bytes)
29 gb-sound-format))))
30 (.cleanup writer)
31 (Thread/sleep 1000)
32 (clojure.java.shell/sh
33 "aplay"
34 (.getCanonicalPath target-file))))
35 ([n] (record-sound!
36 (File. "/home/r/proj/vba-clojure/sounds/test-sound.wav")
37 (play-midi pony-csv) n)))
21 38
22 (defn test-writing-file! [n] 39 (defn gen-pony! []
23 (set-state! (play-midi pony-csv)) 40 (record-sound!
24 (let [target-file 41 (File. user-home "proj/vba-clojure/sounds/pony.wav")
25 (File. "/home/r/proj/vba-clojure/test-sound.wav") 42 (play-midi pony-csv)
26 writer (WaveWriter. target-file)] 43 1800))
27 (dorun 44
28 (for [y (range n)] 45 (defn gen-regret! []
29 (do 46 (record-sound!
30 (let [quanta 1] 47 (File. user-home "proj/vba-clojure/sounds/regret.wav")
31 (run-moves @current-state (repeat quanta [])) 48 (play-midi regret-csv)
32 (let [ 49 3380))
33 50
34 data (sound-data) 51 (defn gen-mother! []
35 bytes (* 2 (com.aurellem.gb.Gb/getSoundFrameWritten)) 52 (record-sound!
36 step-section 53 (File. user-home "proj/vba-clojure/sounds/mother.wav")
37 (byte-array 54 (play-midi mother-csv)
38 (take (* bytes quanta) data)) 55 2200))
39 56
40 57
41 ]
42 (com.aurellem.gb.Gb/setSoundFrameWritten 0)
43 (.process writer
44 ;;data
45 step-section
46 probable-format))))))
47 (.cleanup writer)
48 (Thread/sleep 1000)
49 (clojure.java.shell/sh
50 "aplay"
51 (.getCanonicalPath target-file))))
52