rlm@523: (ns com.aurellem.run.sound rlm@523: (:use (com.aurellem.gb saves gb-driver util constants rlm@523: items vbm characters money rlm@523: rlm-assembly)) rlm@523: (:use (com.aurellem.run util music title save-corruption rlm@523: bootstrap-0 bootstrap-1)) rlm@523: (:require clojure.string) rlm@523: (:import [com.aurellem.gb.gb_driver SaveState]) rlm@523: (:import java.awt.image.BufferedImage) rlm@525: (:import java.io.File) rlm@525: (:import javax.sound.sampled.AudioFormat) rlm@525: (:import com.aurellem.gb.WaveWriter)) rlm@523: rlm@523: (defn sound-test [] rlm@523: (step (mid-game)) rlm@523: (println (frequencies (sound-data))) rlm@523: (run-moves @current-state (repeat 10 [])) rlm@523: (println (frequencies (sound-data)))) rlm@523: rlm@524: (def probable-format (AudioFormat. 44100 16 2 true false)) rlm@524: rlm@524: (defn test-writing-file! [n] rlm@524: (set-state! (play-midi pony-csv)) rlm@524: (let [target-file rlm@524: (File. "/home/r/proj/vba-clojure/test-sound.wav") rlm@524: writer (WaveWriter. target-file)] rlm@524: (dorun rlm@524: (for [y (range n)] rlm@524: (do rlm@525: (let [quanta 1] rlm@524: (run-moves @current-state (repeat quanta [])) rlm@525: (let [ rlm@525: rlm@525: data (sound-data) rlm@525: bytes (* 2 (com.aurellem.gb.Gb/getSoundFrameWritten)) rlm@524: step-section rlm@525: (byte-array rlm@525: (take (* bytes quanta) data)) rlm@525: rlm@525: rlm@525: ] rlm@525: (com.aurellem.gb.Gb/setSoundFrameWritten 0) rlm@525: (.process writer rlm@525: ;;data rlm@525: step-section rlm@525: probable-format)))))) rlm@524: (.cleanup writer) rlm@524: (Thread/sleep 1000) rlm@524: (clojure.java.shell/sh rlm@524: "aplay" rlm@524: (.getCanonicalPath target-file)))) rlm@525: