Source code for SDL3_mixer

from sdl3.SDL import * # type: ignore
from sdl3 import SDL_POINTER

import ctypes, typing

LP_LP_MIX_Track: typing.TypeAlias = SDL_POINTER[SDL_POINTER[MIX_Track]]
LP_SDL_AudioStream: typing.TypeAlias = SDL_POINTER[SDL_AudioStream]
LP_SDL_IOStream: typing.TypeAlias = SDL_POINTER[SDL_IOStream]
LP_MIX_Group: typing.TypeAlias = SDL_POINTER[MIX_Group]
LP_MIX_Track: typing.TypeAlias = SDL_POINTER[MIX_Track]
LP_MIX_Audio: typing.TypeAlias = SDL_POINTER[MIX_Audio]
LP_MIX_Mixer: typing.TypeAlias = SDL_POINTER[MIX_Mixer]
LP_c_int: typing.TypeAlias = SDL_POINTER[ctypes.c_int]
LP_MIX_StereoGains: typing.TypeAlias = SDL_POINTER[MIX_StereoGains]
LP_SDL_AudioSpec: typing.TypeAlias = SDL_POINTER[SDL_AudioSpec]
LP_MIX_AudioDecoder: typing.TypeAlias = SDL_POINTER[MIX_AudioDecoder]
LP_MIX_Point3D: typing.TypeAlias = SDL_POINTER[MIX_Point3D]
LP_c_char_p: typing.TypeAlias = SDL_POINTER[ctypes.c_char_p]

