UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
IAudioModulation.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2#pragma once
3
4#include "AudioDefines.h"
5#include "CoreTypes.h"
10#include "Math/MathFwd.h"
11#include "Math/Rotator.h"
13#include "Templates/Function.h"
15#include "Templates/UniquePtr.h"
17#include "UObject/NameTypes.h"
18#include "UObject/Object.h"
21
22#include "IAudioModulation.generated.h"
23
24// Forward Declarations
27class UObject;
32
33#if !UE_BUILD_SHIPPING
34class FCanvas;
36class FViewport;
37class UFont;
38#endif // !UE_BUILD_SHIPPING
39
40namespace Audio
41{
45
46 using FModulationUnitConversionFunction = TFunction<void(float& /* OutValueNormalizedToUnit */)>;
47 using FModulationNormalizedConversionFunction = TFunction<void(float& /* OutValueUnitToNormalized */)>;
48 using FModulationMixFunction = TFunction<void(float& /* OutNormalizedA */, float /* InNormalizedB */)>;
49
50
52 {
56
59
61
62 // Default value of parameter in unit space
63 float DefaultValue = 1.0f;
64
65 // Default minimum value of parameter in unit space
66 float MinValue = 0.0f;
67
68 // Default minimum value of parameter in unit space
69 float MaxValue = 1.0f;
70
71 // Whether or not unit conversion is required
72 bool bRequiresConversion = false;
73
75
76#if WITH_EDITORONLY_DATA
78
79 FName ClassName;
80#endif // WITH_EDITORONLY_DATA
81
82 // Function used to mix normalized values together.
84
85 // Function used to convert value buffer from normalized, unitless space [0.0f, 1.0f] to unit space.
87
88 // Function used to convert value buffer from unit space to normalized, unitless [0.0f, 1.0f] space.
90
94
96 {
97 return InModulationParameter.TypeHash;
98 }
99 };
100
102 AUDIOEXTENSIONS_API void RegisterModulationParameter(FName InName, FModulationParameter&& InParameter);
105 AUDIOEXTENSIONS_API const FModulationParameter* GetModulationParameterPtr(FName InName);
106 AUDIOEXTENSIONS_API const FModulationParameter& GetDefaultModulationParameter();
107
108 UE_DEPRECATED(5.6, "Please use the version of GetModulationParameter which returns a pointer instead of a reference, and check that it is valid in your code.")
109 AUDIOEXTENSIONS_API const FModulationParameter& GetModulationParameter(FName InName);
110
117 {
118 public:
119 virtual ~IModulatorSettings() = default;
121 virtual FModulatorId GetModulatorId() const = 0;
126 };
127
132 {
133 FModulatorHandle() = default;
138
140
143
148 AUDIOEXTENSIONS_API bool GetValue(float& OutValue) const;
150 AUDIOEXTENSIONS_API bool IsValid() const;
151
153 {
154 return HashCombineFast(InModulatorHandle.HandleId, InModulatorHandle.ModulatorId);
155 }
156
157 inline bool operator==(const FModulatorHandle& Other) const
158 {
159 return HandleId == Other.HandleId && ModulatorId == Other.ModulatorId;
160 }
161
162 inline bool operator!=(const FModulatorHandle& Other) const
163 {
164 return !(*this == Other);
165 }
166
167 private:
168 FModulationParameter Parameter;
170 FModulatorTypeId ModulatorTypeId = INDEX_NONE;
171 FModulatorId ModulatorId = INDEX_NONE;
173 };
174} // namespace Audio
175
176class IAudioModulationManager : public TSharedFromThis<IAudioModulationManager>
177{
178public:
180 virtual ~IAudioModulationManager() = default;
181
184
185 virtual void OnAuditionEnd() = 0;
186
187#if !UE_BUILD_SHIPPING
189 virtual bool OnPostHelp(FCommonViewportClient* ViewportClient, const TCHAR* Stream) = 0;
190
192 virtual int32 OnRenderStat(FViewport* Viewport, FCanvas* Canvas, int32 X, int32 Y, const UFont& Font, const FVector* ViewLocation, const FRotator* ViewRotation) = 0;
193
195 virtual bool OnToggleStat(FCommonViewportClient* ViewportClient, const TCHAR* Stream) = 0;
196#endif
197
199 virtual void ProcessModulators(const double InElapsed) = 0;
200
203
204protected:
206
207 // Get the modulator value from the AudioRender Thread
209
210 // Get the modulator value from any thread.
212
214
216};
217
221UCLASS(config = Engine, abstract, editinlinenew, BlueprintType, MinimalAPI)
223{
225
226public:
227 AUDIOEXTENSIONS_API virtual const Audio::FModulationParameter& GetOutputParameter() const;
228
229 AUDIOEXTENSIONS_API virtual TSharedPtr<Audio::IProxyData> CreateProxyData(const Audio::FProxyDataInitParams& InitParams) override;
230
231 AUDIOEXTENSIONS_API virtual TUniquePtr<Audio::IModulatorSettings> CreateProxySettings() const;
232};
233
273
277class FSoundModulationParameterAssetProxy : public Audio::TProxyData<FSoundModulationParameterAssetProxy>, public TSharedFromThis<FSoundModulationParameterAssetProxy, ESPMode::ThreadSafe>
278{
279public:
281
283 {
284 return Parameter;
285 }
286
287protected:
289};
291
296{
297public:
298 virtual ~ISoundModulatable() = default;
299
303 virtual uint32 GetObjectId() const = 0;
304
308 virtual int32 GetPlayCount() const = 0;
309
313 virtual bool IsPreviewSound() const = 0;
314
318 virtual void Stop() = 0;
319};
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
#define check(expr)
Definition AssertionMacros.h:314
@ INDEX_NONE
Definition CoreMiscDefines.h:150
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
FPlatformTypes::TCHAR TCHAR
Either ANSICHAR or WIDECHAR, depending on whether the platform supports wide characters or the requir...
Definition Platform.h:1135
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
#define X(Name, Desc)
Definition FormatStringSan.h:47
#define GENERATED_BODY(...)
Definition ObjectMacros.h:765
#define UCLASS(...)
Definition ObjectMacros.h:776
constexpr uint32 HashCombineFast(uint32 A, uint32 B)
Definition TypeHash.h:74
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition IAudioModulation.h:117
virtual TUniquePtr< IModulatorSettings > Clone() const =0
virtual Audio::FModulatorTypeId Register(Audio::FModulatorHandleId HandleId, IAudioModulationManager &InModulation) const =0
virtual ~IModulatorSettings()=default
virtual const Audio::FModulationParameter & GetOutputParameter() const =0
virtual FModulatorId GetModulatorId() const =0
virtual TUniquePtr< IProxyData > Clone() const
Definition IAudioProxyInitializer.h:97
Definition IAudioProxyInitializer.h:106
Definition Engine.Build.cs:7
Definition CanvasTypes.h:211
Definition ViewportClient.h:417
Definition NameTypes.h:617
Definition IAudioModulation.h:278
IMPL_AUDIOPROXY_CLASS(FSoundModulationParameterAssetProxy)
Audio::FModulationParameter Parameter
Definition IAudioModulation.h:288
virtual const Audio::FModulationParameter & GetParameter() const
Definition IAudioModulation.h:282
Definition IAudioModulation.h:238
Audio::FModulationParameter Parameter
Definition IAudioModulation.h:269
virtual Audio::FModulatorId GetModulatorId() const
Definition IAudioModulation.h:262
IMPL_AUDIOPROXY_CLASS(FSoundModulatorAssetProxy)
virtual Audio::FModulatorHandle CreateModulatorHandle(IAudioModulationManager &InModulation) const
Definition IAudioModulation.h:254
TUniquePtr< Audio::IModulatorSettings > ModulatorSettings
Definition IAudioModulation.h:270
FSoundModulatorAssetProxy(const USoundModulatorBase &InModulatorBase)
Definition IAudioModulation.h:248
FSoundModulatorAssetProxy(const FSoundModulatorAssetProxy &InAssetProxy)
Definition IAudioModulation.h:242
Definition Text.h:385
Definition UnrealClient.h:412
Definition IAudioModulation.h:177
virtual bool OnToggleStat(FCommonViewportClient *ViewportClient, const TCHAR *Stream)=0
virtual ~IAudioModulationManager()=default
virtual bool OnPostHelp(FCommonViewportClient *ViewportClient, const TCHAR *Stream)=0
virtual void UpdateModulator(const USoundModulatorBase &InModulator)=0
virtual void ProcessModulators(const double InElapsed)=0
UE_BUILD_SHIPPING.
virtual void Initialize(const FAudioPluginInitializationParams &InitializationParams)=0
virtual int32 OnRenderStat(FViewport *Viewport, FCanvas *Canvas, int32 X, int32 Y, const UFont &Font, const FVector *ViewLocation, const FRotator *ViewRotation)=0
virtual bool GetModulatorValue(const Audio::FModulatorHandle &ModulatorHandle, float &OutValue) const =0
virtual void UnregisterModulator(const Audio::FModulatorHandle &InHandle)=0
virtual void OnAuditionEnd()=0
virtual void RegisterModulator(uint32 InHandleId, Audio::FModulatorId InModulatorId)=0
virtual bool GetModulatorValueThreadSafe(const Audio::FModulatorHandle &ModulatorHandle, float &OutValue) const =0
Definition IAudioProxyInitializer.h:128
Definition IAudioModulation.h:296
virtual int32 GetPlayCount() const =0
virtual ~ISoundModulatable()=default
virtual bool IsPreviewSound() const =0
virtual void Stop()=0
virtual uint32 GetObjectId() const =0
Definition SharedPointer.h:1640
Definition SharedPointer.h:692
Definition UniquePtr.h:107
bool IsValid() const
Definition UniquePtr.h:280
UE_FORCEINLINE_HINT T * Get() const
Definition UniquePtr.h:324
Definition SharedPointer.h:1295
Definition Font.h:111
Definition Object.h:95
Definition IAudioModulation.h:223
NO_LOGGING.
Definition AudioMixerPlatformAndroid.cpp:53
uint32 FModulatorHandleId
Definition IAudioModulation.h:44
uint32 FModulatorTypeId
Definition IAudioModulation.h:43
void RegisterModulationParameter(FName InName, FModulationParameter &&InParameter)
Definition IAudioModulation.cpp:190
bool UnregisterModulationParameter(FName InName)
Definition IAudioModulation.cpp:196
bool IsModulationParameterRegistered(FName InName)
Definition IAudioModulation.cpp:208
const FModulationParameter * GetModulationParameterPtr(FName InName)
Definition IAudioModulation.cpp:214
uint32 FModulatorId
Definition IAudioModulation.h:42
void UnregisterAllModulationParameters()
Definition IAudioModulation.cpp:202
const FModulationParameter & GetModulationParameter(FName InName)
Definition IAudioModulation.cpp:225
const FModulationParameter & GetDefaultModulationParameter()
Definition IAudioModulation.cpp:220
Definition IAudioModulation.h:52
static AUDIOEXTENSIONS_API const FModulationNormalizedConversionFunction & GetDefaultNormalizedConversionFunction()
Definition IAudioModulation.cpp:181
AUDIOEXTENSIONS_API FModulationParameter & operator=(FModulationParameter &&InParam)
Definition IAudioModulation.cpp:142
FModulationNormalizedConversionFunction NormalizedFunction
Definition IAudioModulation.h:89
static AUDIOEXTENSIONS_API const FModulationUnitConversionFunction & GetDefaultUnitConversionFunction()
Definition IAudioModulation.cpp:172
FName ParameterName
Definition IAudioModulation.h:60
FModulationUnitConversionFunction UnitFunction
Definition IAudioModulation.h:86
friend uint32 GetTypeHash(const FModulationParameter &InModulationParameter)
Definition IAudioModulation.h:95
float DefaultValue
Definition IAudioModulation.h:63
static AUDIOEXTENSIONS_API const FModulationMixFunction & GetDefaultMixFunction()
Definition IAudioModulation.cpp:162
bool bRequiresConversion
Definition IAudioModulation.h:72
FModulationMixFunction MixFunction
Definition IAudioModulation.h:83
AUDIOEXTENSIONS_API FModulationParameter()
Definition IAudioModulation.cpp:83
float MaxValue
Definition IAudioModulation.h:69
float MinValue
Definition IAudioModulation.h:66
uint32 TypeHash
Definition IAudioModulation.h:74
Definition IAudioModulation.h:132
AUDIOEXTENSIONS_API bool IsValid() const
Definition IAudioModulation.cpp:398
bool operator==(const FModulatorHandle &Other) const
Definition IAudioModulation.h:157
AUDIOEXTENSIONS_API ~FModulatorHandle()
Definition IAudioModulation.cpp:287
AUDIOEXTENSIONS_API bool GetValue(float &OutValue) const
Definition IAudioModulation.cpp:371
AUDIOEXTENSIONS_API FModulatorHandleId GetHandleId() const
Definition IAudioModulation.cpp:366
AUDIOEXTENSIONS_API FModulatorTypeId GetTypeId() const
Definition IAudioModulation.cpp:361
AUDIOEXTENSIONS_API bool GetValueThreadSafe(float &OutValue) const
Definition IAudioModulation.cpp:385
AUDIOEXTENSIONS_API FModulatorHandle & operator=(const FModulatorHandle &InOther)
Definition IAudioModulation.cpp:295
AUDIOEXTENSIONS_API FModulatorId GetModulatorId() const
Definition IAudioModulation.cpp:351
friend uint32 GetTypeHash(const FModulatorHandle &InModulatorHandle)
Definition IAudioModulation.h:152
AUDIOEXTENSIONS_API const FModulationParameter & GetParameter() const
Definition IAudioModulation.cpp:356
bool operator!=(const FModulatorHandle &Other) const
Definition IAudioModulation.h:162
Definition IAudioProxyInitializer.h:119
Definition IAudioExtensionPlugin.h:127
Definition IAudioExtensionPlugin.h:156
Definition IAudioExtensionPlugin.h:177