mirror of
https://github.com/carp-lang/Carp.git
synced 2024-10-11 20:49:05 +03:00
47 lines
1.7 KiB
Plaintext
47 lines
1.7 KiB
Plaintext
(load "SDL.carp")
|
|
(load "SDL_mixer.carp")
|
|
|
|
(Project.config "title" "Sounds")
|
|
|
|
(def fx1 (the (Ptr Mix_Chunk) NULL))
|
|
|
|
(defn play-sound-fx1 []
|
|
(ignore (Mixer.play-channel Mixer.any-free-channel fx1 0)))
|
|
|
|
(defn event-handler [app]
|
|
(let [event (SDL.Event.init)]
|
|
(while (SDL.Event.poll (address event))
|
|
(let [et (SDL.Event.type &event)]
|
|
(cond (= et SDL.Event.quit)
|
|
(SDLApp.stop app)
|
|
(= et SDL.Event.key-down)
|
|
(let [key (SDL.Event.keycode &event)]
|
|
(case key
|
|
SDL.Keycode.escape (SDLApp.stop app)
|
|
SDL.Keycode.return (play-sound-fx1)
|
|
()))
|
|
())))))
|
|
|
|
(defn main []
|
|
(let [app (SDLApp.create "Sound Effects with SDL_mixer" 400 300)
|
|
rend @(SDLApp.renderer &app)]
|
|
(do
|
|
(let [flags Mixer.mp3-support]
|
|
(when (/= flags (Mixer.init flags))
|
|
(println* "Mixer.init error: " &(str (Mixer.get-error)))))
|
|
(if (Mixer.ok? (Mixer.open-audio 22050 Mixer.default-format 2 4096))
|
|
()
|
|
(println* "Mixer.open-audio error: " &(str (Mixer.get-error))))
|
|
(set! fx1 (Mixer.load-wav (cstr "resources/fx1.wav")))
|
|
(assert (not-null? fx1))
|
|
(let-do [n (Mixer.nr-of-music-decoders)]
|
|
(println* "Nr of music decoders: " n)
|
|
(for [i 0 n]
|
|
(println* " - " &(str (Mixer.get-music-decoder i)))))
|
|
(let-do [music (Mixer.load-music (cstr "resources/song.mp3"))]
|
|
(println* "Music is " (if (null? music) "null." "not null."))
|
|
(println* "Play result: " (Mixer.play-music music -1))
|
|
)
|
|
(SDLApp.run-with-callbacks &app event-handler id SDLApp.default-draw 0)
|
|
0)))
|