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 constexpr int NUM_CHANNELS = 2;
6 constexpr int SAMPLE_RATE = 48000;
7 
8 
15 class Audio {
16 
17 public:
18  float volume = 1.0f;
19  float duration = 0.0f;
20 
32  static Audio* Load(const std::string& file_Path);
33 
34 
46  void SetVolume(float vol);
47 
55  void Pause();
56 
66  void Play(bool loop = false);
67 
68  bool IsPlaying();
69 
70  void SetLoop(bool loop);
71 
72 
86  void Destroy();
87 
88  Audio(const Audio&) = delete;
89  Audio& operator=(Audio&) = delete;
90  Audio(Audio&&) = delete;
91 
92 private:
93  ma_decoder* decoder = nullptr;
94  ma_sound sound{};
95 };
96 
97 
106 bool InitAudio();
107 
116 void CloseAudio();
117 
129 void Audio_SetMasterVolume(float volume);
130 
131 
132 // extern ma_engine* engine;
133 //
134 // extern Core core;
135 
136 // TODO: create a Resource Manager
137 inline std::unordered_map<std::string, Audio*> audios;
Audio struct.
Definition: ember_audio.h:15
void Destroy()
Unload Audio allocated memory.
Definition: ember_audio.cpp:169
void Pause()
Pause audio and fade out.
Definition: ember_audio.cpp:132
Audio & operator=(Audio &)=delete
float duration
Definition: ember_audio.h:19
bool IsPlaying()
Definition: ember_audio.cpp:161
void SetLoop(bool loop)
Definition: ember_audio.cpp:165
Audio(Audio &&)=delete
float volume
Definition: ember_audio.h:18
void Play(bool loop=false)
Play audio.
Definition: ember_audio.cpp:137
static Audio * Load(const std::string &file_Path)
Load Audio and keep track of it.
Definition: ember_audio.cpp:60
void SetVolume(float vol)
Change the audio volume.
Definition: ember_audio.cpp:125
Audio(const Audio &)=delete
constexpr int SAMPLE_RATE
Definition: ember_audio.h:6
void Audio_SetMasterVolume(float volume)
Change the [audio engine] global volume.
Definition: ember_audio.cpp:181
void CloseAudio()
Close Sound Engine and free allocated resources.
Definition: ember_audio.cpp:192
std::unordered_map< std::string, Audio * > audios
Definition: ember_audio.h:137
constexpr int NUM_CHANNELS
Definition: ember_audio.h:5
bool InitAudio()
Initialize Sound Engine.
Definition: ember_audio.cpp:5