Game Audio Module
A C++ audio system using miniaudio with Python bindings
Loading...
Searching...
No Matches
random_sound_container.h
Go to the documentation of this file.
1#pragma once
2
3#include <vector>
4#include <string>
5#include <random>
6#include "audio_manager.h"
7
8namespace audio {
9
15 bool avoidRepeat = true;
16 float pitchMin = 1.0f;
17 float pitchMax = 1.0f;
19 float maxDuration = 0.0f;
20};
21
30public:
37 RandomSoundContainer(const std::string& name, const RandomSoundContainerConfig& config = {});
38
43
49 void AddSound(const std::string& filepath);
50
56 void LoadFromFolder(const std::string& folderPath);
57
63 void Play();
64
70 void PlayWithVolume(float volume);
71
75 void StopAll();
76
83 void SetPitchRange(float minPitch, float maxPitch);
84
90 void SetAvoidRepeat(bool avoid);
91
97 const std::string& GetName() const { return name_; }
98
104 size_t GetSoundCount() const { return sounds_.size(); }
105
115
116private:
117 std::string name_;
118 std::vector<SoundHandle> sounds_;
121 std::mt19937 rng_;
122
129};
130
131} // namespace audio
Main interface for the audio system.
Container for playing randomized sounds with pitch variation.
Definition random_sound_container.h:29
SoundHandle last_played_
Handle of the last played sound.
Definition random_sound_container.h:120
void Play()
Play a random sound from the container.
Definition random_sound_container.cpp:102
const std::string & GetName() const
Get the name of this container.
Definition random_sound_container.h:97
RandomSoundContainerConfig config_
Configuration settings.
Definition random_sound_container.h:119
SoundHandle SelectRandomSound()
Select a random sound, avoiding the last played if configured.
Definition random_sound_container.cpp:161
void PlayWithVolume(float volume)
Play a random sound with specific volume.
Definition random_sound_container.cpp:106
void SetAvoidRepeat(bool avoid)
Enable or disable repeat avoidance.
Definition random_sound_container.cpp:141
size_t GetSoundCount() const
Get the number of sounds in this container.
Definition random_sound_container.h:104
void LoadFromFolder(const std::string &folderPath)
Load all .wav files from a folder.
Definition random_sound_container.cpp:57
void StopAll()
Stop all currently playing sounds from this container.
Definition random_sound_container.cpp:129
std::mt19937 rng_
Random number generator.
Definition random_sound_container.h:121
void SetPitchRange(float minPitch, float maxPitch)
Set the pitch range for randomization.
Definition random_sound_container.cpp:136
~RandomSoundContainer()
Destructor.
Definition random_sound_container.cpp:21
std::string name_
Container name.
Definition random_sound_container.h:117
std::vector< SoundHandle > sounds_
Loaded sound handles.
Definition random_sound_container.h:118
void AddSound(const std::string &filepath)
Add a sound to the container.
Definition random_sound_container.cpp:41
SoundHandle GetRandomSound() const
Get a random sound handle without playing it.
Definition random_sound_container.cpp:145
Definition audio_group.cpp:7
Strongly typed handle for audio groups.
Definition audio_manager.h:113
static constexpr GroupHandle Invalid()
Definition audio_manager.h:116
Configuration for a random sound container.
Definition random_sound_container.h:14
float maxDuration
Maximum duration in seconds (0 = no limit)
Definition random_sound_container.h:19
bool avoidRepeat
Avoid playing the same sound twice in a row.
Definition random_sound_container.h:15
float pitchMax
Maximum pitch shift (1.0 = normal pitch)
Definition random_sound_container.h:17
float pitchMin
Minimum pitch shift (1.0 = normal pitch)
Definition random_sound_container.h:16
GroupHandle group
Audio group to assign sounds to.
Definition random_sound_container.h:18
Strongly typed handle for individual sounds.
Definition audio_manager.h:126