UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
AudioMixerSourceVoice.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "AudioMixerBuffer.h"
7
8namespace Audio
9{
11 struct FMixerSourceVoiceInitParams;
12 class FMixerDevice;
13 class FMixerSubmix;
14 class FMixerSource;
15 class FMixerSourceManager;
17
18
20 {
21 public:
24
25 // Resets the source voice state
27
28 // Initializes the mixer source voice
30
31 // Releases the source voice back to the source buffer pool
32 void Release();
33
34 // Sets the source voice pitch value.
35 void SetPitch(const float InPitch);
36
37 // Sets the source voice volume value.
38 void SetVolume(const float InVolume);
39
40 // Sets the source voice distance attenuation.
42
43 // Sets the source voice's LPF filter frequency.
44 void SetLPFFrequency(const float InFrequency);
45
46 // Sets the source voice's HPF filter frequency.
47 void SetHPFFrequency(const float InFrequency);
48
49 // Sets the source voice modulation base pitch value.
50 void SetModPitch(const float InPitch);
51
52 // Sets the source voice's volume modulation base frequency.
53 void SetModVolume(const float InVolume);
54
55 // Sets the source voice's LPF filter modulation base frequency.
56 void SetModLPFFrequency(const float InFrequency);
57
58 // Sets the source voice's HPF filter modulation base frequency.
59 void SetModHPFFrequency(const float InFrequency);
60
62
63 // Set the source voice's SourceBufferListener and associated boolean.
65
66 // Sets the source voice's channel map (2d or 3d).
67 void SetChannelMap(const uint32 NumInputChannels, const Audio::FAlignedFloatBuffer& InChannelMap, const bool bInIs3D, const bool bInIsCenterChannelOnly);
68
69 // Sets params used by HRTF spatializer
71
72 // Starts the source voice generating audio output into it's submix.
73 void Play();
74
75 // Pauses the source voice (i.e. stops generating output but keeps its state as "active and playing". Can be restarted.)
76 void Pause();
77
78 // Immediately stops the source voice (no longer playing or active, can't be restarted.)
79 void Stop();
80
81 // Does a faded stop (to avoid discontinuity)
82 void StopFade(int32 NumFrames);
83
84 // Returns the source's Id
85 int32 GetSourceId() const;
86
87 // Returns the source's distance attenuation
88 float GetDistanceAttenuation() const;
89
90 // Returns the source's distance from the closest listener
91 float GetDistance() const;
92
93 // Queries if the voice is playing
94 bool IsPlaying() const;
95
96 // Queries if the voice is paused
97 bool IsPaused() const;
98
99 // Queries if the source voice is active.
100 bool IsActive() const;
101
102 // Queries if the source has finished its fade out.
103 bool IsStopFadedOut() const { return bStopFadedOut; }
104
105 // Whether or not the device changed and needs another speaker map sent
106 bool NeedsSpeakerMap() const;
107
108 // Whether or not the voice is currently using HRTF spatialization.
109 //
110 // @param bDefaultValue - This value will be returned if voice does not have a valid source id.
111 bool IsUsingHRTFSpatializer(bool bDefaultValue) const;
112
113 // Retrieves the total number of samples played.
115
116 // Retrieves the envelope value of the source.
117 float GetEnvelopeValue() const;
118
119 // Retrieves final mixed Modulation value of the source.
120 float GetVolumeModulationValue() const;
121
122#if ENABLE_AUDIO_DEBUG
123 double GetCPUCoreUtilization() const;
124#endif // ENABLE_AUDIO_DEBUG
125
126 // Retrieves the current "render cost" of the mixer source voice. Used for debug display and for limiting voice count.
127 // 1.0 is equivalent to a single decoding sound source.
128 // Useful as a metric more human-centric than CPU utilization.
129 float GetRelativeRenderCost() const;
130
131 // Mixes the dry and wet buffer audio into the given buffers.
133
134 // For soundfield conversions, get the encoded audio.
136
137 // This will return the listener rotation used for this source voice.
139
140 // Sets the submix send levels
142
143 // Clears the submix send to the given submix
145
146 // Sets whether or not we are enabling sending audio to submixes (we could be sending audio to source buses though).
148
149 //Updates internal settings on which output types are enabled
151
152 // Set the source bus send levels
153 void SetAudioBusSendInfo(EBusSendType InBusSendType, uint32 AudioBusId, float BusSendLevel, const FString& InBusName);
154
155 private:
156
158
159 FMixerSourceManager* SourceManager;
161 FMixerDevice* MixerDevice;
162 TArray<float> DeviceChannelMap;
163 FThreadSafeBool bStopFadedOut;
164 float Pitch;
165 float Volume;
166 float DistanceAttenuation;
167 float Distance;
168 float LPFFrequency;
169 float HPFFrequency;
170 float PitchModBase;
171 float VolumeModBase;
172 float LPFFrequencyModBase;
173 float HPFFrequencyModBase;
174 int32 SourceId;
175 uint16 bIsPlaying : 1;
176 uint16 bIsPaused : 1;
177 uint16 bIsActive : 1;
178 uint16 bIsBus : 1;
179 uint16 bEnableBusSends : 1;
180 uint16 bEnableBaseSubmix : 1;
181 uint16 bEnableSubmixSends : 1;
182
183 bool IsRenderingToSubmixes() const;
184 };
185
186}
int Volume
Definition AndroidPlatformMisc.cpp:380
EBusSendType
Definition Audio.h:169
FPlatformTypes::int64 int64
A 64-bit signed integer.
Definition Platform.h:1127
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
void Init()
Definition LockFreeList.h:4
uint16_t uint16
Definition binka_ue_file_header.h:7
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition AudioMixerDevice.h:117
Definition AudioMixerSourceManager.h:192
Definition AudioMixerSourceVoice.h:20
float GetDistanceAttenuation() const
Definition AudioMixerSourceVoice.cpp:261
void SetModLPFFrequency(const float InFrequency)
Definition AudioMixerSourceVoice.cpp:186
const FQuat GetListenerRotationForVoice() const
Definition AudioMixerSourceVoice.cpp:378
void SetPitch(const float InPitch)
Definition AudioMixerSourceVoice.cpp:100
void SetOutputToBusOnly(bool bInOutputToBusOnly)
Definition AudioMixerSourceVoice.cpp:428
void SetModulationRouting(FSoundModulationDefaultRoutingSettings &RoutingSettings)
Definition AudioMixerSourceVoice.cpp:197
int64 GetNumFramesPlayed() const
Definition AudioMixerSourceVoice.cpp:320
void SetEnablement(bool bInEnableBusSendRouting, bool bInEnableMainSubmixOutput, bool bInEnableSubmixSendRouting)
Definition AudioMixerSourceVoice.cpp:439
~FMixerSourceVoice()
Definition AudioMixerSourceVoice.cpp:20
void SetDistanceAttenuation(const float InDistanceAttenuation)
Definition AudioMixerSourceVoice.cpp:120
float GetDistance() const
Definition AudioMixerSourceVoice.cpp:266
void Release()
Definition AudioMixerSourceVoice.cpp:93
void Play()
Definition AudioMixerSourceVoice.cpp:225
void SetModVolume(const float InVolume)
Definition AudioMixerSourceVoice.cpp:153
void SetModPitch(const float InPitch)
Definition AudioMixerSourceVoice.cpp:164
float GetVolumeModulationValue() const
Definition AudioMixerSourceVoice.cpp:334
bool IsStopFadedOut() const
Definition AudioMixerSourceVoice.h:103
float GetRelativeRenderCost() const
Definition AudioMixerSourceVoice.cpp:350
void ClearSubmixSendInfo(FMixerSubmixWeakPtr Submix)
Definition AudioMixerSourceVoice.cpp:412
FMixerSourceVoice()
Definition AudioMixerSourceVoice.cpp:15
bool IsPaused() const
Definition AudioMixerSourceVoice.cpp:287
void SetHPFFrequency(const float InFrequency)
Definition AudioMixerSourceVoice.cpp:142
bool NeedsSpeakerMap() const
Definition AudioMixerSourceVoice.cpp:301
void StopFade(int32 NumFrames)
Definition AudioMixerSourceVoice.cpp:248
void SetModHPFFrequency(const float InFrequency)
Definition AudioMixerSourceVoice.cpp:175
const ISoundfieldAudioPacket * GetEncodedOutput(const FSoundfieldEncodingKey &InKey) const
Definition AudioMixerSourceVoice.cpp:367
void SetChannelMap(const uint32 NumInputChannels, const Audio::FAlignedFloatBuffer &InChannelMap, const bool bInIs3D, const bool bInIsCenterChannelOnly)
Definition AudioMixerSourceVoice.cpp:211
void Stop()
Definition AudioMixerSourceVoice.cpp:236
void SetSpatializationParams(const FSpatializationParams &InParams)
Definition AudioMixerSourceVoice.cpp:218
void MixOutputBuffers(int32 InNumChannels, const float SendLevel, EMixerSourceSubmixSendStage InSubmixSendStage, FAlignedFloatBuffer &OutWetBuffer) const
Definition AudioMixerSourceVoice.cpp:357
int32 GetSourceId() const
Definition AudioMixerSourceVoice.cpp:256
float GetEnvelopeValue() const
Definition AudioMixerSourceVoice.cpp:327
bool IsUsingHRTFSpatializer(bool bDefaultValue) const
Definition AudioMixerSourceVoice.cpp:308
bool IsActive() const
Definition AudioMixerSourceVoice.cpp:294
void SetSubmixSendInfo(FMixerSubmixWeakPtr Submix, const float SendLevel, const EMixerSourceSubmixSendStage SendStage=EMixerSourceSubmixSendStage::PostDistanceAttenuation)
Definition AudioMixerSourceVoice.cpp:383
void SetVolume(const float InVolume)
Definition AudioMixerSourceVoice.cpp:110
bool IsPlaying() const
Definition AudioMixerSourceVoice.cpp:280
void SetAudioBusSendInfo(EBusSendType InBusSendType, uint32 AudioBusId, float BusSendLevel, const FString &InBusName)
Definition AudioMixerSourceVoice.cpp:447
void Pause()
Definition AudioMixerSourceVoice.cpp:271
void SetLPFFrequency(const float InFrequency)
Definition AudioMixerSourceVoice.cpp:131
void SetSourceBufferListener(FSharedISourceBufferListenerPtr &InSourceBufferListener, bool InShouldSourceBufferListenerZeroBuffer)
Definition AudioMixerSourceVoice.cpp:204
Definition ThreadSafeBool.h:17
Definition ISoundfieldFormat.h:137
Definition UnrealString.h.inl:34
NO_LOGGING.
Definition AudioMixerPlatformAndroid.cpp:53
EMixerSourceSubmixSendStage
Definition AudioMixerSubmix.h:65
@ PostDistanceAttenuation
Definition AudioMixerSubmix.h:67
Definition AudioMixerSourceManager.h:133
Definition SoundModulationDestination.h:134
Definition ISoundfieldFormat.h:429
Definition IAudioExtensionPlugin.h:69