EQSubmix
EQSubmix
#Overview
name: EQSubmix
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 4
C++ source files.
#Summary
#Usage in the C++ source code
The purpose of EQSubmix is to provide a default submix for routing sounds that use the legacy EQ system in Unreal Engine’s audio system. This setting variable is part of the audio mixing and processing infrastructure of the engine.
The EQSubmix variable is primarily used by the AudioMixer module and the Engine module. It’s referenced in the FMixerDevice class, which is responsible for audio device management and mixing, and in the UAudioSettings class, which handles global audio settings for the engine.
The value of this variable is set in the project’s audio settings. It can be configured through the Unreal Engine editor in the project settings under the “Audio” category.
EQSubmix interacts with other audio-related variables and systems, such as the DisableSubmixEffectEQCvar, which can disable the EQ submix effect. It’s also used in conjunction with other submix-related settings like ReverbSubmix.
Developers should be aware that changing the EQSubmix setting requires a restart of the engine for the changes to take effect. This is evidenced by the bPromptRestartRequired flag being set when this property is changed.
Best practices when using this variable include:
- Ensure that the referenced submix object exists and is properly set up for EQ processing.
- Consider the performance implications of routing sounds through an additional submix for EQ processing.
- Be mindful of how this setting interacts with other audio settings and the overall audio hierarchy in your project.
- When making changes to this setting, remember that a restart is required for the changes to take effect.
- Use this setting judiciously, as it affects all sounds using the legacy EQ system. For more granular control, consider using individual submixes for specific sound groups.
#Setting Variables
#References In INI files
Location: <Workspace>/Engine/Config/BaseEngine.ini:1600, section: [/Script/Engine.AudioSettings]
- INI Section:
/Script/Engine.AudioSettings
- Raw value:
/Engine/EngineSounds/Submixes/MasterEQSubmixDefault.MasterEQSubmixDefault
- Is Array:
False
Location: <Workspace>/Projects/Lyra/Config/DefaultEngine.ini:254, section: [/Script/Engine.AudioSettings]
- INI Section:
/Script/Engine.AudioSettings
- Raw value:
/Engine/EngineSounds/Submixes/MasterEQSubmixDefault.MasterEQSubmixDefault
- 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:1176
Scope (from outer to inner):
file
namespace Audio
function void FMixerDevice::InitSoundSubmixes
Source code excerpt:
if (!DisableSubmixEffectEQCvar)
{
LoadRequiredSubmix(ERequiredSubmixes::EQ, TEXT("MasterEQSubmixDefault"), false /* DefaultMuteWhenBackgrounded */, AudioSettings->EQSubmix);
}
LoadPluginSoundSubmixes();
for (TObjectIterator<USoundSubmixBase> It; It; ++It)
{
#Loc: <Workspace>/Engine/Source/Runtime/Engine/Classes/Sound/AudioSettings.h:166
Scope (from outer to inner):
file
class class UAudioSettings : public UDeveloperSettings
Source code excerpt:
/** 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. */
UPROPERTY(config, EditAnywhere, Category = "Audio", meta = (DisplayName = "VOIP Sample Rate"))
EVoiceSampleRate VoiPSampleRate;
/** Default audio compression type to use for audio assets. */
#Loc: <Workspace>/Engine/Source/Runtime/Engine/Private/AudioSettings.cpp:86
Scope (from outer to inner):
file
function void UAudioSettings::PostEditChangeChainProperty
Source code excerpt:
bPromptRestartRequired = true;
}
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))
{
#Loc: <Workspace>/Engine/Source/Runtime/Engine/Private/SoundWave.cpp:3326
Scope (from outer to inner):
file
function void USoundWave::Parse
Source code excerpt:
{
UAudioSettings* Settings = GetMutableDefault<UAudioSettings>();
WaveInstance->SoundSubmix = Cast<USoundSubmix>(FSoftObjectPtr(Settings->EQSubmix).Get());
}
else if (SoundClassProperties->DefaultSubmix)
{
WaveInstance->SoundSubmix = SoundClassProperties->DefaultSubmix;
}