Ember
A C++ 20 'game engine' built with SDL3 with wide platform support.
ember_audio.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "core/engine.h"
4 
5 
6 
10 class Audio {
11 public:
12  float volume = 1.0f;
13  float duration = 0.0f;
14 
15  static Audio* load(const std::string& file_Path, const std::string& busName = "Master");
16 
17  void set_volume(float vol);
18  void pause();
19  void play(bool loop = false);
20  bool is_playing();
21  void set_loop(bool loop);
22  void destroy();
23 
24  Audio(const Audio&) = delete;
25  Audio& operator=(Audio&) = delete;
26  Audio(Audio&&) = delete;
27 
28 private:
29  ma_decoder* decoder = nullptr;
30  ma_sound sound{};
31 
32  friend class AudioBus;
33 };
34 
38 class AudioBus {
39 public:
40  std::string _name;
41  float volume = 1.0f;
42  bool is_muted = false;
43 
44  explicit AudioBus(std::string name);
45 
46  static AudioBus& get_or_create(const std::string& name);
47 
48  void apply_volume(Audio* audio);
49 
50  void add_audio(Audio* audio);
51  void remove_audio(Audio* audio);
52 
53  void set_volume(float vol);
54  void set_mute(bool mute);
55 
56  std::vector<Audio*> get_sounds();
57 
58 private:
59  std::vector<Audio*> _sounds;
60 };
61 
62 
63 inline std::unordered_map<std::string, AudioBus> audioBuses;
Basic AudioBus.
Definition: ember_audio.h:38
void set_volume(float vol)
Definition: ember_audio.cpp:127
static AudioBus & get_or_create(const std::string &name)
Definition: ember_audio.cpp:104
float volume
Definition: ember_audio.h:41
void apply_volume(Audio *audio)
Definition: ember_audio.cpp:99
std::vector< Audio * > get_sounds()
Definition: ember_audio.cpp:141
void remove_audio(Audio *audio)
Definition: ember_audio.cpp:123
void set_mute(bool mute)
Definition: ember_audio.cpp:134
std::string _name
Definition: ember_audio.h:40
void add_audio(Audio *audio)
Definition: ember_audio.cpp:115
AudioBus(std::string name)
Definition: ember_audio.cpp:95
bool is_muted
Definition: ember_audio.h:42
Audio (sound resource)
Definition: ember_audio.h:10
void set_loop(bool loop)
Definition: ember_audio.cpp:80
void set_volume(float vol)
Definition: ember_audio.cpp:57
void destroy()
Definition: ember_audio.cpp:84
Audio & operator=(Audio &)=delete
float duration
Definition: ember_audio.h:13
bool is_playing()
Definition: ember_audio.cpp:76
Audio(Audio &&)=delete
void pause()
Definition: ember_audio.cpp:62
void play(bool loop=false)
Definition: ember_audio.cpp:67
float volume
Definition: ember_audio.h:12
Audio(const Audio &)=delete
static Audio * load(const std::string &file_Path, const std::string &busName="Master")
Definition: ember_audio.cpp:9
std::unordered_map< std::string, AudioBus > audioBuses
Global audio buses.
Definition: ember_audio.h:63