ReverbSubmix
ReverbSubmix
#Overview
name: ReverbSubmix
The value of this variable can be defined or overridden in .ini config files. 2
.ini config files referencing this setting variable.
It is referenced in 3
C++ source files.
#Summary
#Usage in the C++ source code
The purpose of ReverbSubmix is to define the submix through which all sounds set to use reverb are routed in Unreal Engine’s audio system. This setting variable is crucial for the audio processing and mixing pipeline within the engine.
ReverbSubmix is primarily used by the Audio Mixer subsystem of Unreal Engine. This can be seen from its usage in the AudioMixer module, specifically in the FMixerDevice class.
The value of this variable is set in the UAudioSettings class, which is a part of the Engine module. It is defined as a config property, meaning it can be configured in the project settings or through configuration files.
ReverbSubmix interacts with other audio-related variables, particularly within the UAudioSettings class. It is used alongside other submix settings like EQSubmix, which is used for legacy EQ routing.
Developers must be aware that changing the ReverbSubmix value at runtime will prompt a restart of the engine to take effect. This is evident from the PostEditChangeChainProperty function in AudioSettings.cpp, where changes to ReverbSubmix trigger a restart prompt.
Best practices when using this variable include:
- Ensure that the ReverbSubmix is properly set to a valid SoundSubmix asset in the project settings.
- Be cautious when modifying this value, as it affects the entire audio routing for reverb effects in the project.
- Consider the performance implications of the chosen reverb submix, as it will process all sounds using reverb.
- Coordinate changes to this setting with the audio team, as it can significantly impact the overall sound design of the project.
- Remember that changes to this setting require an engine restart to take effect, so plan accordingly during development and testing phases.
#Setting Variables
#References In INI files
Location: <Workspace>/Engine/Config/BaseEngine.ini:1599, section: [/Script/Engine.AudioSettings]
- INI Section:
/Script/Engine.AudioSettings
- Raw value:
/Engine/EngineSounds/Submixes/MasterReverbSubmixDefault.MasterReverbSubmixDefault
- Is Array:
False
Location: <Workspace>/Projects/Lyra/Config/DefaultEngine.ini:253, section: [/Script/Engine.AudioSettings]
- INI Section:
/Script/Engine.AudioSettings
- Raw value:
/Engine/EngineSounds/Submixes/MasterReverbSubmixDefault.MasterReverbSubmixDefault
- Is Array:
False
#References in C++ code
#Callsites
This variable is referenced in the following C++ source code:
#Loc: <Workspace>/Engine/Source/Runtime/AudioMixer/Private/AudioMixerDevice.cpp:1172
Scope (from outer to inner):
file
namespace Audio
function void FMixerDevice::InitSoundSubmixes
Source code excerpt:
}
LoadRequiredSubmix(ERequiredSubmixes::Reverb, TEXT("MasterReverbSubmixDefault"), true /* DefaultMuteWhenBackgrounded */, AudioSettings->ReverbSubmix);
if (!DisableSubmixEffectEQCvar)
{
LoadRequiredSubmix(ERequiredSubmixes::EQ, TEXT("MasterEQSubmixDefault"), false /* DefaultMuteWhenBackgrounded */, AudioSettings->EQSubmix);
}
#Loc: <Workspace>/Engine/Source/Runtime/Engine/Classes/Sound/AudioSettings.h:162
Scope (from outer to inner):
file
class class UAudioSettings : public UDeveloperSettings
Source code excerpt:
/** The submix through which all sounds set to use reverb are routed */
UPROPERTY(config, EditAnywhere, Category="Mix", meta=(AllowedClasses="/Script/Engine.SoundSubmix"))
FSoftObjectPath ReverbSubmix;
/** The submix through which all sounds set to use legacy EQ system are routed */
UPROPERTY(config, EditAnywhere, Category="Mix", meta=(AllowedClasses="/Script/Engine.SoundSubmix", DisplayName = "EQ Submix (Legacy)"), AdvancedDisplay)
FSoftObjectPath EQSubmix;
/** Sample rate used for voice over IP. VOIP audio is resampled to the application's sample rate on the receiver side. */
#Loc: <Workspace>/Engine/Source/Runtime/Engine/Private/AudioSettings.cpp:87
Scope (from outer to inner):
file
function void UAudioSettings::PostEditChangeChainProperty
Source code excerpt:
}
else if(PropertyName == GET_MEMBER_NAME_CHECKED(UAudioSettings, EQSubmix)
|| PropertyName == GET_MEMBER_NAME_CHECKED(UAudioSettings, ReverbSubmix))
{
bPromptRestartRequired = true;
}
else if (PropertyName == GET_MEMBER_NAME_CHECKED(UAudioSettings, DefaultAudioCompressionType))
{
// loop through all USoundWaves and update the compression type w/ the new defualt