SideLeft
SideLeft
#Overview
name: SideLeft
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 34
C++ source files.
#Summary
#Usage in the C++ source code
The purpose of SideLeft is to represent the side left channel in a multi-channel audio setup. This variable is part of the EAudioMixerChannel enumeration, which defines various channel types for audio mixing and processing in Unreal Engine 5.
SideLeft is primarily used in the audio subsystem of Unreal Engine, specifically in the AudioMixer module and related audio processing components. It’s also utilized in plugins like the Synthesis plugin for audio effects and processing.
The value of this variable is typically set as part of the audio channel configuration, either programmatically or through engine settings. It’s often used in conjunction with other channel types to define speaker layouts and audio routing.
SideLeft frequently interacts with other channel types, particularly SideRight, as they form a pair of side channels in surround sound setups. It’s also commonly used alongside other channel types like FrontLeft, FrontRight, Center, LowFrequency, BackLeft, and BackRight to create various multi-channel configurations (e.g., 5.1, 7.1).
Developers should be aware that the SideLeft channel is not present in all audio configurations. Its availability depends on the specific audio setup and the number of channels supported by the audio device or format being used.
Best practices when using this variable include:
- Always check for the presence of the SideLeft channel before attempting to use it.
- Consider fallback options for audio systems that don’t support side channels.
- Ensure proper channel mapping when converting between different audio formats or channel configurations.
- Use it in conjunction with other channel types to create immersive surround sound experiences.
#Setting Variables
#References In INI files
Location: <Workspace>/Engine/Config/BaseEngine.ini:1580, section: [AudioChannelAzimuthMap]
- INI Section:
AudioChannelAzimuthMap
- Raw value:
250
- Is Array:
False
Location: <Workspace>/Engine/Config/BaseEngine.ini:1589, section: [AudioDefaultChannelOrder]
- INI Section:
AudioDefaultChannelOrder
- Raw value:
4
- 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:31
Scope (from outer to inner):
file
namespace Audio
namespace ConvolutionReverbIntrinsics
Source code excerpt:
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,
#Loc: <Workspace>/Engine/Plugins/Runtime/Synthesis/Source/Synthesis/Private/ConvolutionReverb.cpp:50
Scope (from outer to inner):
file
namespace Audio
namespace ConvolutionReverbIntrinsics
Source code excerpt:
EAudioMixerChannel::Type::FrontCenter,
EAudioMixerChannel::Type::LowFrequency,
EAudioMixerChannel::Type::SideLeft,
EAudioMixerChannel::Type::SideRight
},
// Seven channels (7.0)
{
EAudioMixerChannel::Type::FrontLeft,
#Loc: <Workspace>/Engine/Plugins/Runtime/Synthesis/Source/Synthesis/Private/ConvolutionReverb.cpp:61
Scope (from outer to inner):
file
namespace Audio
namespace ConvolutionReverbIntrinsics
Source code excerpt:
EAudioMixerChannel::Type::BackLeft,
EAudioMixerChannel::Type::BackRight,
EAudioMixerChannel::Type::SideLeft,
EAudioMixerChannel::Type::SideRight
},
// Eight channels (7.1)
{
EAudioMixerChannel::Type::FrontLeft,
#Loc: <Workspace>/Engine/Plugins/Runtime/Synthesis/Source/Synthesis/Private/ConvolutionReverb.cpp:73
Scope (from outer to inner):
file
namespace Audio
namespace ConvolutionReverbIntrinsics
Source code excerpt:
EAudioMixerChannel::Type::BackLeft,
EAudioMixerChannel::Type::BackRight,
EAudioMixerChannel::Type::SideLeft,
EAudioMixerChannel::Type::SideRight
}
};
bool GetReverbOutputChannelTypesForNumChannels(int32 InNumChannels, TArray<EAudioMixerChannel::Type>& OutChannelTypes)
{
#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:79
Scope (from outer to inner):
file
namespace Audio
function bool GetSubmixChannelOrderForNumChannels
Source code excerpt:
EAudioMixerChannel::Type::FrontLeft,
EAudioMixerChannel::Type::FrontRight,
EAudioMixerChannel::Type::SideLeft,
EAudioMixerChannel::Type::SideRight
}
);
return true;
#Loc: <Workspace>/Engine/Plugins/Runtime/Synthesis/Source/Synthesis/Private/SubmixChannelFormatConverter.cpp:95
Scope (from outer to inner):
file
namespace Audio
function bool GetSubmixChannelOrderForNumChannels
Source code excerpt:
EAudioMixerChannel::Type::FrontCenter,
EAudioMixerChannel::Type::LowFrequency,
EAudioMixerChannel::Type::SideLeft,
EAudioMixerChannel::Type::SideRight
}
);
return true;
#Loc: <Workspace>/Engine/Plugins/Runtime/Synthesis/Source/Synthesis/Private/SubmixChannelFormatConverter.cpp:113
Scope (from outer to inner):
file
namespace Audio
function bool GetSubmixChannelOrderForNumChannels
Source code excerpt:
EAudioMixerChannel::Type::BackLeft,
EAudioMixerChannel::Type::BackRight,
EAudioMixerChannel::Type::SideLeft,
EAudioMixerChannel::Type::SideRight
}
);
return true;
}
#Loc: <Workspace>/Engine/Plugins/Runtime/Synthesis/Source/Synthesis/Private/SubmixChannelFormatConverter.cpp:382
Scope (from outer to inner):
file
namespace Audio
function bool FSimpleUpmixer::GetSimpleUpmixerStaticMixEntries
Source code excerpt:
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);
// Check for mono input and stereo output.
const bool bInputIsMono = (1 == InInputChannelTypes.Num()) && (InInputChannelTypes[0] == EAudioMixerChannel::Type::FrontCenter);
#Loc: <Workspace>/Engine/Source/Runtime/AudioMixer/Private/AudioMixerChannelMaps.cpp:26
Scope (from outer to inner):
file
namespace Audio
Source code excerpt:
EAudioMixerChannel::FrontLeft,
EAudioMixerChannel::FrontRight,
EAudioMixerChannel::SideLeft,
EAudioMixerChannel::SideRight
},
// ESubmixChannelFormat::FiveDotOne
{
EAudioMixerChannel::FrontLeft,
#Loc: <Workspace>/Engine/Source/Runtime/AudioMixer/Private/AudioMixerChannelMaps.cpp:36
Scope (from outer to inner):
file
namespace Audio
Source code excerpt:
EAudioMixerChannel::FrontCenter,
EAudioMixerChannel::LowFrequency,
EAudioMixerChannel::SideLeft,
EAudioMixerChannel::SideRight
},
// ESubmixChannelFormat::SevenDotOne
{
EAudioMixerChannel::FrontLeft,
#Loc: <Workspace>/Engine/Source/Runtime/AudioMixer/Private/AudioMixerChannelMaps.cpp:48
Scope (from outer to inner):
file
namespace Audio
Source code excerpt:
EAudioMixerChannel::BackLeft,
EAudioMixerChannel::BackRight,
EAudioMixerChannel::SideLeft,
EAudioMixerChannel::SideRight
},
// ESubmixChannelFormat::Ambisonics
// Ambisonics output is encoded to max encoded channel (i.e. 7.1).
// To support ambisonic encoded output, will need to convert to
#Loc: <Workspace>/Engine/Source/Runtime/AudioMixer/Private/AudioMixerChannelMaps.cpp:63
Scope (from outer to inner):
file
namespace Audio
Source code excerpt:
EAudioMixerChannel::BackLeft,
EAudioMixerChannel::BackRight,
EAudioMixerChannel::SideLeft,
EAudioMixerChannel::SideRight
},
};
// Make a channel map cache
static TArray<TArray<float>> ChannelMapCache;
#Loc: <Workspace>/Engine/Source/Runtime/AudioMixer/Private/AudioMixerChannelMaps.cpp:240
Scope (from outer to inner):
file
namespace Audio
function void FMixerDevice::InitializeChannelAzimuthMap
Source code excerpt:
DefaultChannelAzimuthPositions[EAudioMixerChannel::FrontRightOfCenter] = { EAudioMixerChannel::FrontRightOfCenter, 345 };
DefaultChannelAzimuthPositions[EAudioMixerChannel::BackCenter] = { EAudioMixerChannel::BackCenter, 180 };
DefaultChannelAzimuthPositions[EAudioMixerChannel::SideLeft] = { EAudioMixerChannel::SideLeft, 250 };
DefaultChannelAzimuthPositions[EAudioMixerChannel::SideRight] = { EAudioMixerChannel::SideRight, 110 };
// Check any engine ini overrides for these default positions
if (NumChannels != 2)
{
int32 AzimuthPositionOverride = 0;
#Loc: <Workspace>/Engine/Source/Runtime/AudioMixer/Private/AudioMixerDevice.cpp:431
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::SideLeft] //Left Surround
,SpeakerPositions[EAudioMixerChannel::SideRight] //Right Surround
};
return &QuadMap;
}
// 5.1 speakers.
#Loc: <Workspace>/Engine/Source/Runtime/AudioMixer/Private/AudioMixerDevice.cpp:445
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::SideLeft] //Left Rear
,SpeakerPositions[EAudioMixerChannel::SideRight] //Right Rear
};
return &FiveDotOneMap;
}
// 7.1 speakers.
#Loc: <Workspace>/Engine/Source/Runtime/AudioMixer/Private/AudioMixerDevice.cpp:461
Scope (from outer to inner):
file
namespace Audio
function TArray<Audio::FChannelPositionInfo>* FMixerDevice::GetDefaultPositionMap
Source code excerpt:
,SpeakerPositions[EAudioMixerChannel::BackLeft] // Left Rear
,SpeakerPositions[EAudioMixerChannel::BackRight] // Right Rear
,SpeakerPositions[EAudioMixerChannel::SideLeft] // Left Surround
,SpeakerPositions[EAudioMixerChannel::SideRight] // Right Surround
};
return &SevenDotOneMap;
}
#Loc: <Workspace>/Engine/Source/Runtime/AudioMixer/Private/AudioMixerSource.cpp:2169
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/Public/AudioMixerBlueprintLibrary.h:66
Scope: file
Source code excerpt:
FrontRightOfCenter,
BackCenter,
SideLeft,
SideRight,
TopCenter,
TopFrontLeft,
TopFrontCenter,
TopFrontRight,
TopBackLeft,
#Loc: <Workspace>/Engine/Source/Runtime/AudioMixer/Public/AudioMixerBlueprintLibrary.h:93
Scope (from outer to inner):
file
function inline const TCHAR* ToString
Source code excerpt:
case EAudioMixerChannelType::FrontRightOfCenter: return TEXT("FrontRightOfCenter");
case EAudioMixerChannelType::BackCenter: return TEXT("BackCenter");
case EAudioMixerChannelType::SideLeft: return TEXT("SideLeft");
case EAudioMixerChannelType::SideRight: return TEXT("SideRight");
case EAudioMixerChannelType::TopCenter: return TEXT("TopCenter");
case EAudioMixerChannelType::TopFrontLeft: return TEXT("TopFrontLeft");
case EAudioMixerChannelType::TopFrontCenter: return TEXT("TopFrontCenter");
case EAudioMixerChannelType::TopFrontRight: return TEXT("TopFrontRight");
case EAudioMixerChannelType::TopBackLeft: return TEXT("TopBackLeft");
#Loc: <Workspace>/Engine/Source/Runtime/AudioMixerCore/Private/AudioMixer.cpp:813
Scope (from outer to inner):
file
namespace Audio
function static void InitializeDefaultChannelOrder
Source code excerpt:
DefaultChannelOrder[2] = EAudioMixerChannel::FrontCenter;
DefaultChannelOrder[3] = EAudioMixerChannel::LowFrequency;
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];
#Loc: <Workspace>/Engine/Source/Runtime/AudioMixerCore/Public/AudioMixer.h:88
Scope (from outer to inner):
file
namespace EAudioMixerChannel
Source code excerpt:
FrontRightOfCenter,
BackCenter,
SideLeft,
SideRight,
TopCenter,
TopFrontLeft,
TopFrontCenter,
TopFrontRight,
TopBackLeft,
#Loc: <Workspace>/Engine/Source/Runtime/AudioMixerCore/Public/AudioMixer.h:117
Scope (from outer to inner):
file
namespace EAudioMixerChannel
function inline const TCHAR* ToString
Source code excerpt:
case FrontRightOfCenter: return TEXT("FrontRightOfCenter");
case BackCenter: return TEXT("BackCenter");
case SideLeft: return TEXT("SideLeft");
case SideRight: return TEXT("SideRight");
case TopCenter: return TEXT("TopCenter");
case TopFrontLeft: return TEXT("TopFrontLeft");
case TopFrontCenter: return TEXT("TopFrontCenter");
case TopFrontRight: return TEXT("TopFrontRight");
case TopBackLeft: return TEXT("TopBackLeft");
#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:138
Scope (from outer to inner):
file
namespace MediaAudioResampler
Source code excerpt:
1.0f, // Center
0.0f, // LowFrequency
0.0f, // SideLeft
0.0f, // SideRight
0.0f, // BackLeft
0.0f, // BackRight
};
static const float Matrix_2_8[] = {
#Loc: <Workspace>/Engine/Source/Runtime/MediaUtils/Private/MediaAudioResampler.cpp:150
Scope (from outer to inner):
file
namespace MediaAudioResampler
Source code excerpt:
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
0.0f, 0.0f, // BackRight
};
static const float Matrix_3_8[] = {
#Loc: <Workspace>/Engine/Source/Runtime/MediaUtils/Private/MediaAudioResampler.cpp:162
Scope (from outer to inner):
file
namespace MediaAudioResampler
Source code excerpt:
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
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
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
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
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
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
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
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] = {
#Loc: <Workspace>/Engine/Source/Runtime/NonRealtimeAudioRenderer/Private/AudioMixerPlatformNonRealtime.cpp:170
Scope (from outer to inner):
file
namespace Audio
function bool FMixerPlatformNonRealtime::GetOutputDeviceInfo
Source code excerpt:
OutInfo.OutputChannelArray.Add(EAudioMixerChannel::BackLeft);
OutInfo.OutputChannelArray.Add(EAudioMixerChannel::BackRight);
OutInfo.OutputChannelArray.Add(EAudioMixerChannel::SideLeft);
OutInfo.OutputChannelArray.Add(EAudioMixerChannel::SideRight);
return true;
}
bool FMixerPlatformNonRealtime::GetDefaultOutputDeviceIndex(uint32& OutDefaultDeviceIndex) const
#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
};
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
};
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
};
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
};
#if PLATFORM_MICROSOFT
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
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
0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, // BackRight
};
static float const * const OutputChannelMaps[ChannelMapMaxNumChannels] =
#Loc: <Workspace>/Engine/Source/Runtime/SoundFieldRendering/Private/SoundFieldRendering.cpp:690
Scope: file
Source code excerpt:
,{EAudioMixerChannel::BackLeft, 210, 0}
,{EAudioMixerChannel::BackRight, 150, 0}
,{EAudioMixerChannel::SideLeft, 250, 0}
,{EAudioMixerChannel::SideRight, 110, 0}
,{EAudioMixerChannel::BackCenter, 180,0}
};
FSoundFieldEncoder::FSoundFieldEncoder()
{
#Loc: <Workspace>/Engine/Source/Runtime/Windows/AudioMixerXAudio2/Private/AudioMixerPlatformXAudio2.cpp:858
Scope (from outer to inner):
file
namespace Audio
function static bool GetMMDeviceInfo
Source code excerpt:
EAudioMixerChannel::FrontCenter,
EAudioMixerChannel::LowFrequency,
EAudioMixerChannel::SideLeft,
EAudioMixerChannel::SideRight,
EAudioMixerChannel::BackLeft,
EAudioMixerChannel::BackRight,
};
EAudioMixerChannel::Type* ChannelOrdering = DefaultChannelOrdering;
#Loc: <Workspace>/Engine/Source/Runtime/Windows/AudioMixerXAudio2/Private/AudioMixerPlatformXAudio2.cpp:1038
Scope (from outer to inner):
file
namespace Audio
function bool FMixerPlatformXAudio2::GetOutputDeviceInfo
Source code excerpt:
OutInfo.OutputChannelArray.Add(EAudioMixerChannel::BackLeft);
OutInfo.OutputChannelArray.Add(EAudioMixerChannel::BackRight);
OutInfo.OutputChannelArray.Add(EAudioMixerChannel::SideLeft);
OutInfo.OutputChannelArray.Add(EAudioMixerChannel::SideRight);
return true;
#endif
}
bool FMixerPlatformXAudio2::GetDefaultOutputDeviceIndex(uint32& OutDefaultDeviceIndex) const
#Loc: <Workspace>/Engine/Source/Runtime/Windows/AudioMixerXAudio2/Private/WindowsMMDeviceInfoCache.cpp:134
Scope (from outer to inner):
file
namespace Audio
function bool FWindowsMMDeviceCache::EnumerateChannelMask
Source code excerpt:
EAudioMixerChannel::FrontCenter,
EAudioMixerChannel::LowFrequency,
EAudioMixerChannel::SideLeft,
EAudioMixerChannel::SideRight,
EAudioMixerChannel::BackLeft,
EAudioMixerChannel::BackRight,
};
const EAudioMixerChannel::Type* ChannelOrdering = DefaultChannelOrdering;