Skip to content

Commit db7ad68

Browse files
committed
make the pause muffle the music
1 parent f812ad6 commit db7ad68

File tree

4 files changed

+33
-0
lines changed

4 files changed

+33
-0
lines changed

Source/Managers/ActivityMan.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -375,6 +375,7 @@ void ActivityMan::PauseActivity(bool pause, bool skipPauseMenu) {
375375
m_ResumingActivityFromPauseMenu = false;
376376
m_SkipPauseMenuWhenPausingActivity = skipPauseMenu;
377377
g_AudioMan.PauseIngameSounds(pause);
378+
g_AudioMan.SetMusicMuffledState(pause);
378379
g_ConsoleMan.PrintString("SYSTEM: Activity \"" + m_Activity->GetPresetName() + "\" was " + (pause ? "paused" : "resumed"));
379380
}
380381

Source/Managers/AudioMan.cpp

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ void AudioMan::Clear() {
4444
m_MinimumDistanceForPanning = 30.0F;
4545
//////////////////////////////////////////////////
4646

47+
m_MusicMuffled = false;
4748
m_MusicPath.clear();
4849
m_MusicPlayList.clear();
4950
m_SilenceTimer.Reset();
@@ -82,6 +83,12 @@ bool AudioMan::Initialize() {
8283
audioSystemSetupResult = (audioSystemSetupResult == FMOD_OK) ? m_AudioSystem->createChannelGroup("UI", &m_UIChannelGroup) : audioSystemSetupResult;
8384
audioSystemSetupResult = (audioSystemSetupResult == FMOD_OK) ? m_AudioSystem->createChannelGroup("Music", &m_MusicChannelGroup) : audioSystemSetupResult;
8485

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+
8592
// Add a safety limiter to the master channel group, after fader
8693
FMOD::DSP* dsp_limiter;
8794
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*
10031010
return FMOD_OK;
10041011
}
10051012

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+
10061031
FMOD_VECTOR AudioMan::GetAsFMODVector(const Vector& vector, float zValue) const {
10071032
Vector sceneDimensions = g_SceneMan.GetScene() ? g_SceneMan.GetSceneDim() : Vector();
10081033
return sceneDimensions.IsZero() ? FMOD_VECTOR{0, 0, zValue} : FMOD_VECTOR{vector.m_X, sceneDimensions.m_Y - vector.m_Y, zValue};

Source/Managers/AudioMan.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -302,6 +302,11 @@ namespace RTE {
302302

303303
/// Clears the music queue.
304304
void ClearMusicQueue() { m_MusicPlayList.clear(); }
305+
306+
/// Sets the music muffled state.
307+
/// @param musicMuffledState The new music muffled state to set.
308+
/// @return Whether the new music muffled state was successfully set.
309+
FMOD_RESULT SetMusicMuffledState(bool musicMuffledState);
305310
#pragma endregion
306311

307312
#pragma region Lua Sound File Playing
@@ -397,6 +402,7 @@ namespace RTE {
397402
float m_MinimumDistanceForPanning;
398403
//////////////////////////////////////////////////
399404

405+
bool m_MusicMuffled; //!< Whether the music bus is muffled.
400406
std::string m_MusicPath; //!< The path to the last played music stream.
401407
std::list<std::string> m_MusicPlayList; //!< Playlist of paths to music to play after the current non looping one is done.
402408
Timer m_SilenceTimer; //!< Timer for measuring silences between songs.

Source/Menus/TitleScreen.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -474,6 +474,7 @@ void TitleScreen::UpdateTitleTransitions() {
474474
m_GameLogo.SetPos(Vector(static_cast<float>(m_TitleScreenMaxWidth / 2), m_GameLogoPlanetViewOffsetY));
475475
m_StationOrbitTimer.SetElapsedRealTimeS(m_StationOrbitTimerElapsedTime);
476476
g_AudioMan.PlayMusic("Base.rte/Music/dBSoundworks/thisworld5.ogg", -1);
477+
g_AudioMan.SetMusicMuffledState(false);
477478
}
478479
g_AudioMan.SetTempMusicVolume(EaseOut(0, 1.0F, m_SectionProgress));
479480
m_FadeAmount = static_cast<int>(LERP(0, 1.0F, 255.0F, 0, m_SectionProgress));

0 commit comments

Comments
 (0)