4#include <unordered_map>
49 return std::unique_ptr<AudioTrack>(
new AudioTrack(system));
81 void AddLayer(
const std::string& name,
const std::string& filepath,
82 AudioGroup* group =
nullptr,
bool looping =
true);
98 void FadeLayer(
const std::string& name,
float target_volume,
99 std::chrono::milliseconds duration);
167 std::unordered_map<std::string, Layer>
layers_;
Controls multiple sounds as a single unit.
Definition audio_group.h:24
Central manager for all audio functionality.
Definition audio_manager.h:179
Low-level audio system that interfaces directly with miniaudio.
Definition audio_system.h:32
Manages a collection of synchronized audio layers.
Definition audio_track.h:32
bool is_playing_
Whether the track is currently playing.
Definition audio_track.h:168
void Play()
Starts playing all layers in sync.
Definition audio_track.cpp:86
~AudioTrack()
Destructor.
Definition audio_track.cpp:22
void FadeLayer(const std::string &name, float target_volume, std::chrono::milliseconds duration)
Sets the target volume for a layer and fades to it over time.
Definition audio_track.cpp:47
void Update()
Updates layer fading.
Definition audio_track.cpp:103
void AddLayer(const std::string &name, const std::string &filepath, AudioGroup *group=nullptr, bool looping=true)
Adds a new layer to the track.
Definition audio_track.cpp:26
void Stop()
Stops all layers.
Definition audio_track.cpp:96
static std::unique_ptr< AudioTrack > Create(AudioSystem *system)
Factory method for creating AudioTrack instances.
Definition audio_track.h:48
void SetLayerVolume(const std::string &name, float volume)
Sets layer volume immediately without fading.
Definition audio_track.cpp:63
AudioSystem * system_
Reference to the audio system.
Definition audio_track.h:166
float GetLayerVolume(const std::string &name) const
Gets current volume of a layer.
Definition audio_track.cpp:80
void RemoveLayer(const std::string &name)
Removes a layer from the track.
Definition audio_track.cpp:38
std::unordered_map< std::string, Layer > layers_
Map of layer names to layer data.
Definition audio_track.h:167
Definition audio_group.cpp:7
Represents a single audio layer within a track.
Definition audio_track.h:148
std::chrono::steady_clock::time_point fade_start_time
When fade began.
Definition audio_track.h:153
Layer()
Default constructor for Layer.
Definition audio_track.h:161
float start_volume
Volume when fade started.
Definition audio_track.h:152
float current_volume
Current volume level.
Definition audio_track.h:150
std::chrono::milliseconds fade_duration
Duration of current fade.
Definition audio_track.h:155
std::unique_ptr< Sound > sound
The actual sound object.
Definition audio_track.h:149
std::chrono::steady_clock::time_point fade_end_time
When fade will end.
Definition audio_track.h:154
float target_volume
Target volume for fading.
Definition audio_track.h:151
bool is_fading
Whether this layer is currently fading.
Definition audio_track.h:156