The Battle for Wesnoth  1.19.24+dev
Classes | Functions | Variables
sound Namespace Reference

Audio output for sound and music. More...

Classes

struct  driver_status
 
class  music_thinker
 
class  music_muter
 
class  music_track
 Internal representation of music tracks. More...
 

Functions

utils::optional< unsigned int > get_current_track_index ()
 
std::shared_ptr< music_trackget_current_track ()
 
std::shared_ptr< music_trackget_previous_music_track ()
 
void set_previous_track (std::shared_ptr< music_track > track)
 
unsigned int get_num_tracks ()
 
std::shared_ptr< music_trackget_track (unsigned int i)
 
void set_track (unsigned int i, const std::shared_ptr< music_track > &to)
 
void remove_track (unsigned int i)
 
std::string current_driver ()
 
std::vector< std::string > enumerate_drivers ()
 
bool init_sound ()
 
void close_sound ()
 
void reset_sound ()
 
void stop_music ()
 
void stop_sound ()
 
void stop_bell ()
 
void stop_UI_sound ()
 
void play_music_once (const std::string &file)
 
void empty_playlist ()
 
void play_music ()
 
void play_track (unsigned int i)
 
static void play_new_music ()
 
void play_music_config (const config &music_node, bool allow_interrupt_current_track, int i)
 
void commit_music_changes ()
 
void write_music_play_list (config &snapshot)
 
void reposition_sound (unsigned id, unsigned int distance)
 
bool is_sound_playing (int id)
 
void stop_sound (unsigned id)
 
static void play_sound_internal (const std::string &files, sound_tracks::type group, unsigned int repeats=0, unsigned int distance=0, unsigned int soundsource_id=UINT_MAX, const std::chrono::milliseconds &loop_ticks=0ms, const std::chrono::milliseconds &fadein_ticks=0ms)
 
void play_sound (const std::string &files, sound_tracks::type group, unsigned int repeats)
 
void play_sound_positioned (const std::string &files, int repeats, unsigned int distance, unsigned int id)
 
void play_bell (const std::string &files)
 
void play_timer (const std::string &files, const std::chrono::milliseconds &loop_ticks, const std::chrono::milliseconds &fadein_ticks)
 
void play_UI_sound (const std::string &files)
 
int get_music_volume ()
 
void set_music_volume (int vol)
 
int get_sound_volume ()
 
void set_sound_volume (int vol)
 
void set_bell_volume (int vol)
 
void set_UI_volume (int vol)
 
void flush_cache ()
 

Variables

std::mutex soundsource_map_mutex
 
std::map< unsigned int, int > soundsource_map
 
std::vector< std::shared_ptr< MIX_Track > > tracks
 
std::map< int, sound_tracks::type > track_map
 
std::map< std::string, std::shared_ptr< MIX_Audio > > music_cache
 
std::vector< std::string > music_cache_insertion_order
 
std::map< std::string, std::shared_ptr< MIX_Audio > > sound_cache
 
std::vector< std::string > sound_cache_insertion_order
 
MIX_Mixer * mixer
 
std::size_t mixer_init_counter = 0
 

Detailed Description

Audio output for sound and music.

This module provides the ability to play music and sounds. Setting music volume to 0 will stop the music.

Function Documentation

◆ close_sound()

void sound::close_sound ( )

◆ commit_music_changes()

void sound::commit_music_changes ( )

◆ current_driver()

std::string sound::current_driver ( )

Definition at line 304 of file sound.cpp.

◆ empty_playlist()

void sound::empty_playlist ( )

◆ enumerate_drivers()

std::vector< std::string > sound::enumerate_drivers ( )

Definition at line 310 of file sound.cpp.

References n.

◆ flush_cache()

void sound::flush_cache ( )

◆ get_current_track()

std::shared_ptr< sound::music_track > sound::get_current_track ( )

Definition at line 124 of file sound.cpp.

Referenced by impl_music_get().

◆ get_current_track_index()

utils::optional< unsigned int > sound::get_current_track_index ( )

Definition at line 117 of file sound.cpp.

Referenced by impl_music_get().

◆ get_music_volume()

int sound::get_music_volume ( )

Definition at line 955 of file sound.cpp.

References cursor::get(), and tracks.

Referenced by impl_music_get().

◆ get_num_tracks()

unsigned int sound::get_num_tracks ( )

Definition at line 137 of file sound.cpp.

Referenced by impl_music_len(), impl_music_set(), and intf_music_next().

◆ get_previous_music_track()

std::shared_ptr< sound::music_track > sound::get_previous_music_track ( )

Definition at line 128 of file sound.cpp.

Referenced by impl_music_get().

◆ get_sound_volume()

int sound::get_sound_volume ( )

Definition at line 975 of file sound.cpp.

References cursor::get(), and tracks.

Referenced by impl_audio_get().

◆ get_track()

std::shared_ptr< music_track > sound::get_track ( unsigned int  i)

Definition at line 142 of file sound.cpp.

References i.

Referenced by impl_music_get().

◆ init_sound()

bool sound::init_sound ( )

◆ is_sound_playing()

bool sound::is_sound_playing ( int  id)

◆ play_bell()

void sound::play_bell ( const std::string &  files)

◆ play_music()

void sound::play_music ( )

◆ play_music_config()

void sound::play_music_config ( const config music_node,
bool  allow_interrupt_current_track,
int  i 
)

◆ play_music_once()

void sound::play_music_once ( const std::string &  file)

◆ play_new_music()

static void sound::play_new_music ( )
static

◆ play_sound()

void sound::play_sound ( const std::string &  files,
sound_tracks::type  group,
unsigned int  repeats 
)

