aboutsummaryrefslogtreecommitdiff
path: root/mixer.scm
diff options
context:
space:
mode:
Diffstat (limited to 'mixer.scm')
-rw-r--r--mixer.scm46
1 files changed, 46 insertions, 0 deletions
diff --git a/mixer.scm b/mixer.scm
new file mode 100644
index 0000000..e1c563a
--- /dev/null
+++ b/mixer.scm
@@ -0,0 +1,46 @@
+(module downstroke/mixer *
+ (import scheme
+ (chicken base)
+ (chicken foreign))
+
+ #> #include "SDL2/SDL_mixer.h" <#
+
+ (define-foreign-type mix-chunk* (c-pointer "Mix_Chunk"))
+
+ (define mix-open-audio!
+ (foreign-lambda int "Mix_OpenAudio" int unsigned-short int int))
+
+ (define mix-close-audio!
+ (foreign-lambda void "Mix_CloseAudio"))
+
+ (define mix-load-chunk
+ (foreign-lambda* mix-chunk* ((c-string path))
+ "C_return(Mix_LoadWAV(path));"))
+
+ (define mix-free-chunk!
+ (foreign-lambda void "Mix_FreeChunk" mix-chunk*))
+
+ (define mix-play-channel
+ (foreign-lambda int "Mix_PlayChannel" int mix-chunk* int))
+
+ (define mix-default-format
+ ((foreign-lambda* unsigned-short ()
+ "C_return(MIX_DEFAULT_FORMAT);")))
+
+ (define-foreign-type mix-music* (c-pointer "Mix_Music"))
+
+ (define mix-load-mus
+ (foreign-lambda mix-music* "Mix_LoadMUS" c-string))
+
+ (define mix-play-music
+ (foreign-lambda int "Mix_PlayMusic" mix-music* int))
+
+ (define mix-free-music!
+ (foreign-lambda void "Mix_FreeMusic" mix-music*))
+
+ (define mix-halt-music
+ (foreign-lambda int "Mix_HaltMusic"))
+
+ (define mix-volume-music
+ (foreign-lambda int "Mix_VolumeMusic" int))
+)