[docs] def MIX_Version() -> ctypes.c_int: """ Get the version of SDL_mixer that is linked against your program. """
[docs] def MIX_Init() -> ctypes.c_bool: """ Initialize the SDL_mixer library. """
[docs] def MIX_Quit() -> None: """ Deinitialize the SDL_mixer library. """
[docs] def MIX_GetNumAudioDecoders() -> ctypes.c_int: """ Report the number of audio decoders available for use. """
[docs] def MIX_GetAudioDecoder(index: ctypes.c_int) -> ctypes.c_char_p: """ Report the name of a specific audio decoders. """
[docs] def MIX_CreateMixerDevice(devid: SDL_AudioDeviceID, spec: LP_SDL_AudioSpec) -> LP_MIX_Mixer: """ Create a mixer that plays sound directly to an audio device. """
[docs] def MIX_CreateMixer(spec: LP_SDL_AudioSpec) -> LP_MIX_Mixer: """ Create a mixer that generates audio to a memory buffer. """
[docs] def MIX_DestroyMixer(mixer: LP_MIX_Mixer) -> None: """ Free a mixer. """
[docs] def MIX_GetMixerProperties(mixer: LP_MIX_Mixer) -> SDL_PropertiesID: """ Get the properties associated with a mixer. """
[docs] def MIX_GetMixerFormat(mixer: LP_MIX_Mixer, spec: LP_SDL_AudioSpec) -> ctypes.c_bool: """ Get the audio format a mixer is generating. """
[docs] def MIX_LockMixer(mixer: LP_MIX_Mixer) -> None: """ Lock a mixer by obtaining its internal mutex. """
[docs] def MIX_UnlockMixer(mixer: LP_MIX_Mixer) -> None: """ Unlock a mixer previously locked by a call to MIX_LockMixer(). """
[docs] def MIX_LoadAudio_IO(mixer: LP_MIX_Mixer, io: LP_SDL_IOStream, predecode: ctypes.c_bool, closeio: ctypes.c_bool) -> LP_MIX_Audio: """ Load audio for playback from an SDL_IOStream. """
[docs] def MIX_LoadAudio(mixer: LP_MIX_Mixer, path: ctypes.c_char_p, predecode: ctypes.c_bool) -> LP_MIX_Audio: """ Load audio for playback from a file. """
[docs] def MIX_LoadAudioNoCopy(mixer: LP_MIX_Mixer, data: ctypes.c_void_p, datalen: ctypes.c_size_t, free_when_done: ctypes.c_bool) -> LP_MIX_Audio: """ Load audio for playback from a memory buffer without making a copy. """
[docs] def MIX_LoadAudioWithProperties(props: SDL_PropertiesID) -> LP_MIX_Audio: """ Load audio for playback through a collection of properties. """
[docs] def MIX_LoadRawAudio_IO(mixer: LP_MIX_Mixer, io: LP_SDL_IOStream, spec: LP_SDL_AudioSpec, closeio: ctypes.c_bool) -> LP_MIX_Audio: """ Load raw PCM data from an SDL_IOStream. """
[docs] def MIX_LoadRawAudio(mixer: LP_MIX_Mixer, data: ctypes.c_void_p, datalen: ctypes.c_size_t, spec: LP_SDL_AudioSpec) -> LP_MIX_Audio: """ Load raw PCM data from a memory buffer. """
[docs] def MIX_LoadRawAudioNoCopy(mixer: LP_MIX_Mixer, data: ctypes.c_void_p, datalen: ctypes.c_size_t, spec: LP_SDL_AudioSpec, free_when_done: ctypes.c_bool) -> LP_MIX_Audio: """ Load raw PCM data from a memory buffer without making a copy. """
[docs] def MIX_CreateSineWaveAudio(mixer: LP_MIX_Mixer, hz: ctypes.c_int, amplitude: ctypes.c_float, ms: ctypes.c_int64) -> LP_MIX_Audio: """ Create a MIX_Audio that generates a sinewave. """
[docs] def MIX_GetAudioProperties(audio: LP_MIX_Audio) -> SDL_PropertiesID: """ Get the properties associated with a MIX_Audio. """
[docs] def MIX_GetAudioDuration(audio: LP_MIX_Audio) -> ctypes.c_int64: """ Get the length of a MIX_Audio's playback in sample frames. """
[docs] def MIX_GetAudioFormat(audio: LP_MIX_Audio, spec: LP_SDL_AudioSpec) -> ctypes.c_bool: """ Query the initial audio format of a MIX_Audio. """
[docs] def MIX_DestroyAudio(audio: LP_MIX_Audio) -> None: """ Destroy the specified audio. """
[docs] def MIX_CreateTrack(mixer: LP_MIX_Mixer) -> LP_MIX_Track: """ Create a new track on a mixer. """
[docs] def MIX_DestroyTrack(track: LP_MIX_Track) -> None: """ Destroy the specified track. """
[docs] def MIX_GetTrackProperties(track: LP_MIX_Track) -> SDL_PropertiesID: """ Get the properties associated with a track. """
[docs] def MIX_GetTrackMixer(track: LP_MIX_Track) -> LP_MIX_Mixer: """ Get the MIX_Mixer that owns a MIX_Track. """
[docs] def MIX_SetTrackAudio(track: LP_MIX_Track, audio: LP_MIX_Audio) -> ctypes.c_bool: """ Set a MIX_Track's input to a MIX_Audio. """
[docs] def MIX_SetTrackAudioStream(track: LP_MIX_Track, stream: LP_SDL_AudioStream) -> ctypes.c_bool: """ Set a MIX_Track's input to an SDL_AudioStream. """
[docs] def MIX_SetTrackIOStream(track: LP_MIX_Track, io: LP_SDL_IOStream, closeio: ctypes.c_bool) -> ctypes.c_bool: """ Set a MIX_Track's input to an SDL_IOStream. """
[docs] def MIX_SetTrackRawIOStream(track: LP_MIX_Track, io: LP_SDL_IOStream, spec: LP_SDL_AudioSpec, closeio: ctypes.c_bool) -> ctypes.c_bool: """ Set a MIX_Track's input to an SDL_IOStream providing raw PCM data. """
[docs] def MIX_TagTrack(track: LP_MIX_Track, tag: ctypes.c_char_p) -> ctypes.c_bool: """ Assign an arbitrary tag to a track. """
[docs] def MIX_UntagTrack(track: LP_MIX_Track, tag: ctypes.c_char_p) -> None: """ Remove an arbitrary tag from a track. """
[docs] def MIX_GetTrackTags(track: LP_MIX_Track, count: LP_c_int) -> LP_c_char_p: """ Get the tags currently associated with a track. """
[docs] def MIX_GetTaggedTracks(mixer: LP_MIX_Mixer, tag: ctypes.c_char_p, count: LP_c_int) -> LP_LP_MIX_Track: """ Get all tracks with a specific tag. """
[docs] def MIX_SetTrackPlaybackPosition(track: LP_MIX_Track, frames: ctypes.c_int64) -> ctypes.c_bool: """ Seek a playing track to a new position in its input. """
[docs] def MIX_GetTrackPlaybackPosition(track: LP_MIX_Track) -> ctypes.c_int64: """ Get the current input position of a playing track. """
[docs] def MIX_GetTrackFadeFrames(track: LP_MIX_Track) -> ctypes.c_int64: """ Query whether a given track is fading. """
[docs] def MIX_GetTrackLoops(track: LP_MIX_Track) -> ctypes.c_int: """ Query how many loops remain for a given track. """
[docs] def MIX_SetTrackLoops(track: LP_MIX_Track, num_loops: ctypes.c_int) -> ctypes.c_bool: """ Change the number of times a currently-playing track will loop. """
[docs] def MIX_GetTrackAudio(track: LP_MIX_Track) -> LP_MIX_Audio: """ Query the MIX_Audio assigned to a track. """
[docs] def MIX_GetTrackAudioStream(track: LP_MIX_Track) -> LP_SDL_AudioStream: """ Query the SDL_AudioStream assigned to a track. """
[docs] def MIX_GetTrackRemaining(track: LP_MIX_Track) -> ctypes.c_int64: """ Return the number of sample frames remaining to be mixed in a track. """
[docs] def MIX_TrackMSToFrames(track: LP_MIX_Track, ms: ctypes.c_int64) -> ctypes.c_int64: """ Convert milliseconds to sample frames for a track's current format. """
[docs] def MIX_TrackFramesToMS(track: LP_MIX_Track, frames: ctypes.c_int64) -> ctypes.c_int64: """ Convert sample frames for a track's current format to milliseconds. """
[docs] def MIX_AudioMSToFrames(audio: LP_MIX_Audio, ms: ctypes.c_int64) -> ctypes.c_int64: """ Convert milliseconds to sample frames for a MIX_Audio's format. """
[docs] def MIX_AudioFramesToMS(audio: LP_MIX_Audio, frames: ctypes.c_int64) -> ctypes.c_int64: """ Convert sample frames for a MIX_Audio's format to milliseconds. """
[docs] def MIX_MSToFrames(sample_rate: ctypes.c_int, ms: ctypes.c_int64) -> ctypes.c_int64: """ Convert milliseconds to sample frames at a specific sample rate. """
[docs] def MIX_FramesToMS(sample_rate: ctypes.c_int, frames: ctypes.c_int64) -> ctypes.c_int64: """ Convert sample frames, at a specific sample rate, to milliseconds. """
[docs] def MIX_PlayTrack(track: LP_MIX_Track, options: SDL_PropertiesID) -> ctypes.c_bool: """ Start (or restart) mixing a track for playback. """
[docs] def MIX_PlayTag(mixer: LP_MIX_Mixer, tag: ctypes.c_char_p, options: SDL_PropertiesID) -> ctypes.c_bool: """ Start (or restart) mixing all tracks with a specific tag for playback. """
[docs] def MIX_PlayAudio(mixer: LP_MIX_Mixer, audio: LP_MIX_Audio) -> ctypes.c_bool: """ Play a MIX_Audio from start to finish without any management. """
[docs] def MIX_StopTrack(track: LP_MIX_Track, fade_out_frames: ctypes.c_int64) -> ctypes.c_bool: """ Halt a currently-playing track, possibly fading out over time. """
[docs] def MIX_StopAllTracks(mixer: LP_MIX_Mixer, fade_out_ms: ctypes.c_int64) -> ctypes.c_bool: """ Halt all currently-playing tracks, possibly fading out over time. """
[docs] def MIX_StopTag(mixer: LP_MIX_Mixer, tag: ctypes.c_char_p, fade_out_ms: ctypes.c_int64) -> ctypes.c_bool: """ Halt all tracks with a specific tag, possibly fading out over time. """
[docs] def MIX_PauseTrack(track: LP_MIX_Track) -> ctypes.c_bool: """ Pause a currently-playing track. """
[docs] def MIX_PauseAllTracks(mixer: LP_MIX_Mixer) -> ctypes.c_bool: """ Pause all currently-playing tracks. """
[docs] def MIX_PauseTag(mixer: LP_MIX_Mixer, tag: ctypes.c_char_p) -> ctypes.c_bool: """ Pause all tracks with a specific tag. """
[docs] def MIX_ResumeTrack(track: LP_MIX_Track) -> ctypes.c_bool: """ Resume a currently-paused track. """
[docs] def MIX_ResumeAllTracks(mixer: LP_MIX_Mixer) -> ctypes.c_bool: """ Resume all currently-paused tracks. """
[docs] def MIX_ResumeTag(mixer: LP_MIX_Mixer, tag: ctypes.c_char_p) -> ctypes.c_bool: """ Resume all tracks with a specific tag. """
[docs] def MIX_TrackPlaying(track: LP_MIX_Track) -> ctypes.c_bool: """ Query if a track is currently playing. """
[docs] def MIX_TrackPaused(track: LP_MIX_Track) -> ctypes.c_bool: """ Query if a track is currently paused. """
[docs] def MIX_SetMixerGain(mixer: LP_MIX_Mixer, gain: ctypes.c_float) -> ctypes.c_bool: """ Set a mixer's master gain control. """
[docs] def MIX_GetMixerGain(mixer: LP_MIX_Mixer) -> ctypes.c_float: """ Get a mixer's master gain control. """
[docs] def MIX_SetTrackGain(track: LP_MIX_Track, gain: ctypes.c_float) -> ctypes.c_bool: """ Set a track's gain control. """
[docs] def MIX_GetTrackGain(track: LP_MIX_Track) -> ctypes.c_float: """ Get a track's gain control. """
[docs] def MIX_SetTagGain(mixer: LP_MIX_Mixer, tag: ctypes.c_char_p, gain: ctypes.c_float) -> ctypes.c_bool: """ Set the gain control of all tracks with a specific tag. """
[docs] def MIX_SetMixerFrequencyRatio(mixer: LP_MIX_Mixer, ratio: ctypes.c_float) -> ctypes.c_bool: """ Set a mixer's master frequency ratio. """
[docs] def MIX_GetMixerFrequencyRatio(mixer: LP_MIX_Mixer) -> ctypes.c_float: """ Get a mixer's master frequency ratio. """
[docs] def MIX_SetTrackFrequencyRatio(track: LP_MIX_Track, ratio: ctypes.c_float) -> ctypes.c_bool: """ Change the frequency ratio of a track. """
[docs] def MIX_GetTrackFrequencyRatio(track: LP_MIX_Track) -> ctypes.c_float: """ Query the frequency ratio of a track. """
[docs] def MIX_SetTrackOutputChannelMap(track: LP_MIX_Track, chmap: LP_c_int, count: ctypes.c_int) -> ctypes.c_bool: """ Set the current output channel map of a track. """
[docs] def MIX_SetTrackStereo(track: LP_MIX_Track, gains: LP_MIX_StereoGains) -> ctypes.c_bool: """ Force a track to stereo output, with optionally left/right panning. """
[docs] def MIX_SetTrack3DPosition(track: LP_MIX_Track, position: LP_MIX_Point3D) -> ctypes.c_bool: """ Set a track's position in 3D space. """
[docs] def MIX_GetTrack3DPosition(track: LP_MIX_Track, position: LP_MIX_Point3D) -> ctypes.c_bool: """ Get a track's current position in 3D space. """
[docs] def MIX_CreateGroup(mixer: LP_MIX_Mixer) -> LP_MIX_Group: """ Create a mixing group. """
[docs] def MIX_DestroyGroup(group: LP_MIX_Group) -> None: """ Destroy a mixing group. """
[docs] def MIX_GetGroupProperties(group: LP_MIX_Group) -> SDL_PropertiesID: """ Get the properties associated with a group. """
[docs] def MIX_GetGroupMixer(group: LP_MIX_Group) -> LP_MIX_Mixer: """ Get the MIX_Mixer that owns a MIX_Group. """
[docs] def MIX_SetTrackGroup(track: LP_MIX_Track, group: LP_MIX_Group) -> ctypes.c_bool: """ Assign a track to a mixing group. """
[docs] def MIX_SetTrackStoppedCallback(track: LP_MIX_Track, cb: MIX_TrackStoppedCallback, userdata: ctypes.c_void_p) -> ctypes.c_bool: """ Set a callback that fires when a MIX_Track is stopped. """
[docs] def MIX_SetTrackRawCallback(track: LP_MIX_Track, cb: MIX_TrackMixCallback, userdata: ctypes.c_void_p) -> ctypes.c_bool: """ Set a callback that fires when a MIX_Track has initial decoded audio. """
[docs] def MIX_SetTrackCookedCallback(track: LP_MIX_Track, cb: MIX_TrackMixCallback, userdata: ctypes.c_void_p) -> ctypes.c_bool: """ Set a callback that fires when the mixer has transformed a track's audio. """
[docs] def MIX_SetGroupPostMixCallback(group: LP_MIX_Group, cb: MIX_GroupMixCallback, userdata: ctypes.c_void_p) -> ctypes.c_bool: """ Set a callback that fires when a mixer group has completed mixing. """
[docs] def MIX_SetPostMixCallback(mixer: LP_MIX_Mixer, cb: MIX_PostMixCallback, userdata: ctypes.c_void_p) -> ctypes.c_bool: """ Set a callback that fires when all mixing has completed. """
[docs] def MIX_Generate(mixer: LP_MIX_Mixer, buffer: ctypes.c_void_p, buflen: ctypes.c_int) -> ctypes.c_int: """ Generate mixer output when not driving an audio device. """
[docs] def MIX_CreateAudioDecoder(path: ctypes.c_char_p, props: SDL_PropertiesID) -> LP_MIX_AudioDecoder: """ Create a MIX_AudioDecoder from a path on the filesystem. """
[docs] def MIX_CreateAudioDecoder_IO(io: LP_SDL_IOStream, closeio: ctypes.c_bool, props: SDL_PropertiesID) -> LP_MIX_AudioDecoder: """ Create a MIX_AudioDecoder from an SDL_IOStream. """
[docs] def MIX_DestroyAudioDecoder(audiodecoder: LP_MIX_AudioDecoder) -> None: """ Destroy the specified audio decoder. """
[docs] def MIX_GetAudioDecoderProperties(audiodecoder: LP_MIX_AudioDecoder) -> SDL_PropertiesID: """ Get the properties associated with a MIX_AudioDecoder. """
[docs] def MIX_GetAudioDecoderFormat(audiodecoder: LP_MIX_AudioDecoder, spec: LP_SDL_AudioSpec) -> ctypes.c_bool: """ Query the initial audio format of a MIX_AudioDecoder. """
[docs] def MIX_DecodeAudio(audiodecoder: LP_MIX_AudioDecoder, buffer: ctypes.c_void_p, buflen: ctypes.c_int, spec: LP_SDL_AudioSpec) -> ctypes.c_int: """ Decode more audio from a MIX_AudioDecoder. """