TurtleBrains  0.3.1
High quality, portable, C++ framework for rapid 2D game development.
tb_audio_manager.h
1 
10 #ifndef _TurtleBrains_AudioManager_h_
11 #define _TurtleBrains_AudioManager_h_
12 
13 #include "../core/tb_configuration.h"
14 #if defined(tb_with_audio)
15 
16 #include "../core/tb_noncopyable.h"
17 #include "../core/tb_string.h"
18 #include "../core/tb_types.h"
19 #include "tb_audio_controller.h"
20 
21 #include <memory>
22 
23 namespace tbImplementation { class AudioManagerCreator; struct AudioManagerData; }
24 
25 namespace TurtleBrains
26 {
27  namespace Audio
28  {
35  {
36  public:
48 
49  //
50  // example_event_table.json
51  //
52  //{ "audio_events":[
53  // "version":2,
54  // "root_path":"data/../audio",
55  // { "name":"simple", "source":"data/sound.wav" },
56  // { "name":"loop", "source":"data/sound.wav", "looping":true },
57  // { "name":"music", "source":"data/music.ogg", "looping":true, "music":true },
58  // { "name":"music_streaming", "source":"data/music.ogg", "looping":true, "music":true, "streaming":true },
59  // { "name":"music_loop_points", "source":"data/music.ogg", "looping":true, "music":true, "streaming":true, "start_loop":50000, "end_loop":403032 },
60  // { "name":"music_jingle", "source":"data/jingle.wav", "music":true },
61  // { "name":"extra", "source":"data/sound.wav", "pitch":1.0, "volume":1.0 },
62  // { "name":"multi_file", "source":[
63  // "data/sound1.wav",
64  // "data/sound2.wav" ]
65  // },
66  // { "name":"multi_custom", "source":[
67  // { "file":"data/sound1.wav", "pitch":1.0, "volume":1.0 },
68  // { "file":"data/sound2.wav", "min_pitch":0.8, "max_pitch":1.2, "min_volume":0.5, "max_volume":0.6 } ]
69  // },
70  // { "name":"multi_mixed", "source":[
71  // "data/sound1.wav",
72  // "data/sound2.wav",
73  // { "file":"data/sound3.wav", "pitch":1.0, "volume":1.0 },
74  // { "file":"data/sound4.wav", "min_pitch":0.8, "max_pitch":1.2, "min_volume":0.5, "max_volume":0.6 } ]
75  // }
76  // ]
77  // }
78  //
79  // The json data does not need to contain the optional parameters shown below with their default values.
80  // looping(false), pitch(1.0), volume(1.0), min_pitch(1.0), max_pitch(1.0), min_volume(1.0), max_volume(1.0)
81  //
82  bool LoadEventTable(const tbCore::tbString& eventTableName, const tbCore::tbString& eventTableFile);
83 
92  void UnloadEventTable(const tbCore::tbString& eventTableName);
93 
107  AudioHandle CreateSoundFromFile(const tbCore::tbString& filename, const bool isStreaming = false);
108 
117  void DestroySound(const AudioHandle& audioHandle);
118 
133  AudioController PlayEvent(const tbCore::tbString& eventTableName, const tbCore::tbString& eventName);
134 
152  AudioController PlaySound(const AudioHandle& audioHandle, const bool isLooping = false, const bool isMusic = false);
153 
157  float GetGlobalMusicVolume(void) const;
158 
169  void SetGlobalMusicVolume(const float musicVolume);
170 
174  float GetGlobalEffectVolume(void) const;
175 
186  void SetGlobalEffectVolume(const float effectVolume);
187 
195  void PauseAllAudio(void);
196 
200  void ResumeAllAudio(void);
201 
207 
208  private:
209  friend class tbImplementation::AudioManagerCreator;
210 
215  AudioManager(void);
216 
221  ~AudioManager(void);
222 
223  std::unique_ptr<tbImplementation::AudioManagerData> mData;
224  };
225 
231 
232  }; /* namespace Audio */
233 }; /* namespace TurtleBrains */
234 
235 namespace tbAudio = TurtleBrains::Audio;
236 
237 #endif /* tb_with_audio */
238 #endif /* _TurtleBrains_AudioManager_h_ */
void SetGlobalMusicVolume(const float musicVolume)
float GetGlobalEffectVolume(void) const
float GetGlobalMusicVolume(void) const
AudioController PlaySound(const AudioHandle &audioHandle, const bool isLooping=false, const bool isMusic=false)
void DestroySound(const AudioHandle &audioHandle)
tbCore::uint32 AudioHandle
Definition: tb_audio_controller.h:27
void UnloadEventTable(const tbCore::tbString &eventTableName)
Definition: tb_noncopyable.h:22
AudioController PlayEvent(const tbCore::tbString &eventTableName, const tbCore::tbString &eventName)
Here is some information about the primary namespace.
Definition: tb_application_dialog.h:21
uint64_t uint64
Unsigned integer with a size of 64 bits, Supports values from 0 to (2^64 - 1).
Definition: tb_types.h:30
AudioManager & theAudioManager
AudioHandle CreateSoundFromFile(const tbCore::tbString &filename, const bool isStreaming=false)
Definition: tb_audio_controller.h:50
Definition: tb_audio_manager.h:34
bool LoadEventTable(const tbCore::tbString &eventTableName, const tbCore::tbString &eventTableFile)
tbCore::uint64 ComputeMemoryUsage(void) const
Bring some sound into the games created with TurtleBrains using a very simple fire and forget AudioMa...
Definition: tb_audio_controller.h:20
void SetGlobalEffectVolume(const float effectVolume)
std::string tbString
Definition: tb_string.h:335
Definition: tb_application_dialog.h:19