FrontLeft
FrontLeft
#Overview
name: FrontLeft
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 65
C++ source files.
#Summary
#Usage in the C++ source code
The purpose of FrontLeft is to represent the front left audio channel in Unreal Engine’s audio system. This setting variable is part of the EAudioMixerChannel enumeration, which defines various audio channel types used in spatial audio and multi-channel sound systems.
-
The FrontLeft variable is primarily used in the audio rendering and mixing systems of Unreal Engine.
-
Multiple subsystems and modules rely on this variable, including:
- AudioMixer
- AudioMixerCore
- SignalProcessing
- SoundFieldRendering
- Various platform-specific audio implementations (e.g., XAudio2, CoreAudio, AudioUnit)
-
The value of this variable is typically set as part of the audio channel configuration for output devices or when defining speaker layouts for different audio formats.
-
FrontLeft often interacts with other channel variables like FrontRight, FrontCenter, BackLeft, etc., to create complete channel configurations for various audio setups (e.g., stereo, 5.1, 7.1).
-
Developers should be aware that:
- FrontLeft is usually the first channel in most audio configurations.
- It’s essential for proper spatial audio rendering and channel mapping.
- Different platforms or audio APIs might have slightly different channel ordering, so proper mapping is crucial.
-
Best practices when using this variable include:
- Always consider the target platform’s audio capabilities and channel configurations.
- Use the appropriate channel mapping functions provided by Unreal Engine when working with multi-channel audio.
- Ensure proper channel ordering when creating or manipulating audio data to maintain correct spatial positioning.
- Test audio output on various speaker configurations to ensure correct channel assignment and spatial accuracy.
#Setting Variables
#References In INI files
Location: <Workspace>/Engine/Config/BaseEngine.ini:1572, section: [AudioChannelAzimuthMap]
- INI Section:
AudioChannelAzimuthMap
- Raw value:
330
- Is Array:
False
Location: <Workspace>/Engine/Config/BaseEngine.ini:1585, section: [AudioDefaultChannelOrder]
- INI Section:
AudioDefaultChannelOrder
- Raw value:
0
- 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:352
Scope (from outer to inner):
file
function bool UAvaShapeCubeDynamicMesh::GenerateFrontMeshSections
Source code excerpt:
const FVector FrontLeftLoc(-SegmentSize.X, -(SegmentSize.Y - BevelSize.Y), SegmentSize.Z - BevelSize.Z);
// top left
const FAvaShapeCachedVertex3D FrontLeft = CacheVertexCreate(FrontMesh, FrontLeftLoc * Scale, FrontNormal);
// bottom right
const FVector FrontRightLoc(-SegmentSize.X, SegmentSize.Y - BevelSize.Y, -(SegmentSize.Z - BevelSize.Z));
const FAvaShapeCachedVertex3D FrontRight = CacheVertexCreate(FrontMesh, FrontRightLoc * Scale, FrontNormal);
AddVertex(FrontMesh, FrontLeft);
AddVertex(FrontMesh, FrontRight);
const FVector TopRightLoc = FVector(-SegmentSize.X, SegmentSize.Y - BevelSize.Y, SegmentSize.Z - BevelSize.Z);
int32 TopRightIdx = AddVertexRaw(FrontMesh, TopRightLoc * Scale, FrontNormal);
AddVertex(FrontMesh, FrontRight);
AddVertex(FrontMesh, FrontLeft);
const FVector BottomLeftLoc = FVector(-SegmentSize.X, -(SegmentSize.Y - BevelSize.Y), -(SegmentSize.Z - BevelSize.Z));
int32 BottomLeftIdx = AddVertexRaw(FrontMesh, BottomLeftLoc * Scale, FrontNormal);
if (BevelSizeRatio > 0)
{
CreateBevelCorner(FrontMesh, FrontLeftLoc, TopRightLoc, FrontNormal, FrontLeft.Index, TopRightIdx,
BevelSize, Scale, FVector(-SegmentSize.X, -SegmentSize.Y, SegmentSize.Z), FVector(-SegmentSize.X, SegmentSize.Y, SegmentSize.Z));
CreateBevelCorner(FrontMesh, TopRightLoc, FrontRightLoc, FrontNormal, TopRightIdx, FrontRight.Index,
BevelSize, Scale, FVector(-SegmentSize.X, SegmentSize.Y, SegmentSize.Z), FVector(-SegmentSize.X, SegmentSize.Y, -SegmentSize.Z));
CreateBevelCorner(FrontMesh, FrontRightLoc, BottomLeftLoc, FrontNormal, FrontRight.Index, BottomLeftIdx,
BevelSize, Scale, FVector(-SegmentSize.X, SegmentSize.Y, -SegmentSize.Z), FVector(-SegmentSize.X, -SegmentSize.Y, -SegmentSize.Z));
CreateBevelCorner(FrontMesh, BottomLeftLoc, FrontLeftLoc, FrontNormal, BottomLeftIdx, FrontLeft.Index,
BevelSize, Scale, FVector(-SegmentSize.X, -SegmentSize.Y, -SegmentSize.Z), FVector(-SegmentSize.X, -SegmentSize.Y, SegmentSize.Z));
}
return true;
}
#Loc: <Workspace>/Engine/Plugins/Runtime/Synthesis/Source/Synthesis/Private/ConvolutionReverb.cpp:22
Scope (from outer to inner):
file
namespace Audio
namespace ConvolutionReverbIntrinsics
Source code excerpt:
// 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,
EAudioMixerChannel::Type::SideRight
},
// Five channels (5.0)
{
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
},
#Loc: <Workspace>/Engine/Plugins/Runtime/Synthesis/Source/Synthesis/Private/ConvolutionReverb.cpp:56
Scope (from outer to inner):
file
namespace Audio
namespace ConvolutionReverbIntrinsics
Source code excerpt:
// Seven channels (7.0)
{
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:67
Scope (from outer to inner):
file
namespace Audio
namespace ConvolutionReverbIntrinsics
Source code excerpt:
// Eight channels (7.1)
{
EAudioMixerChannel::Type::FrontLeft,
EAudioMixerChannel::Type::FrontRight,
EAudioMixerChannel::Type::FrontCenter,
EAudioMixerChannel::Type::LowFrequency,
EAudioMixerChannel::Type::BackLeft,
EAudioMixerChannel::Type::BackRight,
EAudioMixerChannel::Type::SideLeft,
#Loc: <Workspace>/Engine/Plugins/Runtime/Synthesis/Source/Synthesis/Private/SubmixChannelFormatConverter.cpp:12
Scope (from outer to inner):
file
namespace Audio
namespace SubmixChannelFormatConverterPrivate
Source code excerpt:
static const TSet<EAudioMixerChannel::Type> FrontChannels(
{
EAudioMixerChannel::FrontLeft,
EAudioMixerChannel::FrontRight,
EAudioMixerChannel::FrontCenter,
EAudioMixerChannel::FrontLeftOfCenter,
EAudioMixerChannel::FrontRightOfCenter,
EAudioMixerChannel::TopFrontLeft,
EAudioMixerChannel::TopFrontRight,
#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 } },
#Loc: <Workspace>/Engine/Plugins/Runtime/Synthesis/Source/Synthesis/Private/SubmixChannelFormatConverter.cpp:41
Scope (from outer to inner):
file
namespace Audio
namespace SubmixChannelFormatConverterPrivate
Source code excerpt:
static const TMap<EAudioMixerChannel::Type, TArray<EAudioMixerChannel::Type>> PairedFlippedRearChannelTypes =
{
{ 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:69
Scope (from outer to inner):
file
namespace Audio
function bool GetSubmixChannelOrderForNumChannels
Source code excerpt:
// Stereo
OutChannelOrder.Append({EAudioMixerChannel::Type::FrontLeft, EAudioMixerChannel::Type::FrontRight});
return true;
case 4:
// Quad
OutChannelOrder.Append(
{
EAudioMixerChannel::Type::FrontLeft,
EAudioMixerChannel::Type::FrontRight,
EAudioMixerChannel::Type::SideLeft,
EAudioMixerChannel::Type::SideRight
}
);
#Loc: <Workspace>/Engine/Plugins/Runtime/Synthesis/Source/Synthesis/Private/SubmixChannelFormatConverter.cpp:91
Scope (from outer to inner):
file
namespace Audio
function bool GetSubmixChannelOrderForNumChannels
Source code excerpt:
OutChannelOrder.Append(
{
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:107
Scope (from outer to inner):
file
namespace Audio
function bool GetSubmixChannelOrderForNumChannels
Source code excerpt:
OutChannelOrder.Append(
{
EAudioMixerChannel::Type::FrontLeft,
EAudioMixerChannel::Type::FrontRight,
EAudioMixerChannel::Type::FrontCenter,
EAudioMixerChannel::Type::LowFrequency,
EAudioMixerChannel::Type::BackLeft,
EAudioMixerChannel::Type::BackRight,
EAudioMixerChannel::Type::SideLeft,
#Loc: <Workspace>/Engine/Plugins/Runtime/Synthesis/Source/Synthesis/Private/SubmixChannelFormatConverter.cpp:287
Scope (from outer to inner):
file
namespace Audio
function FSimpleRouter::FSimpleRouter
Source code excerpt:
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:380
Scope (from outer to inner):
file
namespace Audio
function bool FSimpleUpmixer::GetSimpleUpmixerStaticMixEntries
Source code excerpt:
// Query which input channels exist
const int32 InputFrontLeftIndex = InInputChannelTypes.Find(EAudioMixerChannel::Type::FrontLeft);
const int32 InputFrontRightIndex = InInputChannelTypes.Find(EAudioMixerChannel::Type::FrontRight);
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);
#Loc: <Workspace>/Engine/Plugins/Runtime/Synthesis/Source/Synthesis/Private/SubmixChannelFormatConverter.cpp:516
Scope (from outer to inner):
file
namespace Audio
function bool FSimpleUpmixer::GetSimpleUpmixerStaticMixEntries
Source code excerpt:
MonoToFrontLeft.InputChannelIndex = 0;
MonoToFrontLeft.OutputChannelIndex = InOutputChannelTypes.Find(EAudioMixerChannel::Type::FrontLeft);
MonoToFrontLeft.Gain = 0.707f; // Equal power
FChannelMixEntry& MonoToFrontRight = OutEntries.AddDefaulted_GetRef();
MonoToFrontRight.InputChannelIndex = 0;
MonoToFrontRight.OutputChannelIndex = InOutputChannelTypes.Find(EAudioMixerChannel::Type::FrontRight);
#Loc: <Workspace>/Engine/Plugins/Runtime/Synthesis/Source/Synthesis/Private/SubmixChannelFormatConverter.cpp:535
Scope (from outer to inner):
file
namespace Audio
function bool FSimpleUpmixer::GetSimpleUpmixerStaticMixEntries
Source code excerpt:
if (bOutputHasFrontLeft)
{
MonoToFront.OutputChannelIndex = InOutputChannelTypes.Find(EAudioMixerChannel::Type::FrontLeft);
}
else
{
MonoToFront.OutputChannelIndex = InOutputChannelTypes.Find(EAudioMixerChannel::Type::FrontRight);
}
}
#Loc: <Workspace>/Engine/Source/Runtime/Android/AudioMixerAndroid/Private/AudioMixerPlatformAndroid.cpp:196
Scope (from outer to inner):
file
namespace Audio
function bool FMixerPlatformAndroid::GetOutputDeviceInfo
Source code excerpt:
OutInfo.Format = EAudioMixerStreamDataFormat::Int16;
OutInfo.OutputChannelArray.SetNum(2);
OutInfo.OutputChannelArray[0] = EAudioMixerChannel::FrontLeft;
OutInfo.OutputChannelArray[1] = EAudioMixerChannel::FrontRight;
return true;
#else
// @todo Lumin: implement this function
return false;
#endif
#Loc: <Workspace>/Engine/Source/Runtime/Apple/AudioMixerAudioUnit/Private/AudioMixerPlatformAudioUnit.cpp:371
Scope (from outer to inner):
file
namespace Audio
function FAudioPlatformDeviceInfo FMixerPlatformAudioUnit::GetPlatformDeviceInfo
Source code excerpt:
DeviceInfo.Format = EAudioMixerStreamDataFormat::Float;
DeviceInfo.OutputChannelArray.SetNum(2);
DeviceInfo.OutputChannelArray[0] = EAudioMixerChannel::FrontLeft;
DeviceInfo.OutputChannelArray[1] = EAudioMixerChannel::FrontRight;
DeviceInfo.bIsSystemDefault = true;
return DeviceInfo;
}
#Loc: <Workspace>/Engine/Source/Runtime/Apple/AudioMixerCoreAudio/Private/AudioMixerPlatformCoreAudio.cpp:343
Scope (from outer to inner):
file
namespace Audio
function FAudioPlatformDeviceInfo FMixerPlatformCoreAudio::GetPlatformDeviceInfo
Source code excerpt:
DeviceInfo.Format = EAudioMixerStreamDataFormat::Float;
DeviceInfo.OutputChannelArray.SetNum(2);
DeviceInfo.OutputChannelArray[0] = EAudioMixerChannel::FrontLeft;
DeviceInfo.OutputChannelArray[1] = EAudioMixerChannel::FrontRight;
DeviceInfo.bIsSystemDefault = true;
return DeviceInfo;
}
#Loc: <Workspace>/Engine/Source/Runtime/AudioMixer/Private/AudioMixerChannelMaps.cpp:18
Scope (from outer to inner):
file
namespace Audio
Source code excerpt:
// ESubmixChannelFormat::Stereo
{
EAudioMixerChannel::FrontLeft,
EAudioMixerChannel::FrontRight
},
// ESubmixChannelFormat::Quad
{
EAudioMixerChannel::FrontLeft,
EAudioMixerChannel::FrontRight,
EAudioMixerChannel::SideLeft,
EAudioMixerChannel::SideRight
},
// ESubmixChannelFormat::FiveDotOne
{
EAudioMixerChannel::FrontLeft,
EAudioMixerChannel::FrontRight,
EAudioMixerChannel::FrontCenter,
EAudioMixerChannel::LowFrequency,
EAudioMixerChannel::SideLeft,
EAudioMixerChannel::SideRight
},
#Loc: <Workspace>/Engine/Source/Runtime/AudioMixer/Private/AudioMixerChannelMaps.cpp:42
Scope (from outer to inner):
file
namespace Audio
Source code excerpt:
// ESubmixChannelFormat::SevenDotOne
{
EAudioMixerChannel::FrontLeft,
EAudioMixerChannel::FrontRight,
EAudioMixerChannel::FrontCenter,
EAudioMixerChannel::LowFrequency,
EAudioMixerChannel::BackLeft,
EAudioMixerChannel::BackRight,
EAudioMixerChannel::SideLeft,
#Loc: <Workspace>/Engine/Source/Runtime/AudioMixer/Private/AudioMixerChannelMaps.cpp:57
Scope (from outer to inner):
file
namespace Audio
Source code excerpt:
// Ambisonics_W/X/Y/Z alias values.
{
EAudioMixerChannel::FrontLeft,
EAudioMixerChannel::FrontRight,
EAudioMixerChannel::FrontCenter,
EAudioMixerChannel::LowFrequency,
EAudioMixerChannel::BackLeft,
EAudioMixerChannel::BackRight,
EAudioMixerChannel::SideLeft,
#Loc: <Workspace>/Engine/Source/Runtime/AudioMixer/Private/AudioMixerChannelMaps.cpp:212
Scope (from outer to inner):
file
namespace Audio
function void FMixerDevice::InitializeChannelAzimuthMap
Source code excerpt:
if (NumChannels == 2)
{
DefaultChannelAzimuthPositions[EAudioMixerChannel::FrontLeft] = { EAudioMixerChannel::FrontLeft, 270 };
DefaultChannelAzimuthPositions[EAudioMixerChannel::FrontRight] = { EAudioMixerChannel::FrontRight, 90 };
}
else
{
DefaultChannelAzimuthPositions[EAudioMixerChannel::FrontLeft] = { EAudioMixerChannel::FrontLeft, 330 };
DefaultChannelAzimuthPositions[EAudioMixerChannel::FrontRight] = { EAudioMixerChannel::FrontRight, 30 };
}
if (bAllowCenterChannel3DPanning)
{
// Allow center channel for azimuth computations
#Loc: <Workspace>/Engine/Source/Runtime/AudioMixer/Private/AudioMixerDevice.cpp:421
Scope (from outer to inner):
file
namespace Audio
function TArray<Audio::FChannelPositionInfo>* FMixerDevice::GetDefaultPositionMap
Source code excerpt:
case 2:
{
static TArray<Audio::FChannelPositionInfo> StereoMap = { SpeakerPositions[EAudioMixerChannel::FrontLeft], SpeakerPositions[EAudioMixerChannel::FrontRight] };
return &StereoMap;
}
// Quadrophonic speakers at each corner.
case 4:
{
static TArray<Audio::FChannelPositionInfo> QuadMap = {
SpeakerPositions[EAudioMixerChannel::FrontLeft] //left
,SpeakerPositions[EAudioMixerChannel::FrontRight] // right
,SpeakerPositions[EAudioMixerChannel::SideLeft] //Left Surround
,SpeakerPositions[EAudioMixerChannel::SideRight] //Right Surround
};
return &QuadMap;
}
#Loc: <Workspace>/Engine/Source/Runtime/AudioMixer/Private/AudioMixerDevice.cpp:441
Scope (from outer to inner):
file
namespace Audio
function TArray<Audio::FChannelPositionInfo>* FMixerDevice::GetDefaultPositionMap
Source code excerpt:
{
static TArray<Audio::FChannelPositionInfo> FiveDotOneMap = {
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
};
#Loc: <Workspace>/Engine/Source/Runtime/AudioMixer/Private/AudioMixerDevice.cpp:455
Scope (from outer to inner):
file
namespace Audio
function TArray<Audio::FChannelPositionInfo>* FMixerDevice::GetDefaultPositionMap
Source code excerpt:
{
static TArray<Audio::FChannelPositionInfo> SevenDotOneMap = {
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
#Loc: <Workspace>/Engine/Source/Runtime/AudioMixer/Private/AudioMixerSource.cpp:2142
Scope (from outer to inner):
file
namespace Audio
function bool FMixerSource::ComputeStereoChannelMap
lambda-function
Source code excerpt:
{
TMap<EAudioMixerChannel::Type, float> LeftOmniMap;
LeftOmniMap.Add(EAudioMixerChannel::FrontLeft, 1.0f);
return LeftOmniMap;
};
auto CreateRightOmniMap = []() -> TMap<EAudioMixerChannel::Type, float>
{
TMap<EAudioMixerChannel::Type, float> RightOmniMap;
#Loc: <Workspace>/Engine/Source/Runtime/AudioMixer/Private/AudioMixerSource.cpp:2168
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::SideLeft, 1.0f);
return LeftOmniMap;
};
auto CreateRightOmniMap = []() -> TMap<EAudioMixerChannel::Type, float>
#Loc: <Workspace>/Engine/Source/Runtime/AudioMixer/Private/AudioMixerSource.cpp:2197
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/Private/AudioMixerSourceOutputBuffer.cpp:407
Scope (from outer to inner):
file
namespace Audio
function void FMixerSourceSubmixOutputBuffer::EncodeToSoundfieldFormats
Source code excerpt:
{
FChannelPositionInfo LeftChannelPosition;
LeftChannelPosition.Channel = EAudioMixerChannel::FrontLeft;
ConvertCartesianToSpherical(InSpatParams.LeftChannelPosition, LeftChannelPosition.Azimuth, LeftChannelPosition.Elevation, LeftChannelPosition.Radius);
InputChannelPositions.Add(LeftChannelPosition);
FChannelPositionInfo RightChannelPosition;
LeftChannelPosition.Channel = EAudioMixerChannel::FrontRight;
#Loc: <Workspace>/Engine/Source/Runtime/AudioMixer/Public/AudioMixerBlueprintLibrary.h:57
Scope: file
Source code excerpt:
enum class EAudioMixerChannelType : uint8
{
FrontLeft,
FrontRight,
FrontCenter,
LowFrequency,
BackLeft,
BackRight,
FrontLeftOfCenter,
#Loc: <Workspace>/Engine/Source/Runtime/AudioMixer/Public/AudioMixerBlueprintLibrary.h:77
Scope: file
Source code excerpt:
Unknown,
ChannelTypeCount,
DefaultChannel = FrontLeft
};
inline const TCHAR* ToString(EAudioMixerChannelType InType)
{
switch (InType)
{
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");
#Loc: <Workspace>/Engine/Source/Runtime/AudioMixerCore/Private/AudioMixer.cpp:809
Scope (from outer to inner):
file
namespace Audio
function static void InitializeDefaultChannelOrder
Source code excerpt:
// Create a hard-coded default channel order
check(UE_ARRAY_COUNT(DefaultChannelOrder) == AUDIO_MIXER_MAX_OUTPUT_CHANNELS);
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;
#Loc: <Workspace>/Engine/Source/Runtime/AudioMixerCore/Public/AudioMixer.h:79
Scope (from outer to inner):
file
namespace EAudioMixerChannel
Source code excerpt:
enum Type
{
FrontLeft,
FrontRight,
FrontCenter,
LowFrequency,
BackLeft,
BackRight,
FrontLeftOfCenter,
#Loc: <Workspace>/Engine/Source/Runtime/AudioMixerCore/Public/AudioMixer.h:99
Scope (from outer to inner):
file
namespace EAudioMixerChannel
Source code excerpt:
Unknown,
ChannelTypeCount,
DefaultChannel = FrontLeft
};
static const int32 MaxSupportedChannel = EAudioMixerChannel::TopCenter;
inline const TCHAR* ToString(EAudioMixerChannel::Type InType)
{
switch (InType)
{
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");
#Loc: <Workspace>/Engine/Source/Runtime/Linux/AudioMixerSDL/Private/AudioMixerPlatformSDL.cpp:249
Scope (from outer to inner):
file
namespace Audio
function bool FMixerPlatformSDL::OpenAudioStream
Source code excerpt:
{
// No devices available, Switch to NULL (Silent) Output.
AudioStreamInfo.DeviceInfo.OutputChannelArray = { EAudioMixerChannel::FrontLeft, EAudioMixerChannel::FrontRight };
AudioStreamInfo.DeviceInfo.NumChannels = 2;
AudioStreamInfo.DeviceInfo.Format = EAudioMixerStreamDataFormat::Float;
}
AudioStreamInfo.StreamState = EAudioOutputStreamState::Open;
#Loc: <Workspace>/Engine/Source/Runtime/MediaUtils/Private/MediaAudioResampler.cpp:33
Scope (from outer to inner):
file
namespace MediaAudioResampler
Source code excerpt:
static const float Matrix_4_1[] = {
// FrontLeft FrontRight SideLeft SideRight
0.707f, 0.707f, 0.5f, 0.5f, // Mono
};
static const float Matrix_5_1[] = {
// FrontLeft FrontRight Center SideLeft SideRight
0.707f, 0.707f, 0.5f, 0.5f, 0.5f, // Mono
};
static const float Matrix_6_1[] = {
// FrontLeft FrontRight Center LowFreq SideLeft SideRight
0.707f, 0.707f, 0.5f, 0.0f, 0.5f, 0.5f, // Mono
};
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:89
Scope (from outer to inner):
file
namespace MediaAudioResampler
Source code excerpt:
static const float Matrix_4_2[] = {
// FrontLeft FrontRight SideLeft SideRight
1.0f, 0.0f, 0.707f, 0.0f, // Left
0.0f, 1.0f, 0.0f, 0.707f, // Right
};
static const float Matrix_5_2[] = {
// FrontLeft FrontRight Center SideLeft SideRight
1.0f, 0.0f, 0.707f, 0.707f, 0.0f, // Left
0.0f, 1.0f, 0.707f, 0.0f, 0.707f, // Right
};
static const float Matrix_6_2[] = {
// FrontLeft FrontRight Center LowFreq SideLeft SideRight
1.0f, 0.0f, 0.707f, 0.0f, 0.707f, 0.0f, // Left
0.0f, 1.0f, 0.707f, 0.0f, 0.0f, 0.707f, // Right
};
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:134
Scope (from outer to inner):
file
namespace MediaAudioResampler
Source code excerpt:
static const float Matrix_1_8[] = {
// Mono
0.0f, // FrontLeft
0.0f, // FrontRight
1.0f, // Center
0.0f, // LowFrequency
0.0f, // SideLeft
0.0f, // SideRight
0.0f, // BackLeft
#Loc: <Workspace>/Engine/Source/Runtime/MediaUtils/Private/MediaAudioResampler.cpp:145
Scope (from outer to inner):
file
namespace MediaAudioResampler
Source code excerpt:
static const float Matrix_2_8[] = {
// FrontLeft FrontRight
1.0f, 0.0f, // FrontLeft
0.0f, 1.0f, // FrontRight
0.0f, 0.0f, // Center
0.0f, 0.0f, // LowFrequency
0.0f, 0.0f, // SideLeft
0.0f, 0.0f, // SideRight
0.0f, 0.0f, // BackLeft
#Loc: <Workspace>/Engine/Source/Runtime/MediaUtils/Private/MediaAudioResampler.cpp:157
Scope (from outer to inner):
file
namespace MediaAudioResampler
Source code excerpt:
static const float Matrix_3_8[] = {
// FrontLeft FrontRight Center
1.0f, 0.0f, 0.0f, // FrontLeft
0.0f, 1.0f, 0.0f, // FrontRight
0.0f, 0.0f, 1.0f, // Center
0.0f, 0.0f, 0.0f, // LowFrequency
0.0f, 0.0f, 0.0f, // SideLeft
0.0f, 0.0f, 0.0f, // SideRight
0.0f, 0.0f, 0.0f, // BackLeft
#Loc: <Workspace>/Engine/Source/Runtime/MediaUtils/Private/MediaAudioResampler.cpp:169
Scope (from outer to inner):
file
namespace MediaAudioResampler
Source code excerpt:
static const float Matrix_4_8[] = {
// FrontLeft FrontRight SideLeft SideRight
1.0f, 0.0f, 0.0f, 0.0f, // FrontLeft
0.0f, 1.0f, 0.0f, 0.0f, // FrontRight
0.0f, 0.0f, 0.0f, 0.0f, // Center
0.0f, 0.0f, 0.0f, 0.0f, // LowFrequency
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
#Loc: <Workspace>/Engine/Source/Runtime/MediaUtils/Private/MediaAudioResampler.cpp:181
Scope (from outer to inner):
file
namespace MediaAudioResampler
Source code excerpt:
static const float Matrix_5_8[] = {
// FrontLeft FrontRight Center SideLeft SideRight
1.0f, 0.0f, 0.0f, 0.0f, 0.0f, // FrontLeft
0.0f, 1.0f, 0.0f, 0.0f, 0.0f, // FrontRight
0.0f, 0.0f, 1.0f, 0.0f, 0.0f, // Center
0.0f, 0.0f, 0.0f, 0.0f, 0.0f, // LowFrequency
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
#Loc: <Workspace>/Engine/Source/Runtime/MediaUtils/Private/MediaAudioResampler.cpp:193
Scope (from outer to inner):
file
namespace MediaAudioResampler
Source code excerpt:
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
0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, // FrontRight
0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, // Center
0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, // LowFrequency
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
#Loc: <Workspace>/Engine/Source/Runtime/MediaUtils/Private/MediaAudioResampler.cpp:205
Scope (from outer to inner):
file
namespace MediaAudioResampler
Source code excerpt:
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
#Loc: <Workspace>/Engine/Source/Runtime/MediaUtils/Private/MediaAudioResampler.cpp:217
Scope (from outer to inner):
file
namespace MediaAudioResampler
Source code excerpt:
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
#Loc: <Workspace>/Engine/Source/Runtime/NonRealtimeAudioRenderer/Private/AudioMixerPlatformNonRealtime.cpp:164
Scope (from outer to inner):
file
namespace Audio
function bool FMixerPlatformNonRealtime::GetOutputDeviceInfo
Source code excerpt:
OutInfo.NumChannels = NumChannels;
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);
#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
0.707f, 1.0f, 0.707f, 0.5f, 0.5f, 0.0f, // FrontLeft
};
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] =
{
// FrontLeft Center FrontRight SideLeft SideRight LowFrequency
1.0f, 0.707f, 0.0f, 0.707f, 0.0f, 0.0f, // FrontLeft
0.0f, 0.707f, 1.0f, 0.0f, 0.707f, 0.0f, // FrontRight
};
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] =
{
// FrontLeft Center FrontRight SideLeft SideRight LowFrequency
1.0f, 0.0f, 0.0f, 0.707f, 0.0f, 0.0f, // FrontLeft
0.0f, 0.0f, 1.0f, 0.0f, 0.707f, 0.0f, // FrontRight
0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, // Center
};
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
};
static constexpr float VorbisToQuadMatrix[ChannelMapVorbisNumChannels * 4] =
{
// FrontLeft Center FrontRight SideLeft SideRight LowFrequency
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, 1.0f, 0.0f, 0.0f, // SideLeft
0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, // SideRight
};
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
};
static constexpr float VorbisTo5Matrix[ChannelMapVorbisNumChannels * 5] =
{
// FrontLeft Center FrontRight SideLeft SideRight LowFrequency
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, // Center
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
};
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:103
Scope (from outer to inner):
file
namespace Audio
namespace ChannelMapPrivate
Source code excerpt:
static constexpr float VorbisTo5Point1Matrix[ChannelMapVorbisNumChannels * 6] =
{
// FrontLeft Center FrontRight SideLeft SideRight LowFrequency
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, // Center
0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, // LowFrequency
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: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:126
Scope (from outer to inner):
file
namespace Audio
namespace ChannelMapPrivate
Source code excerpt:
static constexpr float VorbisToHexMatrix[ChannelMapVorbisNumChannels * 7] =
{
// FrontLeft Center FrontRight SideLeft SideRight LowFrequency
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
#Loc: <Workspace>/Engine/Source/Runtime/SignalProcessing/Private/ChannelMap.cpp:156
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, 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
#Loc: <Workspace>/Engine/Source/Runtime/SignalProcessing/Private/ChannelMap.cpp:171
Scope (from outer to inner):
file
namespace Audio
namespace ChannelMapPrivate
Source code excerpt:
static constexpr float VorbisTo7Point1Matrix[ChannelMapVorbisNumChannels * 8] =
{
// FrontLeft Center FrontRight SideLeft SideRight LowFrequency
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
#Loc: <Workspace>/Engine/Source/Runtime/SignalProcessing/Private/ReverbFast.cpp:188
Scope (from outer to inner):
file
namespace Audio
function void FPlateReverbFast::InterleaveAndMixOutput
Source code excerpt:
for (int32 i = 0; i < InNumFrames; i++, OutPos += OutNumChannels)
{
OutSampleData[OutPos + EAudioMixerChannel::FrontLeft] = LeftSampleData[i];
OutSampleData[OutPos + EAudioMixerChannel::FrontRight] = RightSampleData[i];
}
}
else
{
// There are 5 or more output channels and quad mapping is enabled.
#Loc: <Workspace>/Engine/Source/Runtime/SignalProcessing/Private/ReverbFast.cpp:233
Scope (from outer to inner):
file
namespace Audio
function void FPlateReverbFast::InterleaveAndMixOutput
Source code excerpt:
for (int32 i = 0; i < InNumFrames; i++, OutPos += OutNumChannels)
{
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:684
Scope: file
Source code excerpt:
TArray<Audio::FChannelPositionInfo> FSoundFieldDecoder::VirtualSpeakerLocationsHorzOnly = {
{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}
#Loc: <Workspace>/Engine/Source/Runtime/Windows/AudioMixerXAudio2/Private/AudioMixerPlatformXAudio2.cpp:854
Scope (from outer to inner):
file
namespace Audio
function static bool GetMMDeviceInfo
Source code excerpt:
static EAudioMixerChannel::Type DefaultChannelOrdering[] = {
EAudioMixerChannel::FrontLeft,
EAudioMixerChannel::FrontRight,
EAudioMixerChannel::FrontCenter,
EAudioMixerChannel::LowFrequency,
EAudioMixerChannel::SideLeft,
EAudioMixerChannel::SideRight,
EAudioMixerChannel::BackLeft,
#Loc: <Workspace>/Engine/Source/Runtime/Windows/AudioMixerXAudio2/Private/AudioMixerPlatformXAudio2.cpp:870
Scope (from outer to inner):
file
namespace Audio
function static bool GetMMDeviceInfo
Source code excerpt:
{
static EAudioMixerChannel::Type DefaultChannelOrderingQuad[] = {
EAudioMixerChannel::FrontLeft,
EAudioMixerChannel::FrontRight,
EAudioMixerChannel::BackLeft,
EAudioMixerChannel::BackRight,
};
ChannelOrdering = DefaultChannelOrderingQuad;
#Loc: <Workspace>/Engine/Source/Runtime/Windows/AudioMixerXAudio2/Private/AudioMixerPlatformXAudio2.cpp:881
Scope (from outer to inner):
file
namespace Audio
function static bool GetMMDeviceInfo
Source code excerpt:
{
static EAudioMixerChannel::Type DefaultChannelOrdering51[] = {
EAudioMixerChannel::FrontLeft,
EAudioMixerChannel::FrontRight,
EAudioMixerChannel::FrontCenter,
EAudioMixerChannel::LowFrequency,
EAudioMixerChannel::BackLeft,
EAudioMixerChannel::BackRight,
};
#Loc: <Workspace>/Engine/Source/Runtime/Windows/AudioMixerXAudio2/Private/AudioMixerPlatformXAudio2.cpp:902
Scope (from outer to inner):
file
namespace Audio
function static bool GetMMDeviceInfo
Source code excerpt:
{
// Non-extensible formats only support mono or stereo channel output
OutInfo.OutputChannelArray.Add(EAudioMixerChannel::FrontLeft);
if (OutInfo.NumChannels == 2)
{
OutInfo.OutputChannelArray.Add(EAudioMixerChannel::FrontRight);
}
}
#Loc: <Workspace>/Engine/Source/Runtime/Windows/AudioMixerXAudio2/Private/AudioMixerPlatformXAudio2.cpp:1032
Scope (from outer to inner):
file
namespace Audio
function bool FMixerPlatformXAudio2::GetOutputDeviceInfo
Source code excerpt:
OutInfo.NumChannels = 8;
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);
#Loc: <Workspace>/Engine/Source/Runtime/Windows/AudioMixerXAudio2/Private/AudioMixerPlatformXAudio2.cpp:1149
Scope (from outer to inner):
file
namespace Audio
function bool FMixerPlatformXAudio2::OpenAudioStream
Source code excerpt:
// Setup for running null device.
AudioStreamInfo.NumOutputFrames = OpenStreamParams.NumFrames;
AudioStreamInfo.DeviceInfo.OutputChannelArray = { EAudioMixerChannel::FrontLeft, EAudioMixerChannel::FrontRight };
AudioStreamInfo.DeviceInfo.NumChannels = 2;
AudioStreamInfo.DeviceInfo.SampleRate = OpenStreamParams.SampleRate;
AudioStreamInfo.DeviceInfo.Format = EAudioMixerStreamDataFormat::Float;
}
#if PLATFORM_WINDOWS
#Loc: <Workspace>/Engine/Source/Runtime/Windows/AudioMixerXAudio2/Private/WindowsMMDeviceInfoCache.cpp:130
Scope (from outer to inner):
file
namespace Audio
function bool FWindowsMMDeviceCache::EnumerateChannelMask
Source code excerpt:
static const EAudioMixerChannel::Type DefaultChannelOrdering[] = {
EAudioMixerChannel::FrontLeft,
EAudioMixerChannel::FrontRight,
EAudioMixerChannel::FrontCenter,
EAudioMixerChannel::LowFrequency,
EAudioMixerChannel::SideLeft,
EAudioMixerChannel::SideRight,
EAudioMixerChannel::BackLeft,
#Loc: <Workspace>/Engine/Source/Runtime/Windows/AudioMixerXAudio2/Private/WindowsMMDeviceInfoCache.cpp:146
Scope (from outer to inner):
file
namespace Audio
function bool FWindowsMMDeviceCache::EnumerateChannelMask
Source code excerpt:
{
static EAudioMixerChannel::Type DefaultChannelOrderingQuad[] = {
EAudioMixerChannel::FrontLeft,
EAudioMixerChannel::FrontRight,
EAudioMixerChannel::BackLeft,
EAudioMixerChannel::BackRight,
};
ChannelOrdering = DefaultChannelOrderingQuad;
#Loc: <Workspace>/Engine/Source/Runtime/Windows/AudioMixerXAudio2/Private/WindowsMMDeviceInfoCache.cpp:157
Scope (from outer to inner):
file
namespace Audio
function bool FWindowsMMDeviceCache::EnumerateChannelMask
Source code excerpt:
{
static const EAudioMixerChannel::Type DefaultChannelOrdering51[] = {
EAudioMixerChannel::FrontLeft,
EAudioMixerChannel::FrontRight,
EAudioMixerChannel::FrontCenter,
EAudioMixerChannel::LowFrequency,
EAudioMixerChannel::BackLeft,
EAudioMixerChannel::BackRight,
};
#Loc: <Workspace>/Engine/Source/Runtime/Windows/AudioMixerXAudio2/Private/WindowsMMDeviceInfoCache.cpp:191
Scope (from outer to inner):
file
namespace Audio
function bool FWindowsMMDeviceCache::EnumerateChannelFormat
Source code excerpt:
{
// Non-extensible formats only support mono or stereo channel output
OutInfo.OutputChannels.Add(EAudioMixerChannel::FrontLeft);
if (OutInfo.NumChannels == 2)
{
OutInfo.OutputChannels.Add(EAudioMixerChannel::FrontRight);
}
}