Game Audio Module
A C++ audio system using miniaudio with Python bindings
Loading...
Searching...
No Matches
audio_system.h
Go to the documentation of this file.
1#pragma once
2
3#include "miniaudio/miniaudio.h"
4#include "vec3.h"
5#include <memory>
6#include <string>
7#include <unordered_map>
8
14namespace audio {
15
16// Forward declarations
17class AudioGroup;
18class Sound;
19
33 public:
40
47
58 std::unique_ptr<Sound> CreateSound(const std::string& filepath, AudioGroup* group = nullptr);
59
68 std::unique_ptr<AudioGroup> CreateGroup();
69
75 void SetMasterVolume(float volume);
76
82 float GetMasterVolume() const { return master_volume_; }
83
86
96 void SetListenerPosition(const Vec3& position, ma_uint32 listenerIndex = 0);
97
104 Vec3 GetListenerPosition(ma_uint32 listenerIndex = 0) const;
105
115 void SetListenerDirection(const Vec3& direction, ma_uint32 listenerIndex = 0);
116
123 Vec3 GetListenerDirection(ma_uint32 listenerIndex = 0) const;
124
134 void SetListenerUp(const Vec3& up, ma_uint32 listenerIndex = 0);
135
142 Vec3 GetListenerUp(ma_uint32 listenerIndex = 0) const;
143
149 ma_engine* GetEngine() { return &engine_; }
150
152
153 private:
154 ma_engine engine_;
156
164};
165
166} // namespace audio
Controls multiple sounds as a single unit.
Definition audio_group.h:24
Low-level audio system that interfaces directly with miniaudio.
Definition audio_system.h:32
ma_engine * GetEngine()
Get access to the miniaudio engine (for advanced use)
Definition audio_system.h:149
void SetListenerUp(const Vec3 &up, ma_uint32 listenerIndex=0)
Set the listener up vector.
Definition audio_system.cpp:81
bool listener_state_dirty_
Flag to track if listener state needs update.
Definition audio_system.h:162
Vec3 cached_listener_up_
Cached listener up vector.
Definition audio_system.h:161
float master_volume_
Master volume level.
Definition audio_system.h:155
AudioSystem()
Constructor.
Definition audio_system.cpp:9
std::unique_ptr< Sound > CreateSound(const std::string &filepath, AudioGroup *group=nullptr)
Creates a new Sound object.
Definition audio_system.cpp:27
~AudioSystem()
Destructor.
Definition audio_system.cpp:19
std::unique_ptr< AudioGroup > CreateGroup()
Creates a new AudioGroup object.
Definition audio_system.cpp:31
void SetMasterVolume(float volume)
Sets the master volume for all audio.
Definition audio_system.cpp:35
void SetListenerDirection(const Vec3 &direction, ma_uint32 listenerIndex=0)
Set the listener direction (forward vector)
Definition audio_system.cpp:61
Vec3 GetListenerDirection(ma_uint32 listenerIndex=0) const
Get the listener direction.
Definition audio_system.cpp:76
Vec3 GetListenerUp(ma_uint32 listenerIndex=0) const
Get the listener up vector.
Definition audio_system.cpp:96
ma_engine engine_
miniaudio engine instance
Definition audio_system.h:154
Vec3 cached_listener_position_
Cached listener position to avoid redundant updates.
Definition audio_system.h:159
void SetListenerPosition(const Vec3 &position, ma_uint32 listenerIndex=0)
Set the listener position in 3D space.
Definition audio_system.cpp:41
float GetMasterVolume() const
Gets the current master volume.
Definition audio_system.h:82
Vec3 cached_listener_direction_
Cached listener direction.
Definition audio_system.h:160
Vec3 GetListenerPosition(ma_uint32 listenerIndex=0) const
Get the listener position.
Definition audio_system.cpp:56
Definition audio_group.cpp:7
3D vector for spatial audio positioning
Definition vec3.h:46
3D vector class for spatial audio positioning