◆ play_sound_internal()

static void sound::play_sound_internal ( const std::string &  files,
sound_tracks::type  group,
unsigned int  repeats = 0,
unsigned int  distance = 0,
unsigned int  soundsource_id = UINT_MAX,
const std::chrono::milliseconds &  loop_ticks = 0ms,
const std::chrono::milliseconds &  fadein_ticks = 0ms 
)
static

◆ play_sound_positioned()

void sound::play_sound_positioned ( const std::string &  files,
int  repeats,
unsigned int  distance,
unsigned int  id 
)

◆ play_timer()

void sound::play_timer ( const std::string &  files,
const std::chrono::milliseconds &  loop_ticks,
const std::chrono::milliseconds &  fadein_ticks 
)

◆ play_track()

void sound::play_track ( unsigned int  i)

Definition at line 548 of file sound.cpp.

References choose_track(), i, play_music(), and set_previous_track().

Referenced by impl_music_set(), and intf_music_next().

◆ play_UI_sound()

void sound::play_UI_sound ( const std::string &  files)

◆ remove_track()

void sound::remove_track ( unsigned int  i)

Definition at line 162 of file sound.cpp.

References i.

Referenced by impl_music_set(), and intf_music_remove().

◆ reposition_sound()

void sound::reposition_sound ( unsigned  id,
unsigned int  distance 
)

Definition at line 774 of file sound.cpp.

References DISTANCE_SILENT, cursor::get(), and tracks.

Referenced by stop_sound(), and soundsource::positional_source::update_positions().

◆ reset_sound()

void sound::reset_sound ( )

◆ set_bell_volume()

void sound::set_bell_volume ( int  vol)

Definition at line 1003 of file sound.cpp.

References cursor::get(), and tracks.

Referenced by init_sound(), and prefs::set_bell_volume().

◆ set_music_volume()

void sound::set_music_volume ( int  vol)

Definition at line 964 of file sound.cpp.

References cursor::get(), and tracks.

Referenced by impl_music_set(), init_sound(), and prefs::set_music_volume().

◆ set_previous_track()

void sound::set_previous_track ( std::shared_ptr< music_track track)

◆ set_sound_volume()

void sound::set_sound_volume ( int  vol)

Definition at line 984 of file sound.cpp.

References cursor::get(), i, and tracks.

Referenced by impl_audio_set(), init_sound(), and prefs::set_sound_volume().

◆ set_track()

void sound::set_track ( unsigned int  i,
const std::shared_ptr< music_track > &  to 
)

Definition at line 155 of file sound.cpp.

References i.

Referenced by impl_music_set().

◆ set_UI_volume()

void sound::set_UI_volume ( int  vol)

Definition at line 1015 of file sound.cpp.

References cursor::get(), i, and tracks.

Referenced by init_sound(), and prefs::set_ui_volume().

◆ stop_bell()

void sound::stop_bell ( )

Definition at line 505 of file sound.cpp.

References mixer.

Referenced by close_sound(), reset_sound(), prefs::set_turn_bell(), and countdown_clock::~countdown_clock().

◆ stop_music()

void sound::stop_music ( )

Definition at line 487 of file sound.cpp.

References cursor::get(), and tracks.

Referenced by close_sound(), do_gameloop(), reset_sound(), and prefs::set_music().

◆ stop_sound() [1/2]

void sound::stop_sound ( )

◆ stop_sound() [2/2]

void sound::stop_sound ( unsigned  id)

Definition at line 798 of file sound.cpp.

References DISTANCE_SILENT, and reposition_sound().

Referenced by close_sound().

◆ stop_UI_sound()

void sound::stop_UI_sound ( )

Definition at line 513 of file sound.cpp.

References mixer.

Referenced by close_sound(), reset_sound(), and prefs::set_ui_sound().

◆ write_music_play_list()

void sound::write_music_play_list ( config snapshot)

Definition at line 764 of file sound.cpp.

Referenced by impl_music_get(), and play_controller::to_config().

Variable Documentation

◆ mixer

MIX_Mixer* sound::mixer

◆ mixer_init_counter

std::size_t sound::mixer_init_counter = 0

Definition at line 54 of file sound.cpp.

Referenced by close_sound(), and init_sound().

◆ music_cache

std::map<std::string, std::shared_ptr<MIX_Audio> > sound::music_cache

Definition at line 47 of file sound.cpp.

Referenced by flush_cache(), and play_new_music().

◆ music_cache_insertion_order

std::vector<std::string> sound::music_cache_insertion_order

Definition at line 48 of file sound.cpp.

Referenced by flush_cache(), and play_new_music().

◆ sound_cache

std::map<std::string, std::shared_ptr<MIX_Audio> > sound::sound_cache

Definition at line 50 of file sound.cpp.

Referenced by flush_cache(), and play_sound_internal().

◆ sound_cache_insertion_order

std::vector<std::string> sound::sound_cache_insertion_order

Definition at line 51 of file sound.cpp.

Referenced by flush_cache(), and play_sound_internal().

◆ soundsource_map

std::map<unsigned int, int> sound::soundsource_map

Definition at line 42 of file sound.cpp.

Referenced by play_sound_internal().

◆ soundsource_map_mutex

std::mutex sound::soundsource_map_mutex

Definition at line 41 of file sound.cpp.

Referenced by play_sound_internal().

◆ track_map

std::map<int, sound_tracks::type> sound::track_map

Definition at line 45 of file sound.cpp.

Referenced by init_sound(), and play_sound_internal().

◆ tracks

std::vector<std::shared_ptr<MIX_Track> > sound::tracks