5#include <SDL3_mixer/SDL_mixer.h>
15 return static_cast<int>(volume);
21 return static_cast<int>(volume);
27 const int channel = Mix_PlayChannel(-1, sample.get(), loop ? -1 : 0);
31 auto panning = (std::clamp(pan, -1.0F, 1.0F) + 1.0F) * 127.5F;
32 auto int_pan =
static_cast<unsigned char>(panning);
34 Mix_SetPanning(channel, 255 - int_pan, int_pan);
41 Mix_PlayMusic(sample.get(), -1);
51 Mix_FadeInMusic(music.get(), -1,
static_cast<int>(duration * 1000.0F));
57 Mix_FadeOutMusic(
static_cast<int>(duration * 1000.0F));
72 return Mix_PlayingMusic();
77 return Mix_PausedMusic();
int compute_music_volume(float vol)
int compute_sfx_volume(float vol)
void stop_music()
Stop the currently playing music.
bool is_music_paused()
Check if music is paused.
void pause_music()
Pause the currently playing music.
float get_master_volume()
Get the current master volume multiplier.
bool is_music_playing()
Check if music is currently playing.
void set_sfx_volume(float volume)
Set the SFX volume multiplier.
float get_music_volume()
Get the current music volume multiplier.
void resume_music()
Resume paused music.
void fade_in_music(const asw::Music &music, float volume, float duration)
Fade in music over a duration.
void play_music(const asw::Music &sample, float volume=1.0F)
Play a music sample.
float get_sfx_volume()
Get the current SFX volume multiplier.
void set_music_volume(float volume)
Set the music volume multiplier.
void set_master_volume(float volume)
Set the master volume multiplier (affects all audio).
void play(const asw::Sample &sample, float volume=1.0F, float pan=0.0F, bool loop=false)
Play a sample.
void fade_out_music(float duration)
Fade out the currently playing music.
std::shared_ptr< Mix_Chunk > Sample
Alias for a shared pointer to an Mix_Chunk.
std::shared_ptr< Mix_Music > Music
Alias for a shared pointer to an Mix_Music.
Sound module for the ASW library.