UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
SoundModulationDestination.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2#pragma once
3
5#include "Containers/Set.h"
8#include "IAudioModulation.h"
9#include "UObject/NameTypes.h"
10#include "UObject/Object.h"
11#include "UObject/ObjectPtr.h"
12
13#include "SoundModulationDestination.generated.h"
14
15
16// Forward Declarations
18
19namespace Audio
20{
21 struct FModulationParameter;
22}
23
24
25UENUM(BlueprintType)
27{
28 /* Disables modulation routing */
29 Disable,
30
31 /* Inherits modulation routing (AudioComponent inherits from Sound, Sound inherits from SoundClass) */
32 Inherit,
33
34 /* Ignores inherited settings and uses modulation settings on this object */
36
37 /* Performs set union on local modulation sources with those inherited (AudioComponent inherits from Sound, Sound inherits from SoundClass) */
38 Union
39};
40
41UENUM(BlueprintType)
43{
44 /* Volume modulation */
45 Volume,
46
47 /* Pitch modulation */
48 Pitch,
49
50 /* Cutoff Frequency of a lowpass filter */
51 Lowpass,
52
53 /* Cutoff Frequency of a highpass filter */
55
57};
58
60USTRUCT(BlueprintType)
62{
64
65
66 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Modulation)
67 float Value = 1.0f;
68
69#if WITH_EDITORONLY_DATA
71 UPROPERTY(EditAnywhere, Category = Modulation, meta = (DisplayName = "Modulate"))
73
74 UE_DEPRECATED(5.3, "Use the Modulators set property instead.")
75 UPROPERTY(meta = (DeprecatedProperty))
77#endif // WITH_EDITORONLY_DATA
78
80 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Modulation)
82
83#if WITH_EDITORONLY_DATA
86#endif // WITH_EDITORONLY_DATA
87
88 // We need to explicitly disable warnings on these constructors/operators for clang to be happy with deprecated variables
97
98};
99
101USTRUCT(BlueprintType)
103{
105
107
109 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Modulation", meta = (DisplayName = "Volume", AudioParam = "Volume", AudioParamClass = "SoundModulationParameterVolume"))
110 FSoundModulationDestinationSettings VolumeModulationDestination;
111
113 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Modulation", meta = (DisplayName = "Pitch", AudioParam = "Pitch", AudioParamClass = "SoundModulationParameterBipolar"))
114 FSoundModulationDestinationSettings PitchModulationDestination;
115
117 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Modulation", meta = (DisplayName = "Highpass", AudioParam = "HPFCutoffFrequency", AudioParamClass = "SoundModulationParameterHPFFrequency"))
118 FSoundModulationDestinationSettings HighpassModulationDestination;
119
121 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Modulation", meta = (DisplayName = "Lowpass", AudioParam = "LPFCutoffFrequency", AudioParamClass = "SoundModulationParameterLPFFrequency"))
122 FSoundModulationDestinationSettings LowpassModulationDestination;
123
124 FSoundModulationDestinationSettings GetSettingsForDestination(EModulationDestination Destination) const;
125
126#if WITH_EDITORONLY_DATA
128#endif // WITH_EDITORONLY_DATA
129};
130
132USTRUCT(BlueprintType)
134{
136
138
140 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Modulation")
142
144 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Modulation")
146
148 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Modulation")
150
152 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Modulation")
154
155 EModulationRouting GetRoutingForDestination(EModulationDestination Destination) const;
156};
157
158namespace Audio
159{
161 {
162 public:
164
167
170
176 ENGINE_API void Init(FDeviceId InDeviceId, bool bInIsBuffered = false, bool bInValueNormalized = false);
177
185
187 ENGINE_API bool IsActive() const;
188
189 /* Updates internal value (or buffer if set to bIsBuffered) to current modulated result using the provided value as the base carrier value to modulate.
190 * Returns true if value was updated.
191 */
192 ENGINE_API bool ProcessControl(float InValueUnitBase, int32 InNumSamples = 0);
193
194
195 UE_DEPRECATED(5.1, "Deprecated in favor of supporting multiple modulators per destination. Use 'UpdateModulators' instead.")
196 ENGINE_API void UpdateModulator(const USoundModulatorBase* InModulator);
197
198 ENGINE_API void UpdateModulators(const TSet<TObjectPtr<USoundModulatorBase>>& InModulators);
199 ENGINE_API void UpdateModulators(const TSet<USoundModulatorBase*>& InModulators);
200 ENGINE_API void UpdateModulators(const TSet<const USoundModulatorBase*>& InModulators);
201
202 ENGINE_API void ClearModulators();
203
204 private:
205 ENGINE_API void UpdateModulatorsInternal(TArray<TUniquePtr<Audio::IModulatorSettings>>&& ProxySettings);
206
207 struct FModulationDestinationData
208 {
209 FDeviceId DeviceId = FDeviceId(INDEX_NONE);
210
211 float ValueTarget = 1.0f;
212
213 bool bIsBuffered = false;
214 bool bValueNormalized = false;
215 bool bHasProcessed = false;
216
217 FAlignedFloatBuffer OutputBuffer;
218
220
221 FModulationParameter Parameter;
222
223 mutable FCriticalSection HandleCritSection;
224
225 FModulationDestinationData& operator=(const FModulationDestinationData& InDestInfo);
226 FModulationDestinationData& operator=(FModulationDestinationData&& InDestInfo);
227 const FDeviceId& GetDeviceId() const;
228 const FModulationParameter& GetParameter() const;
229 void SetHandles(TSet<FModulatorHandle>&& Handles);
230 void ResetHandles();
231 };
232
234
235 public:
237 inline const FAlignedFloatBuffer& GetBuffer() const
238 {
239 return DestinationData->OutputBuffer;
240 }
241
244 inline bool GetHasProcessed() const
245 {
246 return DestinationData->bHasProcessed;
247 }
248
252 inline float GetValue() const
253 {
254 return DestinationData->ValueTarget;
255 }
256 };
257} // namespace Audio
@ INDEX_NONE
Definition CoreMiscDefines.h:150
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
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
UE::FPlatformRecursiveMutex FCriticalSection
Definition CriticalSection.h:53
#define PRAGMA_ENABLE_DEPRECATION_WARNINGS
Definition GenericPlatformCompilerPreSetup.h:12
#define PRAGMA_DISABLE_DEPRECATION_WARNINGS
Definition GenericPlatformCompilerPreSetup.h:8
void Init()
Definition LockFreeList.h:4
const bool
Definition NetworkReplayStreaming.h:178
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define UENUM(...)
Definition ObjectMacros.h:749
#define USTRUCT(...)
Definition ObjectMacros.h:746
#define GENERATED_USTRUCT_BODY(...)
Definition ObjectMacros.h:767
USkinnedMeshComponent float
Definition SkinnedMeshComponent.h:60
EModulationDestination
Definition SoundModulationDestination.h:43
EModulationRouting
Definition SoundModulationDestination.h:27
uint8_t uint8
Definition binka_ue_file_header.h:8
Definition IAudioModulation.h:117
Definition NameTypes.h:617
Definition UnrealType.h:3087
Definition Array.h:670
Definition SharedPointer.h:153
Definition UniquePtr.h:107
Definition IAudioModulation.h:223
NO_LOGGING.
Definition AudioMixerPlatformAndroid.cpp:53
uint32 FDeviceId
Definition AudioDefines.h:66
@ false
Definition radaudio_common.h:23
Definition SoundModulationDestination.h:161
bool GetHasProcessed() const
Definition SoundModulationDestination.h:244
float GetValue() const
Definition SoundModulationDestination.h:252
const FAlignedFloatBuffer & GetBuffer() const
Definition SoundModulationDestination.h:237
Definition IAudioModulation.h:52
Definition SoundModulationDestination.h:134
Definition SoundModulationDestination.h:103
Definition SoundModulationDestination.h:62
FSoundModulationDestinationSettings(const FSoundModulationDestinationSettings &)=default
FSoundModulationDestinationSettings(FSoundModulationDestinationSettings &&)=default
PRAGMA_DISABLE_DEPRECATION_WARNINGS FSoundModulationDestinationSettings()=default
FSoundModulationDestinationSettings & operator=(FSoundModulationDestinationSettings &&)=default
FSoundModulationDestinationSettings & operator=(const FSoundModulationDestinationSettings &)=default
Definition ObjectPtr.h:488