diff options
Diffstat (limited to 'sdl2/mixer/general.ha')
| -rw-r--r-- | sdl2/mixer/general.ha | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/sdl2/mixer/general.ha b/sdl2/mixer/general.ha new file mode 100644 index 0000000..b87ac4e --- /dev/null +++ b/sdl2/mixer/general.ha @@ -0,0 +1,52 @@ +use sdl2; + +// Flags for [[init]]. +export type init_flags = enum { + FLAC = 0x00000001, + MOD = 0x00000002, + MP3 = 0x00000008, + OGG = 0x00000010, + MID = 0x00000020, + OPUS = 0x00000040 +}; + +// The default mixer has 8 simultaneous mixing channels +export def CHANNELS: int = 8; + +// Good default frequency for a PC soundcard +export def DEFAULT_FREQUENCY: int = 22050; + +// Good default channels for a PC soundcard +export def DEFAULT_CHANNELS: int = 2; + +// XXX: This should choose MSB on a big-endian system: + +// Good default format for a PC soundcard +export def DEFAULT_FORMAT: sdl2::audio_format = sdl2::AUDIO_S16LSB; + +@symbol("Mix_Init") fn _init(flags: int) int; + +// Loads dynamic libraries and prepares them for use. Flags should be +// one or more flags from [[init_flags]] OR'd together. +export fn init(flags: init_flags) (void | sdl2::error) = { + return sdl2::wrapvoid(_init(flags)); +}; + +// Unloads libraries loaded with [[init]]. +export @symbol("Mix_Quit") fn quit() void; + +@symbol("Mix_OpenAudio") fn _openaudio(frequency: int, + format: u16, channels: int, chunksize: int) int; + +// Open the mixer with a certain audio format +export fn open_audio( + frequency: int, + format: sdl2::audio_format, + channels: int, + chunksize: int, +) (void | sdl2::error) = { + return sdl2::wrapvoid(_openaudio(frequency, format, channels, chunksize)); +}; + +// Close the mixer, halting all playing audio +export @symbol("Mix_CloseAudio") fn close_audio() void; |
