Polyphase Game Engine
Loading...
Searching...
No Matches
AudioManager.h
Go to the documentation of this file.
1#pragma once
2
3#include "EngineTypes.h"
4
6
7class SoundWave;
8class Audio3D;
9
11{
12public:
13
14 static void Initialize();
15 static void Shutdown();
16 static void Update(float deltaTime);
17
18 static void PlaySound2D(
19 SoundWave* soundWave,
20 float volumeMult = 1.0f,
21 float pitchMult = 1.0f,
22 float startTime = 0.0f,
23 bool loop = false,
24 int32_t priority = 0);
25
26 static void PlaySound3D(
27 SoundWave* soundWave,
28 glm::vec3 worldPosition,
29 float innerRadius,
30 float outerRadius,
32 float volumeMult = 1.0f,
33 float pitchMult = 1.0f,
34 float startTime = 0.0f,
35 bool loop = false,
36 int32_t priority = 0);
37
38 static void PlaySoundAtPosition(
39 SoundWave* soundWave,
40 glm::vec3 worldPosition,
41 float innerRadius,
42 float outerRadius,
44 float volumeMult = 1.0f,
45 float pitchMult = 1.0f,
46 float startTime = 0.0f,
47 bool loop = false,
48 int32_t priority = 0);
49
50 static void UpdateSound(
51 SoundWave* soundWave,
52 float volume,
53 float pitch,
54 bool loop = false,
55 int32_t priority = 0);
56
57 static void StopComponent(Audio3D* comp);
58 static void StopSounds(SoundWave* soundWave);
59 static void StopSound(const std::string& name);
60 static void StopAllSounds();
61
62 static bool IsSoundPlaying(SoundWave* soundWave);
63
64 static void SetAudioClassVolume(int8_t audioClass, float volume);
65 static void SetAudioClassPitch(int8_t audioClass, float pitch);
66 static float GetAudioClassVolume(int8_t audioClass);
67 static float GetAudioClassPitch(int8_t audioClass);
68
69 static void SetMasterVolume(float volume);
70 static void SetMasterPitch(float pitch);
71 static float GetMasterVolume();
72 static float GetMasterPitch();
73
74 // Audio-analysis helpers. Fills `outView` with the SoundWave PCM + current cursor for the voice;
75 // returns false if the voice is idle. Used by AUD_Get* in the platform-indep Audio.cpp.
76 static bool GetVoicePcmInfo(uint32_t voiceIndex, AudioAnalysis::PcmView& outView);
77
78 // Linear scan for the voice currently driving this Audio3D node. Returns the voice index, or
79 // AUDIO_MAX_VOICES if the node isn't bound to a voice right now.
80 static uint32_t FindVoiceIndex(Audio3D* component);
81
82 // Duration of the SoundWave bound to a voice slot, in seconds. Returns 0 if the slot is idle
83 // or has no wave. Pitch-independent (reports the wave's natural length).
84 static float GetVoiceDuration(uint32_t voiceIndex);
85
86 // Current playback cursor on a voice slot expressed as [0, 1] of its SoundWave's duration.
87 // Looping voices wrap via fmod; non-looping voices clamp to [0, 1]. Returns 0 for idle slots
88 // or zero-duration waves.
89 static float GetVoicePlayTimeNormalized(uint32_t voiceIndex);
90};
AttenuationFunc
Definition EngineTypes.h:485
bool Update()
Definition Engine.cpp:790
Definition Audio3d.h:8
Definition AudioManager.h:11
static void PlaySound2D(SoundWave *soundWave, float volumeMult=1.0f, float pitchMult=1.0f, float startTime=0.0f, bool loop=false, int32_t priority=0)
Definition AudioManager.cpp:519
static float GetAudioClassPitch(int8_t audioClass)
Definition AudioManager.cpp:782
static float GetMasterPitch()
Definition AudioManager.cpp:817
static void SetMasterVolume(float volume)
Definition AudioManager.cpp:794
static void StopComponent(Audio3D *comp)
Definition AudioManager.cpp:644
static uint32_t FindVoiceIndex(Audio3D *component)
Definition AudioManager.cpp:859
static float GetVoiceDuration(uint32_t voiceIndex)
Definition AudioManager.cpp:869
static void StopAllSounds()
Definition AudioManager.cpp:683
static void PlaySound3D(SoundWave *soundWave, glm::vec3 worldPosition, float innerRadius, float outerRadius, AttenuationFunc attenFunc=AttenuationFunc::Linear, float volumeMult=1.0f, float pitchMult=1.0f, float startTime=0.0f, bool loop=false, int32_t priority=0)
Definition AudioManager.cpp:550
static float GetAudioClassVolume(int8_t audioClass)
Definition AudioManager.cpp:770
static float GetVoicePlayTimeNormalized(uint32_t voiceIndex)
Definition AudioManager.cpp:876
static void StopSounds(SoundWave *soundWave)
Definition AudioManager.cpp:656
static void Shutdown()
Definition AudioManager.cpp:281
static void SetMasterPitch(float pitch)
Definition AudioManager.cpp:803
static void SetAudioClassPitch(int8_t audioClass, float pitch)
Definition AudioManager.cpp:761
static bool IsSoundPlaying(SoundWave *soundWave)
Definition AudioManager.cpp:694
static void StopSound(const std::string &name)
Definition AudioManager.cpp:670
static float GetMasterVolume()
Definition AudioManager.cpp:812
static bool GetVoicePcmInfo(uint32_t voiceIndex, AudioAnalysis::PcmView &outView)
Definition AudioManager.cpp:822
static void PlaySoundAtPosition(SoundWave *soundWave, glm::vec3 worldPosition, float innerRadius, float outerRadius, AttenuationFunc attenFunc=AttenuationFunc::Linear, float volumeMult=1.0f, float pitchMult=1.0f, float startTime=0.0f, bool loop=false, int32_t priority=0)
Definition AudioManager.cpp:585
static void UpdateSound(SoundWave *soundWave, float volume, float pitch, bool loop=false, int32_t priority=0)
Definition AudioManager.cpp:610
static void Initialize()
Definition AudioManager.cpp:276
static void SetAudioClassVolume(int8_t audioClass, float volume)
Definition AudioManager.cpp:752
Definition SoundWave.h:6
Definition AudioAnalysis.h:17