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:

  1. Channel mapping and routing in the audio mixer.
  2. Spatial audio processing and 3D sound positioning.
  3. Surround sound configuration and management.
  4. 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:

  1. The FrontCenter channel is often treated differently in mono vs. multi-channel setups.
  2. Some audio processing functions may skip or specially handle the FrontCenter channel.
  3. When encoding or decoding surround sound, the FrontCenter channel typically corresponds to the 0-degree azimuth position.

Best practices when using this variable include:

  1. Always consider the target audio setup when working with channel configurations.
  2. Be mindful of how mono sources are mapped to multi-channel outputs, especially regarding the center channel.
  3. When implementing custom audio processing, ensure proper handling of all channels, including FrontCenter.
  4. 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]

Location: <Workspace>/Engine/Config/BaseEngine.ini:1587, section: [AudioDefaultChannelOrder]

#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;