BackCenter
BackCenter
#Overview
name: BackCenter
The value of this variable can be defined or overridden in .ini config files. 1
.ini config file referencing this setting variable.
It is referenced in 9
C++ source files.
#Summary
#Usage in the C++ source code
The purpose of BackCenter is to represent the back center audio channel in Unreal Engine’s audio mixing and sound field rendering systems. This channel is part of the surround sound configuration and is typically used in multi-channel audio setups.
BackCenter is primarily used in the Audio Mixer and Sound Field Rendering subsystems of Unreal Engine. It is referenced in several core modules, including:
- Synthesis Plugin
- AudioMixer
- AudioMixerCore
- Engine
- SoundFieldRendering
The value of this variable is typically set as part of the audio channel configuration. It’s defined as an enum value in the EAudioMixerChannel namespace, which suggests that it’s a constant rather than a variable whose value changes during runtime.
BackCenter interacts with other audio channel variables, such as FrontLeft, FrontRight, BackLeft, BackRight, and others. It’s often used in channel mapping operations, azimuth calculations for spatial audio, and in sound field encoding/decoding processes.
Developers should be aware of the following when using this variable:
- BackCenter is part of a surround sound setup and may not be present in all audio configurations.
- In some cases, if there’s no BackRight channel, the BackCenter channel may be used as a substitute.
- The azimuth (horizontal angle) associated with BackCenter is typically 180 degrees, directly behind the listener.
Best practices when using this variable include:
- Ensure that your audio content is mixed appropriately for systems that include a BackCenter channel.
- When developing spatial audio features, consider how the BackCenter channel contributes to the overall sound field.
- Be aware of the channel count and configuration of your target platforms, as not all systems will support or utilize a BackCenter channel.
- When converting between different channel configurations, handle the BackCenter channel appropriately to maintain spatial accuracy.
#Setting Variables
#References In INI files
Location: <Workspace>/Engine/Config/BaseEngine.ini:1579, section: [AudioChannelAzimuthMap]
- INI Section:
AudioChannelAzimuthMap
- Raw value:
180
- Is Array:
False
#References in C++ code
#Callsites
This variable is referenced in the following C++ source code:
#Loc: <Workspace>/Engine/Plugins/Runtime/Synthesis/Source/Synthesis/Private/SubmixChannelFormatConverter.cpp:29
Scope (from outer to inner):
file
namespace Audio
namespace SubmixChannelFormatConverterPrivate
Source code excerpt:
{ EAudioMixerChannel::FrontLeft, { EAudioMixerChannel::BackLeft, EAudioMixerChannel::SideLeft, EAudioMixerChannel::TopBackLeft } },
{ EAudioMixerChannel::FrontRight, { EAudioMixerChannel::BackRight, EAudioMixerChannel::SideRight, EAudioMixerChannel::TopBackRight } },
{ EAudioMixerChannel::FrontCenter, { EAudioMixerChannel::BackCenter, EAudioMixerChannel::TopCenter, EAudioMixerChannel::TopBackCenter } },
{ EAudioMixerChannel::FrontLeftOfCenter, { EAudioMixerChannel::BackLeft, EAudioMixerChannel::SideLeft, EAudioMixerChannel::TopBackLeft } },
{ EAudioMixerChannel::FrontRightOfCenter, { EAudioMixerChannel::BackRight, EAudioMixerChannel::SideRight, EAudioMixerChannel::TopBackRight } },
{ EAudioMixerChannel::TopFrontLeft, { EAudioMixerChannel::BackLeft, EAudioMixerChannel::SideLeft, EAudioMixerChannel::TopBackLeft } },
{ EAudioMixerChannel::TopFrontRight, { EAudioMixerChannel::BackRight, EAudioMixerChannel::SideRight, EAudioMixerChannel::TopBackRight } },
{ EAudioMixerChannel::TopFrontCenter, { EAudioMixerChannel::BackCenter, EAudioMixerChannel::TopCenter, EAudioMixerChannel::TopBackCenter } }
};
// For a _flipped_ rear-channel-bleed, this map pairs all front channels with all
// associated rear channels that should receive bled audio.
static const TMap<EAudioMixerChannel::Type, TArray<EAudioMixerChannel::Type>> PairedFlippedRearChannelTypes =
{
#Loc: <Workspace>/Engine/Source/Runtime/AudioMixer/Private/AudioMixerChannelMaps.cpp:239
Scope (from outer to inner):
file
namespace Audio
function void FMixerDevice::InitializeChannelAzimuthMap
Source code excerpt:
DefaultChannelAzimuthPositions[EAudioMixerChannel::FrontLeftOfCenter] = { EAudioMixerChannel::FrontLeftOfCenter, 15 };
DefaultChannelAzimuthPositions[EAudioMixerChannel::FrontRightOfCenter] = { EAudioMixerChannel::FrontRightOfCenter, 345 };
DefaultChannelAzimuthPositions[EAudioMixerChannel::BackCenter] = { EAudioMixerChannel::BackCenter, 180 };
DefaultChannelAzimuthPositions[EAudioMixerChannel::SideLeft] = { EAudioMixerChannel::SideLeft, 250 };
DefaultChannelAzimuthPositions[EAudioMixerChannel::SideRight] = { EAudioMixerChannel::SideRight, 110 };
// Check any engine ini overrides for these default positions
if (NumChannels != 2)
{
#Loc: <Workspace>/Engine/Source/Runtime/AudioMixer/Public/AudioMixerBlueprintLibrary.h:65
Scope: file
Source code excerpt:
FrontLeftOfCenter,
FrontRightOfCenter,
BackCenter,
SideLeft,
SideRight,
TopCenter,
TopFrontLeft,
TopFrontCenter,
TopFrontRight,
#Loc: <Workspace>/Engine/Source/Runtime/AudioMixer/Public/AudioMixerBlueprintLibrary.h:92
Scope (from outer to inner):
file
function inline const TCHAR* ToString
Source code excerpt:
case EAudioMixerChannelType::FrontLeftOfCenter: return TEXT("FrontLeftOfCenter");
case EAudioMixerChannelType::FrontRightOfCenter: return TEXT("FrontRightOfCenter");
case EAudioMixerChannelType::BackCenter: return TEXT("BackCenter");
case EAudioMixerChannelType::SideLeft: return TEXT("SideLeft");
case EAudioMixerChannelType::SideRight: return TEXT("SideRight");
case EAudioMixerChannelType::TopCenter: return TEXT("TopCenter");
case EAudioMixerChannelType::TopFrontLeft: return TEXT("TopFrontLeft");
case EAudioMixerChannelType::TopFrontCenter: return TEXT("TopFrontCenter");
case EAudioMixerChannelType::TopFrontRight: return TEXT("TopFrontRight");
#Loc: <Workspace>/Engine/Source/Runtime/AudioMixerCore/Public/AudioMixer.h:87
Scope (from outer to inner):
file
namespace EAudioMixerChannel
Source code excerpt:
FrontLeftOfCenter,
FrontRightOfCenter,
BackCenter,
SideLeft,
SideRight,
TopCenter,
TopFrontLeft,
TopFrontCenter,
TopFrontRight,
#Loc: <Workspace>/Engine/Source/Runtime/AudioMixerCore/Public/AudioMixer.h:116
Scope (from outer to inner):
file
namespace EAudioMixerChannel
function inline const TCHAR* ToString
Source code excerpt:
case FrontLeftOfCenter: return TEXT("FrontLeftOfCenter");
case FrontRightOfCenter: return TEXT("FrontRightOfCenter");
case BackCenter: return TEXT("BackCenter");
case SideLeft: return TEXT("SideLeft");
case SideRight: return TEXT("SideRight");
case TopCenter: return TEXT("TopCenter");
case TopFrontLeft: return TEXT("TopFrontLeft");
case TopFrontCenter: return TEXT("TopFrontCenter");
case TopFrontRight: return TEXT("TopFrontRight");
#Loc: <Workspace>/Engine/Source/Runtime/Engine/Public/Audio.h:80
Scope: file
Source code excerpt:
SPEAKER_LeftSurround, // * * * *
SPEAKER_RightSurround, // * * * *
SPEAKER_LeftBack, // * * If there is no BackRight channel, this is the BackCenter channel
SPEAKER_RightBack, // *
SPEAKER_Count
};
// Forward declarations.
class UAudioComponent;
#Loc: <Workspace>/Engine/Source/Runtime/SoundFieldRendering/Private/SoundFieldRendering.cpp:57
Scope (from outer to inner):
file
function FSoundFieldDecoder::FSoundFieldDecoder
Source code excerpt:
constexpr const int32 BackLeftOffest = NumAmbiChannels * EAudioMixerChannel::BackLeft;
constexpr const int32 BackRightOffset = NumAmbiChannels * EAudioMixerChannel::BackRight;
constexpr const int32 BackCenterOffset = NumAmbiChannels * EAudioMixerChannel::BackCenter;
VectorRegister FrontLeftGains = VectorLoadAligned(SpeakerGainsPtr);
VectorRegister FrontRightGains = VectorLoadAligned(SpeakerGainsPtr + FrontRightOffset);
VectorRegister FrontCenterGains = VectorLoadAligned(SpeakerGainsPtr + FrontCenterOffset);
VectorRegister BackLeftGains = VectorLoadAligned(SpeakerGainsPtr + BackLeftOffest);
VectorRegister BackRightGains = VectorLoadAligned(SpeakerGainsPtr + BackRightOffset);
#Loc: <Workspace>/Engine/Source/Runtime/SoundFieldRendering/Private/SoundFieldRendering.cpp:692
Scope: file
Source code excerpt:
,{EAudioMixerChannel::SideLeft, 250, 0}
,{EAudioMixerChannel::SideRight, 110, 0}
,{EAudioMixerChannel::BackCenter, 180,0}
};
FSoundFieldEncoder::FSoundFieldEncoder()
{
}