FrontCenter
FrontCenter
#Overview
name: FrontCenter
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 42
C++ source files.
#Summary
#Usage in the C++ source code
The purpose of FrontCenter is to represent the center channel in a multi-channel audio system. It is primarily used in the audio mixing and rendering systems of Unreal Engine 5.
FrontCenter is part of the EAudioMixerChannel enumeration, which defines various channel types for audio mixing. This enumeration is used extensively throughout the audio subsystem of Unreal Engine 5, particularly in the AudioMixer and SignalProcessing modules.
The FrontCenter channel is typically used in the following contexts:
- Channel mapping and routing in the audio mixer.
- Spatial audio processing and 3D sound positioning.
- Surround sound configuration and management.
- Audio device enumeration and setup.
The value of this variable is typically set when initializing audio devices or configuring channel layouts. It’s often used in arrays or maps that define channel configurations for various audio formats (e.g., stereo, 5.1, 7.1).
FrontCenter interacts with other channel types like FrontLeft, FrontRight, LowFrequency, etc., to create a complete surround sound setup.
Developers should be aware that:
- The FrontCenter channel is often treated differently in mono vs. multi-channel setups.
- Some audio processing functions may skip or specially handle the FrontCenter channel.
- When encoding or decoding surround sound, the FrontCenter channel typically corresponds to the 0-degree azimuth position.
Best practices when using this variable include:
- Always consider the target audio setup when working with channel configurations.
- Be mindful of how mono sources are mapped to multi-channel outputs, especially regarding the center channel.
- When implementing custom audio processing, ensure proper handling of all channels, including FrontCenter.
- Use the appropriate channel mapping functions provided by the engine when converting between different channel layouts.
#Setting Variables
#References In INI files
Location: <Workspace>/Engine/Config/BaseEngine.ini:1574, section: [AudioChannelAzimuthMap]
- INI Section:
AudioChannelAzimuthMap
- Raw value:
0
- Is Array:
False
Location: <Workspace>/Engine/Config/BaseEngine.ini:1587, section: [AudioDefaultChannelOrder]
- INI Section:
AudioDefaultChannelOrder
- Raw value:
2
- 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/ConvolutionReverb.cpp:19
Scope (from outer to inner):
file
namespace Audio
namespace ConvolutionReverbIntrinsics
Source code excerpt:
// One channel (mono)
{ EAudioMixerChannel::FrontCenter },
// Two channels (stereo)
{ EAudioMixerChannel::FrontLeft, EAudioMixerChannel::FrontRight },
// Three channels (fronts)
{ EAudioMixerChannel::FrontLeft, EAudioMixerChannel::FrontCenter, EAudioMixerChannel::FrontRight },
// Four channels (quad)
{
EAudioMixerChannel::Type::FrontLeft,
EAudioMixerChannel::Type::FrontRight,
EAudioMixerChannel::Type::SideLeft,
#Loc: <Workspace>/Engine/Plugins/Runtime/Synthesis/Source/Synthesis/Private/ConvolutionReverb.cpp:39
Scope (from outer to inner):
file
namespace Audio
namespace ConvolutionReverbIntrinsics
Source code excerpt:
EAudioMixerChannel::Type::FrontLeft,
EAudioMixerChannel::Type::FrontRight,
EAudioMixerChannel::Type::FrontCenter,
EAudioMixerChannel::Type::SideLeft,
EAudioMixerChannel::Type::SideRight
},
// Six channels (5.1)
{
EAudioMixerChannel::Type::FrontLeft,
EAudioMixerChannel::Type::FrontRight,
EAudioMixerChannel::Type::FrontCenter,
EAudioMixerChannel::Type::LowFrequency,
EAudioMixerChannel::Type::SideLeft,
EAudioMixerChannel::Type::SideRight
},
// Seven channels (7.0)
#Loc: <Workspace>/Engine/Plugins/Runtime/Synthesis/Source/Synthesis/Private/ConvolutionReverb.cpp:58
Scope (from outer to inner):
file
namespace Audio
namespace ConvolutionReverbIntrinsics
Source code excerpt:
EAudioMixerChannel::Type::FrontLeft,
EAudioMixerChannel::Type::FrontRight,
EAudioMixerChannel::Type::FrontCenter,
EAudioMixerChannel::Type::BackLeft,
EAudioMixerChannel::Type::BackRight,
EAudioMixerChannel::Type::SideLeft,
EAudioMixerChannel::Type::SideRight
},
#Loc: <Workspace>/Engine/Plugins/Runtime/Synthesis/Source/Synthesis/Private/ConvolutionReverb.cpp:69
Scope (from outer to inner):
file
namespace Audio
namespace ConvolutionReverbIntrinsics
Source code excerpt:
EAudioMixerChannel::Type::FrontLeft,
EAudioMixerChannel::Type::FrontRight,
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:14
Scope (from outer to inner):
file
namespace Audio
namespace SubmixChannelFormatConverterPrivate
Source code excerpt:
EAudioMixerChannel::FrontLeft,
EAudioMixerChannel::FrontRight,
EAudioMixerChannel::FrontCenter,
EAudioMixerChannel::FrontLeftOfCenter,
EAudioMixerChannel::FrontRightOfCenter,
EAudioMixerChannel::TopFrontLeft,
EAudioMixerChannel::TopFrontRight,
EAudioMixerChannel::TopFrontCenter
}
#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 } }
};
#Loc: <Workspace>/Engine/Plugins/Runtime/Synthesis/Source/Synthesis/Private/SubmixChannelFormatConverter.cpp:43
Scope (from outer to inner):
file
namespace Audio
namespace SubmixChannelFormatConverterPrivate
Source code excerpt:
{ EAudioMixerChannel::FrontLeft, PairedRearChannelTypes[EAudioMixerChannel::FrontRight] },
{ EAudioMixerChannel::FrontRight, PairedRearChannelTypes[EAudioMixerChannel::FrontLeft] },
{ EAudioMixerChannel::FrontCenter, PairedRearChannelTypes[EAudioMixerChannel::FrontCenter] },
{ EAudioMixerChannel::FrontLeftOfCenter, PairedRearChannelTypes[EAudioMixerChannel::FrontRightOfCenter] },
{ EAudioMixerChannel::FrontRightOfCenter, PairedRearChannelTypes[EAudioMixerChannel::FrontLeftOfCenter] },
{ EAudioMixerChannel::TopFrontLeft, PairedRearChannelTypes[EAudioMixerChannel::TopFrontRight] },
{ EAudioMixerChannel::TopFrontRight, PairedRearChannelTypes[EAudioMixerChannel::TopFrontLeft] },
{ EAudioMixerChannel::TopFrontCenter, PairedRearChannelTypes[EAudioMixerChannel::TopFrontCenter] }
};
#Loc: <Workspace>/Engine/Plugins/Runtime/Synthesis/Source/Synthesis/Private/SubmixChannelFormatConverter.cpp:63
Scope (from outer to inner):
file
namespace Audio
function bool GetSubmixChannelOrderForNumChannels
Source code excerpt:
// Mono
OutChannelOrder.Append({EAudioMixerChannel::Type::FrontCenter});
return true;
case 2:
// Stereo
OutChannelOrder.Append({EAudioMixerChannel::Type::FrontLeft, EAudioMixerChannel::Type::FrontRight});
#Loc: <Workspace>/Engine/Plugins/Runtime/Synthesis/Source/Synthesis/Private/SubmixChannelFormatConverter.cpp:93
Scope (from outer to inner):
file
namespace Audio
function bool GetSubmixChannelOrderForNumChannels
Source code excerpt:
EAudioMixerChannel::Type::FrontLeft,
EAudioMixerChannel::Type::FrontRight,
EAudioMixerChannel::Type::FrontCenter,
EAudioMixerChannel::Type::LowFrequency,
EAudioMixerChannel::Type::SideLeft,
EAudioMixerChannel::Type::SideRight
}
);
#Loc: <Workspace>/Engine/Plugins/Runtime/Synthesis/Source/Synthesis/Private/SubmixChannelFormatConverter.cpp:109
Scope (from outer to inner):
file
namespace Audio
function bool GetSubmixChannelOrderForNumChannels
Source code excerpt:
EAudioMixerChannel::Type::FrontLeft,
EAudioMixerChannel::Type::FrontRight,
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:285
Scope (from outer to inner):
file
namespace Audio
function FSimpleRouter::FSimpleRouter
Source code excerpt:
// Determine special case of routing mono to front left. Only do special mapping
// if input is mono-front-center and output has front-left but no front-center.
const bool bIsInputMono = (InInputChannelTypes.Num() == 1) && (InInputChannelTypes[0] == EAudioMixerChannel::FrontCenter);
const bool bIsFrontCenterInOutput = InOutputChannelTypes.Find(EAudioMixerChannel::FrontCenter) != INDEX_NONE;
const bool bIsFrontLeftInOutput = InOutputChannelTypes.Find(EAudioMixerChannel::FrontLeft) != INDEX_NONE;
const bool bMapInputFrontCenterToOutputFrontLeft = bIsInputMono && bIsFrontLeftInOutput && !bIsFrontCenterInOutput;
if (bMapInputFrontCenterToOutputFrontLeft)
{
ChannelPairs.Emplace(InInputChannelTypes.Find(EAudioMixerChannel::FrontCenter), InOutputChannelTypes.Find(EAudioMixerChannel::FrontLeft));
}
}
void FSimpleUpmixer::SetRearChannelBleed(float InGain, bool bFadeToGain)
{
for (int32 InputChannelIndex : FrontChannelIndices)
#Loc: <Workspace>/Engine/Plugins/Runtime/Synthesis/Source/Synthesis/Private/SubmixChannelFormatConverter.cpp:396
Scope (from outer to inner):
file
namespace Audio
function bool FSimpleUpmixer::GetSimpleUpmixerStaticMixEntries
Source code excerpt:
// 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);
const bool bUpmixMono = bInputIsMono && (bOutputHasFrontLeft || bOutputHasFrontRight);
// Check for upmixing quad or 5.1 to 7.1
#Loc: <Workspace>/Engine/Source/Runtime/AudioMixer/Private/AudioMixerChannelMaps.cpp:34
Scope (from outer to inner):
file
namespace Audio
Source code excerpt:
EAudioMixerChannel::FrontLeft,
EAudioMixerChannel::FrontRight,
EAudioMixerChannel::FrontCenter,
EAudioMixerChannel::LowFrequency,
EAudioMixerChannel::SideLeft,
EAudioMixerChannel::SideRight
},
// ESubmixChannelFormat::SevenDotOne
#Loc: <Workspace>/Engine/Source/Runtime/AudioMixer/Private/AudioMixerChannelMaps.cpp:44
Scope (from outer to inner):
file
namespace Audio
Source code excerpt:
EAudioMixerChannel::FrontLeft,
EAudioMixerChannel::FrontRight,
EAudioMixerChannel::FrontCenter,
EAudioMixerChannel::LowFrequency,
EAudioMixerChannel::BackLeft,
EAudioMixerChannel::BackRight,
EAudioMixerChannel::SideLeft,
EAudioMixerChannel::SideRight
},
#Loc: <Workspace>/Engine/Source/Runtime/AudioMixer/Private/AudioMixerChannelMaps.cpp:59
Scope (from outer to inner):
file
namespace Audio
Source code excerpt:
EAudioMixerChannel::FrontLeft,
EAudioMixerChannel::FrontRight,
EAudioMixerChannel::FrontCenter,
EAudioMixerChannel::LowFrequency,
EAudioMixerChannel::BackLeft,
EAudioMixerChannel::BackRight,
EAudioMixerChannel::SideLeft,
EAudioMixerChannel::SideRight
},
#Loc: <Workspace>/Engine/Source/Runtime/AudioMixer/Private/AudioMixerChannelMaps.cpp:224
Scope (from outer to inner):
file
namespace Audio
function void FMixerDevice::InitializeChannelAzimuthMap
Source code excerpt:
{
// Allow center channel for azimuth computations
DefaultChannelAzimuthPositions[EAudioMixerChannel::FrontCenter] = { EAudioMixerChannel::FrontCenter, 0 };
}
else
{
// Ignore front center for azimuth computations.
DefaultChannelAzimuthPositions[EAudioMixerChannel::FrontCenter] = { EAudioMixerChannel::FrontCenter, INDEX_NONE };
}
// Always ignore low frequency channel for azimuth computations.
DefaultChannelAzimuthPositions[EAudioMixerChannel::LowFrequency] = { EAudioMixerChannel::LowFrequency, INDEX_NONE };
DefaultChannelAzimuthPositions[EAudioMixerChannel::BackLeft] = { EAudioMixerChannel::BackLeft, 210 };
#Loc: <Workspace>/Engine/Source/Runtime/AudioMixer/Private/AudioMixerChannelMaps.cpp:252
Scope (from outer to inner):
file
namespace Audio
function void FMixerDevice::InitializeChannelAzimuthMap
Source code excerpt:
// Don't allow overriding the center channel if its not allowed to spatialize.
if (MixerChannelType != EAudioMixerChannel::FrontCenter || bAllowCenterChannel3DPanning)
{
const TCHAR* ChannelName = EAudioMixerChannel::ToString(MixerChannelType);
if (GConfig->GetInt(TEXT("AudioChannelAzimuthMap"), ChannelName, AzimuthPositionOverride, GEngineIni))
{
if (AzimuthPositionOverride >= 0 && AzimuthPositionOverride < 360)
{
#Loc: <Workspace>/Engine/Source/Runtime/AudioMixer/Private/AudioMixerDevice.cpp:414
Scope (from outer to inner):
file
namespace Audio
function TArray<Audio::FChannelPositionInfo>* FMixerDevice::GetDefaultPositionMap
Source code excerpt:
{
// force angle on single channel if we are mono
static TArray<Audio::FChannelPositionInfo> MonoMap = { {EAudioMixerChannel::FrontCenter, 0, 0} };
return &MonoMap;
}
// Stereo speakers to front left and right of listener:
case 2:
{
#Loc: <Workspace>/Engine/Source/Runtime/AudioMixer/Private/AudioMixerDevice.cpp:443
Scope (from outer to inner):
file
namespace Audio
function TArray<Audio::FChannelPositionInfo>* FMixerDevice::GetDefaultPositionMap
Source code excerpt:
SpeakerPositions[EAudioMixerChannel::FrontLeft] //left
,SpeakerPositions[EAudioMixerChannel::FrontRight] // right
,SpeakerPositions[EAudioMixerChannel::FrontCenter] //center
,SpeakerPositions[EAudioMixerChannel::LowFrequency] //LFE
,SpeakerPositions[EAudioMixerChannel::SideLeft] //Left Rear
,SpeakerPositions[EAudioMixerChannel::SideRight] //Right Rear
};
return &FiveDotOneMap;
}
#Loc: <Workspace>/Engine/Source/Runtime/AudioMixer/Private/AudioMixerDevice.cpp:457
Scope (from outer to inner):
file
namespace Audio
function TArray<Audio::FChannelPositionInfo>* FMixerDevice::GetDefaultPositionMap
Source code excerpt:
SpeakerPositions[EAudioMixerChannel::FrontLeft] // left
,SpeakerPositions[EAudioMixerChannel::FrontRight] // right
,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/AudioMixerDevice.cpp:2117
Scope (from outer to inner):
file
namespace Audio
function void FMixerDevice::Get3DChannelMap
Source code excerpt:
for (EAudioMixerChannel::Type Channel : ChannelArray)
{
float Pan = (Channel == EAudioMixerChannel::FrontCenter) ? 1.0f : 0.0f;
OutChannelMap.Add(Pan);
}
}
return;
}
#Loc: <Workspace>/Engine/Source/Runtime/AudioMixer/Private/AudioMixerDevice.cpp:2235
Scope (from outer to inner):
file
namespace Audio
function void FMixerDevice::Get3DChannelMap
Source code excerpt:
EffectivePan = FMath::Lerp(NextChannelPan, OmniPanFactor, OmniAmount);
}
else if (Channel == EAudioMixerChannel::FrontCenter)
{
EffectivePan = FMath::Lerp(0.0f, OmniPanFactor, OmniAmount);
EffectivePan = FMath::Max(InWaveInstance->VoiceCenterChannelVolume, EffectivePan);
}
else
{
#Loc: <Workspace>/Engine/Source/Runtime/AudioMixer/Private/AudioMixerDevice.cpp:2268
Scope (from outer to inner):
file
namespace Audio
function void FMixerDevice::Get3DChannelMap
Source code excerpt:
EffectivePan = NextChannelPan;
}
else if (Channel == EAudioMixerChannel::FrontCenter)
{
EffectivePan = FMath::Max(InWaveInstance->VoiceCenterChannelVolume, EffectivePan);
}
AUDIO_MIXER_CHECK(EffectivePan >= 0.0f && EffectivePan <= 1.0f);
OutChannelMap.Add(EffectivePan);
#Loc: <Workspace>/Engine/Source/Runtime/AudioMixer/Private/AudioMixerSourceOutputBuffer.cpp:396
Scope (from outer to inner):
file
namespace Audio
function void FMixerSourceSubmixOutputBuffer::EncodeToSoundfieldFormats
Source code excerpt:
{
FChannelPositionInfo ChannelPosition;
ChannelPosition.Channel = EAudioMixerChannel::FrontCenter;
ConvertCartesianToSpherical(InSpatParams.EmitterPosition, ChannelPosition.Azimuth, ChannelPosition.Elevation, ChannelPosition.Radius);
ChannelPosition.Radius = InSpatParams.Distance;
InputChannelPositions.Add(ChannelPosition);
SoundfieldPositionalData.ChannelPositions = &InputChannelPositions;
#Loc: <Workspace>/Engine/Source/Runtime/AudioMixer/Public/AudioMixerBlueprintLibrary.h:59
Scope: file
Source code excerpt:
FrontLeft,
FrontRight,
FrontCenter,
LowFrequency,
BackLeft,
BackRight,
FrontLeftOfCenter,
FrontRightOfCenter,
BackCenter,
#Loc: <Workspace>/Engine/Source/Runtime/AudioMixer/Public/AudioMixerBlueprintLibrary.h:86
Scope (from outer to inner):
file
function inline const TCHAR* ToString
Source code excerpt:
case EAudioMixerChannelType::FrontLeft: return TEXT("FrontLeft");
case EAudioMixerChannelType::FrontRight: return TEXT("FrontRight");
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");
#Loc: <Workspace>/Engine/Source/Runtime/AudioMixerCore/Private/AudioMixer.cpp:811
Scope (from outer to inner):
file
namespace Audio
function static void InitializeDefaultChannelOrder
Source code excerpt:
DefaultChannelOrder[0] = EAudioMixerChannel::FrontLeft;
DefaultChannelOrder[1] = EAudioMixerChannel::FrontRight;
DefaultChannelOrder[2] = EAudioMixerChannel::FrontCenter;
DefaultChannelOrder[3] = EAudioMixerChannel::LowFrequency;
DefaultChannelOrder[4] = EAudioMixerChannel::SideLeft;
DefaultChannelOrder[5] = EAudioMixerChannel::SideRight;
DefaultChannelOrder[6] = EAudioMixerChannel::BackLeft;
DefaultChannelOrder[7] = EAudioMixerChannel::BackRight;
#Loc: <Workspace>/Engine/Source/Runtime/AudioMixerCore/Public/AudioMixer.h:81
Scope (from outer to inner):
file
namespace EAudioMixerChannel
Source code excerpt:
FrontLeft,
FrontRight,
FrontCenter,
LowFrequency,
BackLeft,
BackRight,
FrontLeftOfCenter,
FrontRightOfCenter,
BackCenter,
#Loc: <Workspace>/Engine/Source/Runtime/AudioMixerCore/Public/AudioMixer.h:110
Scope (from outer to inner):
file
namespace EAudioMixerChannel
function inline const TCHAR* ToString
Source code excerpt:
case FrontLeft: return TEXT("FrontLeft");
case FrontRight: return TEXT("FrontRight");
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");
#Loc: <Workspace>/Engine/Source/Runtime/NonRealtimeAudioRenderer/Private/AudioMixerPlatformNonRealtime.cpp:166
Scope (from outer to inner):
file
namespace Audio
function bool FMixerPlatformNonRealtime::GetOutputDeviceInfo
Source code excerpt:
OutInfo.OutputChannelArray.Add(EAudioMixerChannel::FrontLeft);
OutInfo.OutputChannelArray.Add(EAudioMixerChannel::FrontRight);
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);
#Loc: <Workspace>/Engine/Source/Runtime/SignalProcessing/Private/ChannelMap.cpp:143
Scope (from outer to inner):
file
namespace Audio
namespace ChannelMapPrivate
Source code excerpt:
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
};
#Loc: <Workspace>/Engine/Source/Runtime/SignalProcessing/Private/ChannelMap.cpp:159
Scope (from outer to inner):
file
namespace Audio
namespace ChannelMapPrivate
Source code excerpt:
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
};
#Loc: <Workspace>/Engine/Source/Runtime/SignalProcessing/Private/ChannelMap.cpp:174
Scope (from outer to inner):
file
namespace Audio
namespace ChannelMapPrivate
Source code excerpt:
1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, // FrontLeft
0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, // FrontRight
0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, // FrontCenter
0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, // LowFrequency
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
};
#Loc: <Workspace>/Engine/Source/Runtime/SoundFieldRendering/Private/SoundFieldRendering.cpp:54
Scope (from outer to inner):
file
function FSoundFieldDecoder::FSoundFieldDecoder
Source code excerpt:
// adjust gains to sum front center->front L/R and rear center->back L/R
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);
#Loc: <Workspace>/Engine/Source/Runtime/SoundFieldRendering/Private/SoundFieldRendering.cpp:157
Scope (from outer to inner):
file
function void FSoundFieldDecoder::DecodeAudioDirectlyToDeviceOutputPositions
Source code excerpt:
// skip LFE and Center channel (leave gains at zero)
if (CurrSpeakerPos.Channel == EAudioMixerChannel::LowFrequency || CurrSpeakerPos.Channel == EAudioMixerChannel::FrontCenter)
{
SpeakerGainsPtr += NumAmbiChannels;
continue;
}
const float Theta = ListenerRotationSphericalCoord.X - CurrSpeakerPos.Azimuth * DEG_2_RAD; // azimuth
#Loc: <Workspace>/Engine/Source/Runtime/SoundFieldRendering/Private/SoundFieldRendering.cpp:686
Scope: file
Source code excerpt:
{EAudioMixerChannel::FrontLeft, 330, 0}
,{EAudioMixerChannel::FrontRight, 30, 0}
,{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/SoundFieldRendering/Private/SoundFieldRendering.cpp:739
Scope (from outer to inner):
file
function void FSoundFieldEncoder::EncodeAudioDirectlyFromOutputPositions
Source code excerpt:
// skip LFE and Center channel (leave gains at zero)
// Mono audio channels are FrontCenter, so do _not_ skip if center channel and mono.
const bool bSkipChannel = CurrSpeakerPos.Channel == EAudioMixerChannel::LowFrequency || (!bIsMono && (CurrSpeakerPos.Channel == EAudioMixerChannel::FrontCenter));
if (bSkipChannel)
{
SpeakerGainsPtr += NumAmbiChannels;
continue;
}
#Loc: <Workspace>/Engine/Source/Runtime/Windows/AudioMixerXAudio2/Private/AudioMixerPlatformXAudio2.cpp:856
Scope (from outer to inner):
file
namespace Audio
function static bool GetMMDeviceInfo
Source code excerpt:
EAudioMixerChannel::FrontLeft,
EAudioMixerChannel::FrontRight,
EAudioMixerChannel::FrontCenter,
EAudioMixerChannel::LowFrequency,
EAudioMixerChannel::SideLeft,
EAudioMixerChannel::SideRight,
EAudioMixerChannel::BackLeft,
EAudioMixerChannel::BackRight,
};
#Loc: <Workspace>/Engine/Source/Runtime/Windows/AudioMixerXAudio2/Private/AudioMixerPlatformXAudio2.cpp:883
Scope (from outer to inner):
file
namespace Audio
function static bool GetMMDeviceInfo
Source code excerpt:
EAudioMixerChannel::FrontLeft,
EAudioMixerChannel::FrontRight,
EAudioMixerChannel::FrontCenter,
EAudioMixerChannel::LowFrequency,
EAudioMixerChannel::BackLeft,
EAudioMixerChannel::BackRight,
};
ChannelOrdering = DefaultChannelOrdering51;
#Loc: <Workspace>/Engine/Source/Runtime/Windows/AudioMixerXAudio2/Private/AudioMixerPlatformXAudio2.cpp:1034
Scope (from outer to inner):
file
namespace Audio
function bool FMixerPlatformXAudio2::GetOutputDeviceInfo
Source code excerpt:
OutInfo.OutputChannelArray.Add(EAudioMixerChannel::FrontLeft);
OutInfo.OutputChannelArray.Add(EAudioMixerChannel::FrontRight);
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/Windows/AudioMixerXAudio2/Private/WindowsMMDeviceInfoCache.cpp:132
Scope (from outer to inner):
file
namespace Audio
function bool FWindowsMMDeviceCache::EnumerateChannelMask
Source code excerpt:
EAudioMixerChannel::FrontLeft,
EAudioMixerChannel::FrontRight,
EAudioMixerChannel::FrontCenter,
EAudioMixerChannel::LowFrequency,
EAudioMixerChannel::SideLeft,
EAudioMixerChannel::SideRight,
EAudioMixerChannel::BackLeft,
EAudioMixerChannel::BackRight,
};
#Loc: <Workspace>/Engine/Source/Runtime/Windows/AudioMixerXAudio2/Private/WindowsMMDeviceInfoCache.cpp:159
Scope (from outer to inner):
file
namespace Audio
function bool FWindowsMMDeviceCache::EnumerateChannelMask
Source code excerpt:
EAudioMixerChannel::FrontLeft,
EAudioMixerChannel::FrontRight,
EAudioMixerChannel::FrontCenter,
EAudioMixerChannel::LowFrequency,
EAudioMixerChannel::BackLeft,
EAudioMixerChannel::BackRight,
};
ChannelOrdering = DefaultChannelOrdering51;