BackLeft
BackLeft
#Overview
name: BackLeft
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 47
C++ source files.
#Summary
#Usage in the C++ source code
The purpose of BackLeft is to represent the back-left audio channel in a surround sound setup. This variable is part of the audio channel configuration system in Unreal Engine 5, specifically within the EAudioMixerChannel enumeration.
BackLeft is used across various Unreal Engine subsystems and modules related to audio processing, rendering, and mixing. Based on the provided code references, it’s utilized in:
- Audio Mixer subsystem
- Sound Field Rendering module
- Signal Processing module
- Audio Synesthesia plugin
- Synthesis plugin
- Media Utils module
- XAudio2 platform-specific implementation
The value of this variable is typically set when initializing audio devices or configuring audio channel layouts. It’s often used in conjunction with other channel types like FrontLeft, FrontRight, BackRight, etc., to define the spatial arrangement of audio outputs.
BackLeft frequently interacts with other channel variables, especially in channel mapping and audio mixing operations. It’s often paired with BackRight for rear surround sound effects.
Developers should be aware that:
- The exact behavior of BackLeft may depend on the audio hardware and drivers being used.
- Not all audio setups will have a BackLeft channel (e.g., stereo or 5.1 systems).
- The ordering of channels can be platform-specific or device-specific.
Best practices when using this variable include:
- Always check the available channel configuration before assuming BackLeft is present.
- Use the appropriate channel mapping functions provided by the engine when working with multi-channel audio.
- Consider fallback options for audio systems that don’t support BackLeft (e.g., mixing into side or front channels).
- Be mindful of the differences in channel ordering across different platforms and audio APIs.
#Setting Variables
#References In INI files
Location: <Workspace>/Engine/Config/BaseEngine.ini:1575, section: [AudioChannelAzimuthMap]
- INI Section:
AudioChannelAzimuthMap
- Raw value:
210
- Is Array:
False
Location: <Workspace>/Engine/Config/BaseEngine.ini:1591, section: [AudioDefaultChannelOrder]
- INI Section:
AudioDefaultChannelOrder
- Raw value:
6
- Is Array:
False
#References in C++ code
#Callsites
This variable is referenced in the following C++ source code:
#Loc: <Workspace>/Engine/Plugins/Experimental/Avalanche/Source/AvalancheShapes/Private/DynamicMeshes/AvaShapeCubeDynMesh.cpp:395
Scope (from outer to inner):
file
function bool UAvaShapeCubeDynamicMesh::GenerateBackMeshSections
Source code excerpt:
static const FVector BackNormal(1, 0, 0);
const FVector BackLeftLoc(SegmentSize.X, -(SegmentSize.Y - BevelSize.Y), (SegmentSize.Z - BevelSize.Z));
const FAvaShapeCachedVertex3D BackLeft = CacheVertexCreate(BackMesh, BackLeftLoc * Scale, BackNormal);
const FVector BackRightLoc(SegmentSize.X, (SegmentSize.Y - BevelSize.Y), -(SegmentSize.Z - BevelSize.Z));
const FAvaShapeCachedVertex3D BackRight = CacheVertexCreate(BackMesh, BackRightLoc * Scale, BackNormal);
AddVertex(BackMesh, BackLeft);
const FVector BackLeftLoc2(SegmentSize.X, (SegmentSize.Y - BevelSize.Y), (SegmentSize.Z - BevelSize.Z));
int32 BackLeftIdx = AddVertexRaw(BackMesh, BackLeftLoc2 * Scale, BackNormal);
AddVertex(BackMesh, BackRight);
AddVertex(BackMesh, BackRight);
const FVector BackRightLoc2(SegmentSize.X, -(SegmentSize.Y - BevelSize.Y), -(SegmentSize.Z - BevelSize.Z));
int32 BackRightIdx = AddVertexRaw(BackMesh, BackRightLoc2 * Scale, BackNormal);
AddVertex(BackMesh, BackLeft);
if (BevelSizeRatio > 0)
{
CreateBevelCorner(BackMesh, BackLeftLoc2, BackLeftLoc, BackNormal, BackLeftIdx, BackLeft.Index,
BevelSize, Scale, FVector(SegmentSize.X, SegmentSize.Y, SegmentSize.Z), FVector(SegmentSize.X, -SegmentSize.Y, SegmentSize.Z));
CreateBevelCorner(BackMesh, BackLeftLoc, BackRightLoc2, BackNormal, BackLeft.Index, BackRightIdx,
BevelSize, Scale, FVector(SegmentSize.X, -SegmentSize.Y, SegmentSize.Z), FVector(SegmentSize.X, -SegmentSize.Y, -SegmentSize.Z));
CreateBevelCorner(BackMesh, BackRightLoc2, BackRightLoc, BackNormal, BackRightIdx, BackRight.Index,
BevelSize, Scale, FVector(SegmentSize.X, -SegmentSize.Y, -SegmentSize.Z), FVector(SegmentSize.X, SegmentSize.Y, -SegmentSize.Z));
CreateBevelCorner(BackMesh, BackRightLoc, BackLeftLoc2, BackNormal, BackRight.Index, BackLeftIdx,
#Loc: <Workspace>/Engine/Plugins/Experimental/Water/Source/Runtime/Private/WaterBodyRiverComponent.cpp:252
Scope (from outer to inner):
file
function static void AddTerminalVerticesForRiverSpline
Source code excerpt:
}
const FVertexInfo BackLeft(FVector3d(Pos - OutwardDistance + TangentialOffset - DilationOffset));
const FVertexInfo Left(FVector3d(Pos - OutwardDistance + TangentialOffset));
const FVertexInfo Right(FVector3d(Pos + OutwardDistance + TangentialOffset));
const FVertexInfo BackRight(FVector3d(Pos + OutwardDistance + TangentialOffset + DilationOffset));
const int32 BaseIndex = OutDilatedMesh.GetVerticesBuffer().Num();
OutDilatedMesh.AppendVertex(BackLeft);
OutDilatedMesh.AppendVertex(Left);
OutDilatedMesh.AppendVertex(Right);
OutDilatedMesh.AppendVertex(BackRight);
if (Edge == ERiverBoundaryEdge::End)
#Loc: <Workspace>/Engine/Plugins/Runtime/AudioSynesthesia/Source/AudioSynesthesiaCore/Private/LoudnessAnalyzer.cpp:222
Scope (from outer to inner):
file
namespace Audio
function FMultichannelLoudnessAnalyzer::FMultichannelLoudnessAnalyzer
Source code excerpt:
// If elevation angle is less than 30 degrees and azimuth is between 60 and 120, set channel weight to 1.5f.
ChannelWeights[EAudioMixerChannel::BackLeft] = 1.5f;
ChannelWeights[EAudioMixerChannel::BackRight] = 1.5f;
MonoBuffer.Reset(InSettings.FFTSize);
MonoBuffer.AddUninitialized(InSettings.FFTSize);
}
#Loc: <Workspace>/Engine/Plugins/Runtime/Synthesis/Source/Synthesis/Private/ConvolutionReverb.cpp:59
Scope (from outer to inner):
file
namespace Audio
namespace ConvolutionReverbIntrinsics
Source code excerpt:
EAudioMixerChannel::Type::FrontRight,
EAudioMixerChannel::Type::FrontCenter,
EAudioMixerChannel::Type::BackLeft,
EAudioMixerChannel::Type::BackRight,
EAudioMixerChannel::Type::SideLeft,
EAudioMixerChannel::Type::SideRight
},
// Eight channels (7.1)
#Loc: <Workspace>/Engine/Plugins/Runtime/Synthesis/Source/Synthesis/Private/ConvolutionReverb.cpp:71
Scope (from outer to inner):
file
namespace Audio
namespace ConvolutionReverbIntrinsics
Source code excerpt:
EAudioMixerChannel::Type::FrontCenter,
EAudioMixerChannel::Type::LowFrequency,
EAudioMixerChannel::Type::BackLeft,
EAudioMixerChannel::Type::BackRight,
EAudioMixerChannel::Type::SideLeft,
EAudioMixerChannel::Type::SideRight
}
};
#Loc: <Workspace>/Engine/Plugins/Runtime/Synthesis/Source/Synthesis/Private/SubmixChannelFormatConverter.cpp:27
Scope (from outer to inner):
file
namespace Audio
namespace SubmixChannelFormatConverterPrivate
Source code excerpt:
static const TMap<EAudioMixerChannel::Type, TArray<EAudioMixerChannel::Type>> PairedRearChannelTypes =
{
{ 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.
#Loc: <Workspace>/Engine/Plugins/Runtime/Synthesis/Source/Synthesis/Private/SubmixChannelFormatConverter.cpp:111
Scope (from outer to inner):
file
namespace Audio
function bool GetSubmixChannelOrderForNumChannels
Source code excerpt:
EAudioMixerChannel::Type::FrontCenter,
EAudioMixerChannel::Type::LowFrequency,
EAudioMixerChannel::Type::BackLeft,
EAudioMixerChannel::Type::BackRight,
EAudioMixerChannel::Type::SideLeft,
EAudioMixerChannel::Type::SideRight
}
);
#Loc: <Workspace>/Engine/Plugins/Runtime/Synthesis/Source/Synthesis/Private/SubmixChannelFormatConverter.cpp:384
Scope (from outer to inner):
file
namespace Audio
function bool FSimpleUpmixer::GetSimpleUpmixerStaticMixEntries
Source code excerpt:
const int32 InputSideLeftIndex = InInputChannelTypes.Find(EAudioMixerChannel::Type::SideLeft);
const int32 InputSideRightIndex = InInputChannelTypes.Find(EAudioMixerChannel::Type::SideRight);
const int32 InputBackLeftIndex = InInputChannelTypes.Find(EAudioMixerChannel::Type::BackLeft);
const int32 InputBackRightIndex = InInputChannelTypes.Find(EAudioMixerChannel::Type::BackRight);
// Query which output channels exist
const int32 OutputFrontLeftIndex = InOutputChannelTypes.Find(EAudioMixerChannel::Type::FrontLeft);
const int32 OutputFrontRightIndex = InOutputChannelTypes.Find(EAudioMixerChannel::Type::FrontRight);
const int32 OutputSideLeftIndex = InOutputChannelTypes.Find(EAudioMixerChannel::Type::SideLeft);
const int32 OutputSideRightIndex = InOutputChannelTypes.Find(EAudioMixerChannel::Type::SideRight);
const int32 OutputBackLeftIndex = InOutputChannelTypes.Find(EAudioMixerChannel::Type::BackLeft);
const int32 OutputBackRightIndex = InOutputChannelTypes.Find(EAudioMixerChannel::Type::BackRight);
// Check for mono input and stereo output.
const bool bInputIsMono = (1 == InInputChannelTypes.Num()) && (InInputChannelTypes[0] == EAudioMixerChannel::Type::FrontCenter);
const bool bOutputHasFrontLeft = (INDEX_NONE != OutputFrontLeftIndex);
const bool bOutputHasFrontRight = (INDEX_NONE != OutputFrontRightIndex);
#Loc: <Workspace>/Engine/Source/Runtime/AudioMixer/Private/AudioMixerChannelMaps.cpp:46
Scope (from outer to inner):
file
namespace Audio
Source code excerpt:
EAudioMixerChannel::FrontCenter,
EAudioMixerChannel::LowFrequency,
EAudioMixerChannel::BackLeft,
EAudioMixerChannel::BackRight,
EAudioMixerChannel::SideLeft,
EAudioMixerChannel::SideRight
},
// ESubmixChannelFormat::Ambisonics
#Loc: <Workspace>/Engine/Source/Runtime/AudioMixer/Private/AudioMixerChannelMaps.cpp:61
Scope (from outer to inner):
file
namespace Audio
Source code excerpt:
EAudioMixerChannel::FrontCenter,
EAudioMixerChannel::LowFrequency,
EAudioMixerChannel::BackLeft,
EAudioMixerChannel::BackRight,
EAudioMixerChannel::SideLeft,
EAudioMixerChannel::SideRight
},
};
#Loc: <Workspace>/Engine/Source/Runtime/AudioMixer/Private/AudioMixerChannelMaps.cpp:235
Scope (from outer to inner):
file
namespace Audio
function void FMixerDevice::InitializeChannelAzimuthMap
Source code excerpt:
DefaultChannelAzimuthPositions[EAudioMixerChannel::LowFrequency] = { EAudioMixerChannel::LowFrequency, INDEX_NONE };
DefaultChannelAzimuthPositions[EAudioMixerChannel::BackLeft] = { EAudioMixerChannel::BackLeft, 210 };
DefaultChannelAzimuthPositions[EAudioMixerChannel::BackRight] = { EAudioMixerChannel::BackRight, 150 };
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 };
#Loc: <Workspace>/Engine/Source/Runtime/AudioMixer/Private/AudioMixerDevice.cpp:459
Scope (from outer to inner):
file
namespace Audio
function TArray<Audio::FChannelPositionInfo>* FMixerDevice::GetDefaultPositionMap
Source code excerpt:
,SpeakerPositions[EAudioMixerChannel::FrontCenter] //center
,SpeakerPositions[EAudioMixerChannel::LowFrequency] //LFE
,SpeakerPositions[EAudioMixerChannel::BackLeft] // Left Rear
,SpeakerPositions[EAudioMixerChannel::BackRight] // Right Rear
,SpeakerPositions[EAudioMixerChannel::SideLeft] // Left Surround
,SpeakerPositions[EAudioMixerChannel::SideRight] // Right Surround
};
#Loc: <Workspace>/Engine/Source/Runtime/AudioMixer/Private/AudioMixerSource.cpp:2198
Scope (from outer to inner):
file
lambda-function
Source code excerpt:
TMap<EAudioMixerChannel::Type, float> LeftOmniMap;
LeftOmniMap.Add(EAudioMixerChannel::FrontLeft, 1.0f);
LeftOmniMap.Add(EAudioMixerChannel::BackLeft, 1.0f);
return LeftOmniMap;
};
auto CreateRightOmniMap = []() -> TMap<EAudioMixerChannel::Type, float>
{
#Loc: <Workspace>/Engine/Source/Runtime/AudioMixer/Public/AudioMixerBlueprintLibrary.h:61
Scope: file
Source code excerpt:
FrontCenter,
LowFrequency,
BackLeft,
BackRight,
FrontLeftOfCenter,
FrontRightOfCenter,
BackCenter,
SideLeft,
SideRight,
#Loc: <Workspace>/Engine/Source/Runtime/AudioMixer/Public/AudioMixerBlueprintLibrary.h:88
Scope (from outer to inner):
file
function inline const TCHAR* ToString
Source code excerpt:
case EAudioMixerChannelType::FrontCenter: return TEXT("FrontCenter");
case EAudioMixerChannelType::LowFrequency: return TEXT("LowFrequency");
case EAudioMixerChannelType::BackLeft: return TEXT("BackLeft");
case EAudioMixerChannelType::BackRight: return TEXT("BackRight");
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");
#Loc: <Workspace>/Engine/Source/Runtime/AudioMixerCore/Private/AudioMixer.cpp:815
Scope (from outer to inner):
file
namespace Audio
function static void InitializeDefaultChannelOrder
Source code excerpt:
DefaultChannelOrder[4] = EAudioMixerChannel::SideLeft;
DefaultChannelOrder[5] = EAudioMixerChannel::SideRight;
DefaultChannelOrder[6] = EAudioMixerChannel::BackLeft;
DefaultChannelOrder[7] = EAudioMixerChannel::BackRight;
bool bOverridden = false;
EAudioMixerChannel::Type ChannelMapOverride[AUDIO_MIXER_MAX_OUTPUT_CHANNELS];
for (int32 i = 0; i < AUDIO_MIXER_MAX_OUTPUT_CHANNELS; ++i)
{
#Loc: <Workspace>/Engine/Source/Runtime/AudioMixerCore/Public/AudioMixer.h:83
Scope (from outer to inner):
file
namespace EAudioMixerChannel
Source code excerpt:
FrontCenter,
LowFrequency,
BackLeft,
BackRight,
FrontLeftOfCenter,
FrontRightOfCenter,
BackCenter,
SideLeft,
SideRight,
#Loc: <Workspace>/Engine/Source/Runtime/AudioMixerCore/Public/AudioMixer.h:112
Scope (from outer to inner):
file
namespace EAudioMixerChannel
function inline const TCHAR* ToString
Source code excerpt:
case FrontCenter: return TEXT("FrontCenter");
case LowFrequency: return TEXT("LowFrequency");
case BackLeft: return TEXT("BackLeft");
case BackRight: return TEXT("BackRight");
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");
#Loc: <Workspace>/Engine/Source/Runtime/MediaUtils/Private/MediaAudioResampler.cpp:48
Scope (from outer to inner):
file
namespace MediaAudioResampler
Source code excerpt:
static const float Matrix_7_1[] = {
// FrontLeft FrontRight BackLeft LFE BackRight SideLeft SideRight
0.707f, 0.707f, 0.5f, 0.0f, 0.5f, 0.5f, 0.5f, // Mono
};
static const float Matrix_8_1[] = {
// FrontLeft FrontRight Center LowFreq SideLeft SideRight BackLeft BackRight
0.707f, 0.707f, 1.0f, 0.0f, 0.5f, 0.5f, 0.5f, 0.5f, // Mono
};
static const float* ToMono[8] = {
Matrix_1_1,
Matrix_2_1,
#Loc: <Workspace>/Engine/Source/Runtime/MediaUtils/Private/MediaAudioResampler.cpp:107
Scope (from outer to inner):
file
namespace MediaAudioResampler
Source code excerpt:
static const float Matrix_7_2[] = {
// FrontLeft FrontRight BackLeft LFE BackRight SideLeft SideRight
1.0f, 0.0f, 0.707f, 0.0f, 0.0f, 0.707f, 0.0f, // Left
0.0f, 1.0f, 0.0f, 0.0f, 0.707f, 0.0f, 0.707f, // Right
};
static const float Matrix_8_2[] = {
// FrontLeft FrontRight Center LowFreq SideLeft SideRight BackLeft BackRight
1.0f, 0.0f, 0.707f, 0.0f, 0.707f, 0.0f, 0.707f, 0.0f, // Left
0.0f, 1.0f, 0.707f, 0.0f, 0.0f, 0.707f, 0.0f, 0.707f, // Right
};
static const float* ToStereo[8] = {
Matrix_1_2,
#Loc: <Workspace>/Engine/Source/Runtime/MediaUtils/Private/MediaAudioResampler.cpp:140
Scope (from outer to inner):
file
namespace MediaAudioResampler
Source code excerpt:
0.0f, // SideLeft
0.0f, // SideRight
0.0f, // BackLeft
0.0f, // BackRight
};
static const float Matrix_2_8[] = {
// FrontLeft FrontRight
1.0f, 0.0f, // FrontLeft
#Loc: <Workspace>/Engine/Source/Runtime/MediaUtils/Private/MediaAudioResampler.cpp:152
Scope (from outer to inner):
file
namespace MediaAudioResampler
Source code excerpt:
0.0f, 0.0f, // SideLeft
0.0f, 0.0f, // SideRight
0.0f, 0.0f, // BackLeft
0.0f, 0.0f, // BackRight
};
static const float Matrix_3_8[] = {
// FrontLeft FrontRight Center
1.0f, 0.0f, 0.0f, // FrontLeft
#Loc: <Workspace>/Engine/Source/Runtime/MediaUtils/Private/MediaAudioResampler.cpp:164
Scope (from outer to inner):
file
namespace MediaAudioResampler
Source code excerpt:
0.0f, 0.0f, 0.0f, // SideLeft
0.0f, 0.0f, 0.0f, // SideRight
0.0f, 0.0f, 0.0f, // BackLeft
0.0f, 0.0f, 0.0f, // BackRight
};
static const float Matrix_4_8[] = {
// FrontLeft FrontRight SideLeft SideRight
1.0f, 0.0f, 0.0f, 0.0f, // FrontLeft
#Loc: <Workspace>/Engine/Source/Runtime/MediaUtils/Private/MediaAudioResampler.cpp:176
Scope (from outer to inner):
file
namespace MediaAudioResampler
Source code excerpt:
0.0f, 0.0f, 1.0f, 0.0f, // SideLeft
0.0f, 0.0f, 0.0f, 1.0f, // SideRight
0.0f, 0.0f, 0.0f, 0.0f, // BackLeft
0.0f, 0.0f, 0.0f, 0.0f, // BackRight
};
static const float Matrix_5_8[] = {
// FrontLeft FrontRight Center SideLeft SideRight
1.0f, 0.0f, 0.0f, 0.0f, 0.0f, // FrontLeft
#Loc: <Workspace>/Engine/Source/Runtime/MediaUtils/Private/MediaAudioResampler.cpp:188
Scope (from outer to inner):
file
namespace MediaAudioResampler
Source code excerpt:
0.0f, 0.0f, 0.0f, 1.0f, 0.0f, // SideLeft
0.0f, 0.0f, 0.0f, 0.0f, 1.0f, // SideRight
0.0f, 0.0f, 0.0f, 0.0f, 0.0f, // BackLeft
0.0f, 0.0f, 0.0f, 0.0f, 0.0f, // BackRight
};
static const float Matrix_6_8[] = {
// FrontLeft FrontRight Center LowFreq SideLeft SideRight
1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, // FrontLeft
#Loc: <Workspace>/Engine/Source/Runtime/MediaUtils/Private/MediaAudioResampler.cpp:200
Scope (from outer to inner):
file
namespace MediaAudioResampler
Source code excerpt:
0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, // SideLeft
0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, // SideRight
0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, // BackLeft
0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, // BackRight
};
static const float Matrix_7_8[] = {
// FrontLeft FrontRight BackLeft LFE BackRight SideLeft SideRight
1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, // FrontLeft
0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, // FrontRight
0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, // Center
0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, // LowFrequency
0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, // SideLeft
0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, // SideRight
0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, // BackLeft
0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, // BackRight
};
static const float Matrix_8_8[] = {
// FrontLeft FrontRight Center LowFreq SideLeft SideRight BackLeft BackRight
1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, // FrontLeft
0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, // FrontRight
0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, // Center
0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, // LowFrequency
0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, // SideLeft
0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, // SideRight
0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, // BackLeft
0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, // BackRight
};
static const float* ToSurround[8] = {
Matrix_1_8,
Matrix_2_8,
#Loc: <Workspace>/Engine/Source/Runtime/NonRealtimeAudioRenderer/Private/AudioMixerPlatformNonRealtime.cpp:168
Scope (from outer to inner):
file
namespace Audio
function bool FMixerPlatformNonRealtime::GetOutputDeviceInfo
Source code excerpt:
OutInfo.OutputChannelArray.Add(EAudioMixerChannel::FrontCenter);
OutInfo.OutputChannelArray.Add(EAudioMixerChannel::LowFrequency);
OutInfo.OutputChannelArray.Add(EAudioMixerChannel::BackLeft);
OutInfo.OutputChannelArray.Add(EAudioMixerChannel::BackRight);
OutInfo.OutputChannelArray.Add(EAudioMixerChannel::SideLeft);
OutInfo.OutputChannelArray.Add(EAudioMixerChannel::SideRight);
return true;
}
#Loc: <Workspace>/Engine/Source/Runtime/SignalProcessing/Private/ChannelMap.cpp:12
Scope (from outer to inner):
file
namespace Audio
namespace ChannelMapPrivate
Source code excerpt:
static constexpr float ToMonoMatrix[ChannelMapMaxNumChannels * 1] =
{
// FrontLeft FrontRight Center LowFrequency SideLeft SideRight BackLeft BackRight
0.707f, 0.707f, 1.0f, 0.0f, 0.5f, 0.5f, 0.5f, 0.5f, // FrontLeft
};
static constexpr float VorbisToMonoMatrix[ChannelMapVorbisNumChannels * 1] =
{
// FrontLeft Center FrontRight SideLeft SideRight LowFrequency
#Loc: <Workspace>/Engine/Source/Runtime/SignalProcessing/Private/ChannelMap.cpp:24
Scope (from outer to inner):
file
namespace Audio
namespace ChannelMapPrivate
Source code excerpt:
static constexpr float ToStereoMatrix[ChannelMapMaxNumChannels * 2] =
{
// FrontLeft FrontRight Center LowFrequency SideLeft SideRight BackLeft BackRight
1.0f, 0.0f, 0.707f, 0.0f, 0.707f, 0.0f, 0.707f, 0.0f, // FrontLeft
0.0f, 1.0f, 0.707f, 0.0f, 0.0f, 0.707f, 0.0f, 0.707f, // FrontRight
};
static constexpr float VorbisToStereoMatrix[ChannelMapVorbisNumChannels * 2] =
{
#Loc: <Workspace>/Engine/Source/Runtime/SignalProcessing/Private/ChannelMap.cpp:38
Scope (from outer to inner):
file
namespace Audio
namespace ChannelMapPrivate
Source code excerpt:
static constexpr float ToTriMatrix[ChannelMapMaxNumChannels * 3] =
{
// FrontLeft FrontRight Center LowFrequency SideLeft SideRight BackLeft BackRight
1.0f, 0.0f, 0.0f, 0.0f, 0.707f, 0.0f, 0.707f, 0.0f, // FrontLeft
0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.707f, 0.0f, 0.707f, // FrontRight
0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, // Center
};
static constexpr float VorbisToTriMatrix[ChannelMapVorbisNumChannels * 3] =
#Loc: <Workspace>/Engine/Source/Runtime/SignalProcessing/Private/ChannelMap.cpp:54
Scope (from outer to inner):
file
namespace Audio
namespace ChannelMapPrivate
Source code excerpt:
static constexpr float ToQuadMatrix[ChannelMapMaxNumChannels * 4] =
{
// FrontLeft FrontRight Center LowFrequency SideLeft SideRight BackLeft BackRight
1.0f, 0.0f, 0.707f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, // FrontLeft
0.0f, 1.0f, 0.707f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, // FrontRight
0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, // SideLeft
0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, // SideRight
};
#Loc: <Workspace>/Engine/Source/Runtime/SignalProcessing/Private/ChannelMap.cpp:72
Scope (from outer to inner):
file
namespace Audio
namespace ChannelMapPrivate
Source code excerpt:
static constexpr float To5Matrix[ChannelMapMaxNumChannels * 5] =
{
// FrontLeft FrontRight Center LowFrequency SideLeft SideRight BackLeft BackRight
1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, // FrontLeft
0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, // FrontRight
0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, // Center
0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, // SideLeft
0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, // SideRight
};
#Loc: <Workspace>/Engine/Source/Runtime/SignalProcessing/Private/ChannelMap.cpp:92
Scope (from outer to inner):
file
namespace Audio
namespace ChannelMapPrivate
Source code excerpt:
static constexpr float To5Point1Matrix[ChannelMapMaxNumChannels * 6] =
{
// FrontLeft FrontRight Center LowFrequency SideLeft SideRight BackLeft BackRight
1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, // FrontLeft
0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, // FrontRight
0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, // Center
0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, // LowFrequency
0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, // SideLeft
0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, // SideRight
#Loc: <Workspace>/Engine/Source/Runtime/SignalProcessing/Private/ChannelMap.cpp:114
Scope (from outer to inner):
file
namespace Audio
namespace ChannelMapPrivate
Source code excerpt:
static constexpr float ToHexMatrix[ChannelMapMaxNumChannels * 7] =
{
// FrontLeft FrontRight Center LowFrequency SideLeft SideRight BackLeft BackRight
1.0f, 0.0f, 0.707f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, // FrontLeft
0.0f, 1.0f, 0.707f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, // FrontRight
0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, // BackLeft
0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, // LFE
0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, // BackRight
0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, // SideLeft
0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, // SideRight
};
#Loc: <Workspace>/Engine/Source/Runtime/SignalProcessing/Private/ChannelMap.cpp:129
Scope (from outer to inner):
file
namespace Audio
namespace ChannelMapPrivate
Source code excerpt:
1.0f, 0.707f, 0.0f, 0.0f, 0.0f, 0.0f, // FrontLeft
0.0f, 0.707f, 1.0f, 0.0f, 0.0f, 0.0f, // FrontRight
0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, // BackLeft
0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, // LFE
0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, // BackRight
0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, // SideLeft
0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, // SideRight
};
#Loc: <Workspace>/Engine/Source/Runtime/SignalProcessing/Private/ChannelMap.cpp:140
Scope (from outer to inner):
file
namespace Audio
namespace ChannelMapPrivate
Source code excerpt:
static constexpr float To7Point1Matrix[ChannelMapMaxNumChannels * 8] =
{
// FrontLeft FrontRight Center LowFrequency SideLeft SideRight BackLeft BackRight
1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, // FrontLeft
0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, // FrontRight
0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, // FrontCenter
0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, // LowFrequency
0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, // SideLeft
0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, // SideRight
0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, // BackLeft
0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, // BackRight
};
#else //PLATFORM_MICROSOFT
// NOTE: the BackLeft/BackRight and SideLeft/SideRight are reversed than they should be since our 7.1 importer code has it backward
static constexpr float To7Point1Matrix[ChannelMapMaxNumChannels * 8] =
{
// FrontLeft FrontRight Center LowFrequency SideLeft SideRight BackLeft BackRight
1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, // FrontLeft
0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, // FrontRight
0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, // FrontCenter
0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, // LowFrequency
0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, // BackLeft
0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, // BackRight
0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, // SideLeft
0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, // SideRight
};
#endif//PLATFORM_MICROSOFT
#Loc: <Workspace>/Engine/Source/Runtime/SignalProcessing/Private/ChannelMap.cpp:178
Scope (from outer to inner):
file
namespace Audio
namespace ChannelMapPrivate
Source code excerpt:
0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, // SideLeft
0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, // SideRight
0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, // BackLeft
0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, // BackRight
};
static float const * const OutputChannelMaps[ChannelMapMaxNumChannels] =
{
ToMonoMatrix,
#Loc: <Workspace>/Engine/Source/Runtime/SignalProcessing/Private/ReverbFast.cpp:235
Scope (from outer to inner):
file
namespace Audio
function void FPlateReverbFast::InterleaveAndMixOutput
Source code excerpt:
OutSampleData[OutPos + EAudioMixerChannel::FrontLeft] = FrontLeftSampleData[i];
OutSampleData[OutPos + EAudioMixerChannel::FrontRight] = FrontRightSampleData[i];
OutSampleData[OutPos + EAudioMixerChannel::BackLeft] = BackLeftSampleData[i];
OutSampleData[OutPos + EAudioMixerChannel::BackRight] = BackRightSampleData[i];
}
}
}
}
#Loc: <Workspace>/Engine/Source/Runtime/SoundFieldRendering/Private/SoundFieldRendering.cpp:55
Scope (from outer to inner):
file
function FSoundFieldDecoder::FSoundFieldDecoder
Source code excerpt:
constexpr const int32 FrontRightOffset = NumAmbiChannels * EAudioMixerChannel::FrontRight;
constexpr const int32 FrontCenterOffset = NumAmbiChannels * EAudioMixerChannel::FrontCenter;
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);
#Loc: <Workspace>/Engine/Source/Runtime/SoundFieldRendering/Private/SoundFieldRendering.cpp:688
Scope: file
Source code excerpt:
,{EAudioMixerChannel::FrontCenter, 0, 0}
,{EAudioMixerChannel::LowFrequency, -1, 0}
,{EAudioMixerChannel::BackLeft, 210, 0}
,{EAudioMixerChannel::BackRight, 150, 0}
,{EAudioMixerChannel::SideLeft, 250, 0}
,{EAudioMixerChannel::SideRight, 110, 0}
,{EAudioMixerChannel::BackCenter, 180,0}
};
#Loc: <Workspace>/Engine/Source/Runtime/Windows/AudioMixerXAudio2/Private/AudioMixerPlatformXAudio2.cpp:860
Scope (from outer to inner):
file
namespace Audio
function static bool GetMMDeviceInfo
Source code excerpt:
EAudioMixerChannel::SideLeft,
EAudioMixerChannel::SideRight,
EAudioMixerChannel::BackLeft,
EAudioMixerChannel::BackRight,
};
EAudioMixerChannel::Type* ChannelOrdering = DefaultChannelOrdering;
// Override channel ordering for some special cases
#Loc: <Workspace>/Engine/Source/Runtime/Windows/AudioMixerXAudio2/Private/AudioMixerPlatformXAudio2.cpp:872
Scope (from outer to inner):
file
namespace Audio
function static bool GetMMDeviceInfo
Source code excerpt:
EAudioMixerChannel::FrontLeft,
EAudioMixerChannel::FrontRight,
EAudioMixerChannel::BackLeft,
EAudioMixerChannel::BackRight,
};
ChannelOrdering = DefaultChannelOrderingQuad;
}
else if (OutInfo.NumChannels == 6)
#Loc: <Workspace>/Engine/Source/Runtime/Windows/AudioMixerXAudio2/Private/AudioMixerPlatformXAudio2.cpp:885
Scope (from outer to inner):
file
namespace Audio
function static bool GetMMDeviceInfo
Source code excerpt:
EAudioMixerChannel::FrontCenter,
EAudioMixerChannel::LowFrequency,
EAudioMixerChannel::BackLeft,
EAudioMixerChannel::BackRight,
};
ChannelOrdering = DefaultChannelOrdering51;
}
#Loc: <Workspace>/Engine/Source/Runtime/Windows/AudioMixerXAudio2/Private/AudioMixerPlatformXAudio2.cpp:1036
Scope (from outer to inner):
file
namespace Audio
function bool FMixerPlatformXAudio2::GetOutputDeviceInfo
Source code excerpt:
OutInfo.OutputChannelArray.Add(EAudioMixerChannel::FrontCenter);
OutInfo.OutputChannelArray.Add(EAudioMixerChannel::LowFrequency);
OutInfo.OutputChannelArray.Add(EAudioMixerChannel::BackLeft);
OutInfo.OutputChannelArray.Add(EAudioMixerChannel::BackRight);
OutInfo.OutputChannelArray.Add(EAudioMixerChannel::SideLeft);
OutInfo.OutputChannelArray.Add(EAudioMixerChannel::SideRight);
return true;
#endif
}
#Loc: <Workspace>/Engine/Source/Runtime/Windows/AudioMixerXAudio2/Private/WindowsMMDeviceInfoCache.cpp:136
Scope (from outer to inner):
file
namespace Audio
function bool FWindowsMMDeviceCache::EnumerateChannelMask
Source code excerpt:
EAudioMixerChannel::SideLeft,
EAudioMixerChannel::SideRight,
EAudioMixerChannel::BackLeft,
EAudioMixerChannel::BackRight,
};
const EAudioMixerChannel::Type* ChannelOrdering = DefaultChannelOrdering;
// Override channel ordering for some special cases
#Loc: <Workspace>/Engine/Source/Runtime/Windows/AudioMixerXAudio2/Private/WindowsMMDeviceInfoCache.cpp:148
Scope (from outer to inner):
file
namespace Audio
function bool FWindowsMMDeviceCache::EnumerateChannelMask
Source code excerpt:
EAudioMixerChannel::FrontLeft,
EAudioMixerChannel::FrontRight,
EAudioMixerChannel::BackLeft,
EAudioMixerChannel::BackRight,
};
ChannelOrdering = DefaultChannelOrderingQuad;
}
else if (OutInfo.NumChannels == 6)
#Loc: <Workspace>/Engine/Source/Runtime/Windows/AudioMixerXAudio2/Private/WindowsMMDeviceInfoCache.cpp:161
Scope (from outer to inner):
file
namespace Audio
function bool FWindowsMMDeviceCache::EnumerateChannelMask
Source code excerpt:
EAudioMixerChannel::FrontCenter,
EAudioMixerChannel::LowFrequency,
EAudioMixerChannel::BackLeft,
EAudioMixerChannel::BackRight,
};
ChannelOrdering = DefaultChannelOrdering51;
}