UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
AudioParameter.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2#pragma once
3
4#include "Containers/Array.h"
6#include "HAL/Platform.h"
7#include "HAL/PlatformCrt.h"
10#include "UObject/Interface.h"
11#include "UObject/NameTypes.h"
12#include "UObject/Object.h"
14#include "UObject/ObjectPtr.h"
15
16#include "AudioParameter.generated.h"
17
18class UObject;
19
20
21#define AUDIO_PARAMETER_NAMESPACE_PATH_DELIMITER "."
22
23// Convenience macro for statically declaring an interface member's FName. AUDIO_PARAMETER_INTERFACE_NAMESPACE must be defined.
24#define AUDIO_PARAMETER_INTERFACE_MEMBER_DEFINE(Name) (AUDIO_PARAMETER_INTERFACE_NAMESPACE AUDIO_PARAMETER_NAMESPACE_PATH_DELIMITER Name)
25
26namespace Audio
27{
29 {
31
32 // Combines names using the namespace delimiter
34
35 // Splits name into namespace & parameter name
37 };
38}
39
40UENUM()
42{
43 // 'Default' results in behavior that is resolved
44 // based on the system interpreting it. To support
45 // legacy implementation, SoundCues cache all typed values
46 // associated with a given parameter name.
47 // For MetaSounds, use a specific Type instead of this one.
48 None UMETA(DisplayName = "Default"),
49
50 // Boolean value
51 Boolean,
52
53 // Integer value
54 Integer,
55
56 // Float value
57 Float,
58
59 // String value (not supported by legacy SoundCue system)
60 String,
61
62 // Object value (types other than SoundWave not supported by legacy SoundCue system)
63 Object,
64
65 // Array of default initialized values (not supported by legacy SoundCue system)
66 // Hidden for now as no parameter types exist that support default construction
67 NoneArray UMETA(Hidden, DisplayName = "Default (Array)"),
68
69 // Array of boolean values (not supported by legacy SoundCue system)
70 BooleanArray UMETA(DisplayName = "Boolean (Array)"),
71
72 // Array of integer values (not supported by legacy SoundCue system)
73 IntegerArray UMETA(DisplayName = "Integer (Array)"),
74
75 // Array of float values (not supported by legacy SoundCue system)
76 FloatArray UMETA(DisplayName = "Float (Array)"),
77
78 // Array of string values (not supported by legacy SoundCue system)
79 StringArray UMETA(DisplayName = "String (Array)"),
80
81 // Array of object values (not supported by legacy SoundCue system)
82 ObjectArray UMETA(DisplayName = "Object (Array)"),
83
84 // Trigger value
85 Trigger,
86
88};
89
90
91USTRUCT(BlueprintType)
93{
95
96 FAudioParameter() = default;
97
99 : ParamName(InName)
100 {
101 }
102
104 : ParamName(InName)
106 , ParamType(EAudioParameterType::Float)
107 {
108 }
109
111 : ParamName(InName)
113 , ParamType(EAudioParameterType::Boolean)
114 {
115 }
116
118 : ParamName(InName)
120 , ParamType(EAudioParameterType::Integer)
121 {
122 }
123
125 : ParamName(InName)
127 , ParamType(EAudioParameterType::Object)
128 {
129 }
130
131 FAudioParameter(FName InName, const FString& InValue)
132 : ParamName(InName)
134 , ParamType(EAudioParameterType::String)
135 {
136 }
137
139 : ParamName(InName)
141 , ParamType(EAudioParameterType::FloatArray)
142 {
143 }
144
146 : ParamName(InName)
148 , ParamType(EAudioParameterType::FloatArray)
149 {
150 }
151
153 : ParamName(InName)
156 {
157 }
158
160 : ParamName(InName)
163 {
164 }
165
167 : ParamName(InName)
170 {
171 }
172
174 : ParamName(InName)
177 {
178 }
179
181 : ParamName(InName)
183 , ParamType(EAudioParameterType::ObjectArray)
184 {
185 }
186
187// We can't move TArray<UObject*> into a TArray<TObjectPtr<UObject>> since UE_OBJECT_PTR_GC_BARRIER was added
188#if 0
190 : ParamName(InName)
192 , ParamType(EAudioParameterType::ObjectArray)
193 {
194 }
195#endif
196
198 : ParamName(InName)
200 , ParamType(EAudioParameterType::StringArray)
201 {
202 }
203
205 : ParamName(InName)
207 , ParamType(EAudioParameterType::StringArray)
208 {
209 }
210
212 : ParamName(InName)
213 , ParamType(Type)
214 {
216 {
217 BoolParam = true;
218 }
219 }
220
221 // Static function to avoid int32 constructor collision
223 {
224 FAudioParameter NewParam(InName, InNum);
225 NewParam.ParamType = EAudioParameterType::NoneArray;
226 return NewParam;
227 }
228
229 // Sets values specified by type field of the given parameter on this parameter. If the provided parameter is set to type 'None', takes all values of the given parameter.
230 // bInTakeName = Take the name of the provided parameter.
231 // bInTakeType = Take the type of the provided parameter.
232 // bInMergeArrayTypes - Appends array(s) for specified type if true, else swaps the local value with that of the provided parameter if false.
233 AUDIOEXTENSIONS_API void Merge(const FAudioParameter& InParameter, bool bInTakeName = true, bool bInTakeType = true, bool bInMergeArrayTypes = false);
234
235 // Moves InParams to OutParams that are not already included. For backward compatibility (i.e. SoundCues),
236 // if a param is already in OutParams, attempts to merge param values together, but assigns the param the
237 // incoming param's type. Currently existing OutParam values left if new value of the same type is provided
238 // by InParam.
240
243
246
247 // Name of the parameter
248 UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (DisplayName="Name"), Category = AudioParameter)
249 FName ParamName;
250
251 // Float value of parameter
252 UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (DisplayName = "Value (Float)", DisplayAfter = "ParamType", EditConditionHides, EditCondition = "ParamType == EAudioParameterType::None || ParamType == EAudioParameterType::Float"), Category = AudioParameter)
253 float FloatParam = 0.f;
254
255 // Boolean value of parameter
256 UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (DisplayName = "Value (Bool)", DisplayAfter = "ParamType", EditConditionHides, EditCondition = "ParamType == EAudioParameterType::None || ParamType == EAudioParameterType::Boolean"), Category = AudioParameter)
257 bool BoolParam = false;
258
259 // Integer value of parameter. If set to 'Default Construct', value is number of array items to construct.
260 UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (DisplayName = "Value (Int)", DisplayAfter = "ParamType", EditConditionHides, EditCondition = "ParamType == EAudioParameterType::None || ParamType == EAudioParameterType::Integer || ParamType == EAudioParameterType::NoneArray"), Category = AudioParameter)
261 int32 IntParam = 0;
262
263 // Object value of parameter
264 UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (DisplayName = "Value (Object)", DisplayAfter = "ParamType", EditConditionHides, EditCondition = "ParamType == EAudioParameterType::None || ParamType == EAudioParameterType::Object"), Category = AudioParameter)
265 TObjectPtr<UObject> ObjectParam = nullptr;
266
267 // String value of parameter
268 UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (DisplayName = "Value (String)", DisplayAfter = "ParamType", EditConditionHides, EditCondition = "ParamType == EAudioParameterType::String"), Category = AudioParameter)
269 FString StringParam;
270
271 // Array Float value of parameter
272 UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (DisplayName = "Value (Float Array)", DisplayAfter = "ParamType", EditConditionHides, EditCondition = "ParamType == EAudioParameterType::FloatArray"), Category = AudioParameter)
273 TArray<float> ArrayFloatParam;
274
275 // Boolean value of parameter
276 UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (DisplayName = "Value (Bool Array)", DisplayAfter = "ParamType", EditConditionHides, EditCondition = "ParamType == EAudioParameterType::BooleanArray"), Category = AudioParameter)
278
279 // Integer value of parameter
280 UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (DisplayName = "Value (Int Array)", DisplayAfter = "ParamType", EditConditionHides, EditCondition = "ParamType == EAudioParameterType::IntegerArray"), Category = AudioParameter)
282
283 // Object value of parameter
284 UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (DisplayName = "Value (Object Array)", DisplayAfter = "ParamType", EditConditionHides, EditCondition = "ParamType == EAudioParameterType::ObjectArray"), Category = AudioParameter)
286
287 // String value of parameter
288 UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (DisplayName = "Value (String Array)", DisplayAfter = "ParamType", EditConditionHides, EditCondition = "ParamType == EAudioParameterType::StringArray"), Category = AudioParameter)
289 TArray<FString> ArrayStringParam;
290
291 UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (DisplayName = "Type"), Category = AudioParameter)
293
294 // Optional TypeName used to describe what constructed type this parameter should be initializing.
295 UPROPERTY()
296 FName TypeName;
297
298 // Object proxies to be generated when parameter is passed to the AudioThread to represent ObjectParam/ArrayObjectParam safely
299 TArray<TSharedPtr<Audio::IProxyData>> ObjectProxies;
300
301 // Common find algorithm for default/legacy parameter system
303 {
304 if (!InParamName.IsNone())
305 {
307 {
308 if (ExistingParam.ParamName == InParamName)
309 {
310 return &ExistingParam;
311 }
312 }
313 }
314
315 return nullptr;
316 }
317
318 // Common find & add algorithm for default/legacy parameter system.
320 {
321 FAudioParameter* Param = nullptr;
322 if (InParamName.IsNone())
323 {
324 return Param;
325 }
326
328 {
329 if (ExistingParam.ParamName == InParamName)
330 {
331 Param = &ExistingParam;
332 break;
333 }
334 }
335
336 if (!Param)
337 {
338 Param = &OutParams.AddDefaulted_GetRef();
339 Param->ParamName = InParamName;
340 }
341
342 return Param;
343 }
344};
EAudioParameterType
Definition AudioParameter.h:42
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 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
const bool const FCollisionResponseContainer const struct FCollisionQueryParams const struct FCollisionObjectQueryParams & ObjectParam
Definition PhysicsInterfaceUtils.h:19
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
uint8_t uint8
Definition binka_ue_file_header.h:8
Definition NameTypes.h:617
Definition Array.h:670
Definition SharedPointer.h:692
Definition Object.h:95
NO_LOGGING.
Definition AudioMixerPlatformAndroid.cpp:53
@ false
Definition radaudio_common.h:23
Definition AudioParameter.h:29
static AUDIOEXTENSIONS_API const FString NamespaceDelimiter
Definition AudioParameter.h:30
static AUDIOEXTENSIONS_API void SplitName(FName InFullName, FName &OutNamespace, FName &OutParameterName)
Definition AudioParameter.cpp:39
static AUDIOEXTENSIONS_API FName CombineNames(FName InLeft, FName InRight)
Definition AudioParameter.cpp:28
Definition AudioParameter.h:93
FAudioParameter & operator=(const FAudioParameter &InParameter)=default
EAudioParameterType ParamType
Definition AudioParameter.h:292
FAudioParameter(FName InName, bool InValue)
Definition AudioParameter.h:110
FAudioParameter(FName InName, const TArray< float > &InValue)
Definition AudioParameter.h:138
FAudioParameter(FName InName, float InValue)
Definition AudioParameter.h:103
FAudioParameter(FName InName, const TArray< FString > &InValue)
Definition AudioParameter.h:197
static FAudioParameter * FindOrAddParam(TArray< FAudioParameter > &OutParams, FName InParamName)
Definition AudioParameter.h:319
FAudioParameter(const FAudioParameter &InParameter)=default
FAudioParameter(FName InName, TArray< bool > &&InValue)
Definition AudioParameter.h:159
FAudioParameter(FName InName, TArray< FString > &&InValue)
Definition AudioParameter.h:204
FAudioParameter(FName InName, TArray< float > &&InValue)
Definition AudioParameter.h:145
FAudioParameter(FName InName, int32 InValue)
Definition AudioParameter.h:117
FAudioParameter(FName InName, const FString &InValue)
Definition AudioParameter.h:131
FAudioParameter(FName InName, const TArray< UObject * > &InValue)
Definition AudioParameter.h:180
FAudioParameter & operator=(FAudioParameter &&InParameter)=default
FAudioParameter(FName InName, const TArray< int32 > &InValue)
Definition AudioParameter.h:166
FAudioParameter(FAudioParameter &&InParameter)=default
FAudioParameter(FName InName, UObject *InValue)
Definition AudioParameter.h:124
FAudioParameter(FName InName, EAudioParameterType Type)
Definition AudioParameter.h:211
FAudioParameter(FName InName, TArray< int32 > &&InValue)
Definition AudioParameter.h:173
static FAudioParameter CreateDefaultArray(FName InName, int32 InNum)
Definition AudioParameter.h:222
FAudioParameter(FName InName, const TArray< bool > &InValue)
Definition AudioParameter.h:152
FName ParamName
Definition AudioParameter.h:249
Definition ObjectPtr.h:488