(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)) )