@@ -44,6 +44,7 @@ void AudioMan::Clear() {
44
44
m_MinimumDistanceForPanning = 30 .0F ;
45
45
// ////////////////////////////////////////////////
46
46
47
+ m_MusicMuffled = false ;
47
48
m_MusicPath.clear ();
48
49
m_MusicPlayList.clear ();
49
50
m_SilenceTimer.Reset ();
@@ -82,6 +83,12 @@ bool AudioMan::Initialize() {
82
83
audioSystemSetupResult = (audioSystemSetupResult == FMOD_OK) ? m_AudioSystem->createChannelGroup (" UI" , &m_UIChannelGroup) : audioSystemSetupResult;
83
84
audioSystemSetupResult = (audioSystemSetupResult == FMOD_OK) ? m_AudioSystem->createChannelGroup (" Music" , &m_MusicChannelGroup) : audioSystemSetupResult;
84
85
86
+ // Add a lowpass filter to the music channel group for pause menu usage
87
+ FMOD::DSP* dsp_multibandeq;
88
+ audioSystemSetupResult = (audioSystemSetupResult== FMOD_OK) ? m_AudioSystem->createDSPByType (FMOD_DSP_TYPE_MULTIBAND_EQ, &dsp_multibandeq) : audioSystemSetupResult;
89
+ audioSystemSetupResult = (audioSystemSetupResult == FMOD_OK) ? dsp_multibandeq->setParameterFloat (1 , 22000 .0f ) : audioSystemSetupResult; // Functionally inactive lowpass filter
90
+ audioSystemSetupResult = (audioSystemSetupResult == FMOD_OK) ? m_MusicChannelGroup->addDSP (0 , dsp_multibandeq) : audioSystemSetupResult;
91
+
85
92
// Add a safety limiter to the master channel group, after fader
86
93
FMOD::DSP* dsp_limiter;
87
94
audioSystemSetupResult = (audioSystemSetupResult == FMOD_OK) ? m_AudioSystem->createDSPByType (FMOD_DSP_TYPE_LIMITER, &dsp_limiter) : audioSystemSetupResult;
@@ -1003,6 +1010,24 @@ FMOD_RESULT F_CALLBACK AudioMan::SoundChannelEndedCallback(FMOD_CHANNELCONTROL*
1003
1010
return FMOD_OK;
1004
1011
}
1005
1012
1013
+ FMOD_RESULT AudioMan::SetMusicMuffledState (bool musicMuffledState) {
1014
+ FMOD_RESULT status = FMOD_OK;
1015
+ if (musicMuffledState != m_MusicMuffled){
1016
+ FMOD::DSP* dsp_multibandeq;
1017
+ status = (status == FMOD_OK) ? m_MusicChannelGroup->getDSP (0 , &dsp_multibandeq) : status;
1018
+ float frequency = 22000 .0F ;
1019
+
1020
+ if (musicMuffledState){
1021
+ frequency = 1000 .0F ;
1022
+ }
1023
+
1024
+ status = (status == FMOD_OK) ? dsp_multibandeq->setParameterFloat (1 , frequency) : status;
1025
+ m_MusicMuffled = musicMuffledState;
1026
+ }
1027
+ return status;
1028
+ }
1029
+
1030
+
1006
1031
FMOD_VECTOR AudioMan::GetAsFMODVector (const Vector& vector, float zValue) const {
1007
1032
Vector sceneDimensions = g_SceneMan.GetScene () ? g_SceneMan.GetSceneDim () : Vector ();
1008
1033
return sceneDimensions.IsZero () ? FMOD_VECTOR{0 , 0 , zValue} : FMOD_VECTOR{vector.m_X , sceneDimensions.m_Y - vector.m_Y , zValue};
0 commit comments