UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
SoundAttenuation.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
10
11#include "SoundAttenuation.generated.h"
12
18
19// This enumeration is deprecated
20UENUM()
29
30UENUM()
32{
33 // Standard panning method for spatialization (linear or equal power method defined in project settings)
34 SPATIALIZATION_Default UMETA(DisplayName = "Panning"),
35
36 // Spatialization method provided by spatialization plugin currently selected in the project settings
37 SPATIALIZATION_HRTF UMETA(DisplayName = "Plugin-Spatialized"),
38};
39
40UENUM(BlueprintType)
42{
43 // The air absorption conform to a linear distance function
44 Linear,
45
46 // The air absorption conforms to a custom distance curve.
48};
49
50
51UENUM(BlueprintType)
53{
54 // A reverb send based on linear interpolation between a distance range and send-level range
55 Linear,
56
57 // A reverb send based on a supplied curve
59
60 // A manual reverb send level (Uses the specified constant send level value. Useful for 2D sounds.)
61 Manual,
62};
63
64UENUM(BlueprintType)
66{
67 // A priority attenuation based on linear interpolation between a distance range and priority attenuation range
68 Linear,
69
70 // A priority attenuation based on a supplied curve
72
73 // A manual priority attenuation (Uses the specified constant value. Useful for 2D sounds.)
74 Manual,
75};
76
77
78USTRUCT(BlueprintType)
80{
82
83
84 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = AttenuationSpatialization, meta = (DisplayName = "Spatialization Plugin Settings"))
85 TArray<TObjectPtr<USpatializationPluginSourceSettingsBase>> SpatializationPluginSettingsArray;
86
88 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = AttenuationOcclusion, meta = (DisplayName = "Occlusion Plugin Settings"))
90
92 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = AttenuationReverbSend, meta = (DisplayName = "Reverb Plugin Settings"))
94
96 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = AttenuationSourceDataOverride, meta = (DisplayName = "Source Data Override Plugin Settings"))
97 TArray<TObjectPtr<USourceDataOverridePluginSourceSettingsBase>> SourceDataOverridePluginSettingsArray;
98
99 void AddStructReferencedObjects(FReferenceCollector& Collector);
100};
101
102template<>
110
111
112// Defines how to speaker map the sound when using the non-spatialized radius feature
113UENUM(BlueprintType)
115{
116 // Will blend the 3D sound to an omni-directional sound (equal output mapping in all directions)
118
119 // Will blend the 3D source to the same representation speaker map used when playing the asset 2D
120 Direct2D,
121
122 // Will blend the 3D source to a multichannel 2D version (i.e. upmix stereo to quad) if rendering in surround
124};
125
126USTRUCT(BlueprintType)
133
134/*
135The settings for attenuating.
136*/
137USTRUCT(BlueprintType)
139{
141
142 /* Allows distance-based volume attenuation. */
143 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = AttenuationDistance, meta = (DisplayName = "Enable Volume Attenuation"))
144 uint8 bAttenuate : 1;
145
146 /* Allows the source to be 3D spatialized. */
147 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = AttenuationSpatialization, meta = (DisplayName = "Enable Spatialization"))
148 uint8 bSpatialize : 1;
149
151 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = AttenuationAirAbsorption, meta = (DisplayName = "Enable Air Absorption"))
152 uint8 bAttenuateWithLPF : 1;
153
155 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = AttenuationListenerFocus)
156 uint8 bEnableListenerFocus : 1;
157
159 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = AttenuationListenerFocus)
160 uint8 bEnableFocusInterpolation : 1;
161
163 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = AttenuationOcclusion)
164 uint8 bEnableOcclusion : 1;
165
167 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = AttenuationOcclusion)
168 uint8 bUseComplexCollisionForOcclusion : 1;
169
171 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = AttenuationReverbSend, meta = (DisplayName = "Enable Reverb Send"))
172 uint8 bEnableReverbSend : 1;
173
175 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = AttenuationPriority, meta = (DisplayName = "Enable Priority Attenuation"))
176 uint8 bEnablePriorityAttenuation : 1;
177
179 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = AttenuationSpatialization, meta = (DisplayName = "Normalize 3D Stereo Sounds"))
180 uint8 bApplyNormalizationToStereoSounds : 1;
181
183 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = AttenuationAirAbsorption, meta = (DisplayName = "Enable Log Frequency Scaling"))
184 uint8 bEnableLogFrequencyScaling : 1;
185
187 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = AttenuationSubmixSend, meta = (DisplayName = "Enable Submix Send"))
188 uint8 bEnableSubmixSends : 1;
189
191 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = AttenuationSourceDataOverride, meta = (DisplayName = "Enable Source Data Override"))
192 uint8 bEnableSourceDataOverride : 1;
193
195 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = AttenuationAudioLink, meta = (DisplayName = "Enable Send to AudioLink"))
196 uint8 bEnableSendToAudioLink : 1;
197
199 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = AttenuationSpatialization, meta = (ClampMin = "0", EditCondition = "bSpatialize", DisplayName = "Spatialization Method"))
201
203 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = AttenuationAudioLink, meta = (DisplayName = "AudioLink Settings Override", EditCondition = "bEnableSendToAudioLink"))
204 TObjectPtr<UAudioLinkSettingsAbstract> AudioLinkSettingsOverride;
205
207 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = AttenuationSpatialization, meta = (ClampMin = "0", EditCondition = "bSpatialize"))
208 float BinauralRadius;
209
210 /* The normalized custom curve to use for the air absorption lowpass frequency values. Does a mapping from defined distance values (x-axis) and defined frequency values (y-axis) */
211 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = AttenuationAirAbsorption)
212 FRuntimeFloatCurve CustomLowpassAirAbsorptionCurve;
213
214 /* The normalized custom curve to use for the air absorption highpass frequency values. Does a mapping from defined distance values (x-axis) and defined frequency values (y-axis) */
215 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = AttenuationAirAbsorption)
216 FRuntimeFloatCurve CustomHighpassAirAbsorptionCurve;
217
219 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = AttenuationAirAbsorption)
220 EAirAbsorptionMethod AbsorptionMethod;
221
222 /* Which trace channel to use for audio occlusion checks. */
223 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = AttenuationOcclusion)
224 TEnumAsByte<enum ECollisionChannel> OcclusionTraceChannel;
225
227 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = AttenuationReverbSend)
228 EReverbSendMethod ReverbSendMethod;
229
231 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = AttenuationPriority)
232 EPriorityAttenuationMethod PriorityAttenuationMethod;
233
234#if WITH_EDITORONLY_DATA
235 UPROPERTY()
237
238 UPROPERTY()
240#endif
241
243 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = AttenuationSpatialization, meta = (ClampMin = "0", EditCondition = "bSpatialize"))
244 float NonSpatializedRadiusStart;
245
247 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = AttenuationSpatialization, meta = (ClampMin = "0", EditCondition = "bSpatialize"))
248 float NonSpatializedRadiusEnd;
249
251 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = AttenuationSpatialization, meta = (ClampMin = "0", EditCondition = "bSpatialize"))
252 ENonSpatializedRadiusSpeakerMapMode NonSpatializedRadiusMode;
253
255 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = AttenuationSpatialization, meta = (ClampMin = "0", EditCondition = "bSpatialize", DisplayName = "3D Stereo Spread"))
256 float StereoSpread;
257
258#if WITH_EDITORONLY_DATA
259 UPROPERTY()
261
262 UPROPERTY()
264
265 UPROPERTY()
267#endif
268
269 /* The distance min range at which to apply an absorption LPF filter. */
270 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = AttenuationAirAbsorption, meta = (DisplayName = "Min Distance Range"))
271 float LPFRadiusMin;
272
273 /* The max distance range at which to apply an absorption LPF filter. Absorption freq cutoff interpolates between filter frequency ranges between these distance values. */
274 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = AttenuationAirAbsorption, meta = (DisplayName = "Max Distance Range"))
275 float LPFRadiusMax;
276
277 /* The range of the cutoff frequency (in Hz) of the lowpass absorption filter. */
278 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = AttenuationAirAbsorption, meta = (DisplayName = "Low Pass Cutoff Frequency Min"))
279 float LPFFrequencyAtMin;
280
281 /* The range of the cutoff frequency (in Hz) of the lowpass absorption filter. */
282 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = AttenuationAirAbsorption, meta = (DisplayName = "Low Pass Cutoff Frequency Max"))
283 float LPFFrequencyAtMax;
284
285 /* The range of the cutoff frequency (in Hz) of the highpass absorption filter. */
286 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = AttenuationAirAbsorption, meta = (DisplayName = "High Pass Cutoff Frequency Min"))
287 float HPFFrequencyAtMin;
288
289 /* The range of the cutoff frequency (in Hz) of the highpass absorption filter. */
290 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = AttenuationAirAbsorption, meta = (DisplayName = "High Pass Cutoff Frequency Max"))
291 float HPFFrequencyAtMax;
292
294 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = AttenuationListenerFocus)
295 float FocusAzimuth;
296
298 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = AttenuationListenerFocus)
299 float NonFocusAzimuth;
300
302 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = AttenuationListenerFocus, meta = (ClampMin = "0.0", UIMin = "0.0", EditCondition = "bEnableListenerFocus"))
303 float FocusDistanceScale;
304
306 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = AttenuationListenerFocus, meta = (ClampMin = "0.0", UIMin = "0.0", EditCondition = "bEnableListenerFocus"))
307 float NonFocusDistanceScale;
308
310 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = AttenuationListenerFocus, meta = (ClampMin = "0.0", UIMin = "0.0", UIMax = "1.0", EditCondition = "bEnableListenerFocus"))
311 float FocusPriorityScale;
312
314 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = AttenuationListenerFocus, meta = (ClampMin = "0.0", UIMin = "0.0", UIMax = "1.0", EditCondition = "bEnableListenerFocus"))
315 float NonFocusPriorityScale;
316
318 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = AttenuationListenerFocus, meta = (ClampMin = "0.0", UIMin = "0.0", EditCondition = "bEnableListenerFocus"))
319 float FocusVolumeAttenuation;
320
322 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = AttenuationListenerFocus, meta = (ClampMin = "0.0", UIMin = "0.0", EditCondition = "bEnableListenerFocus"))
323 float NonFocusVolumeAttenuation;
324
326 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = AttenuationListenerFocus, meta = (ClampMin = "0.0", UIMin = "0.0", EditCondition = "bEnableFocusInterpolation"))
327 float FocusAttackInterpSpeed;
328
330 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = AttenuationListenerFocus, meta = (ClampMin = "0.0", UIMin = "0.0", EditCondition = "bEnableFocusInterpolation"))
331 float FocusReleaseInterpSpeed;
332
334 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = AttenuationOcclusion, meta = (ClampMin = "0.0", UIMin = "0.0", EditCondition = "bEnableOcclusion"))
335 float OcclusionLowPassFilterFrequency;
336
338 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = AttenuationOcclusion, meta = (ClampMin = "0.0", UIMin = "0.0", EditCondition = "bEnableOcclusion"))
339 float OcclusionVolumeAttenuation;
340
342 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = AttenuationOcclusion, meta = (ClampMin = "0", UIMin = "0.0", EditCondition = "bEnableOcclusion"))
343 float OcclusionInterpolationTime;
344
345#if WITH_EDITORONLY_DATA
346 UPROPERTY()
348
349 UPROPERTY()
351#endif
352
354 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = AttenuationReverbSend, meta = (DisplayName = "Reverb Min Send Level"))
355 float ReverbWetLevelMin;
356
358 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = AttenuationReverbSend, meta = (DisplayName = "Reverb Max Send Level"))
359 float ReverbWetLevelMax;
360
362 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = AttenuationReverbSend, meta = (DisplayName = "Reverb Min Send Distance"))
363 float ReverbDistanceMin;
364
366 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = AttenuationReverbSend, meta = (DisplayName = "Reverb Max Send Distance"))
367 float ReverbDistanceMax;
368
369 /* The manual master reverb send level to use. Doesn't change as a function of distance. */
370 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = AttenuationReverbSend)
371 float ManualReverbSendLevel;
372
374 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = AttenuationPriority, meta = (ClampMin = "0.0", UIMin = "0.0", UIMax = "1.0", DisplayName = "Priority Attenuation At Min Distance"))
375 float PriorityAttenuationMin;
376
378 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = AttenuationPriority, meta = (ClampMin = "0.0", UIMin = "0.0", UIMax = "1.0", DisplayName = "Priority Attenuation At Max Distance"))
379 float PriorityAttenuationMax;
380
382 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = AttenuationPriority, meta = (ClampMin = "0.0", DisplayName = "Priority Attenuation Min Distance"))
383 float PriorityAttenuationDistanceMin;
384
386 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = AttenuationPriority, meta = (ClampMin = "0.0", DisplayName = "Priority Attenuation Max Distance"))
387 float PriorityAttenuationDistanceMax;
388
389 /* Static priority scalar to use (doesn't change as a function of distance). */
390 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = AttenuationPriority, meta = (ClampMin = "0.0", UIMin = "0.0", UIMax = "1.0", DisplayName = "Attenuation Priority"))
391 float ManualPriorityAttenuation;
392
393 /* The custom reverb send curve to use for distance-based send level. Values clamped between 0.0 and 1.0. */
394 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = AttenuationReverbSend)
395 FRuntimeFloatCurve CustomReverbSendCurve;
396
398 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = AttenuationSubmixSend)
400
401 /* The custom curve to use for distance-based priority attenuation. */
402 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = AttenuationPriority)
403 FRuntimeFloatCurve CustomPriorityAttenuationCurve;
404
406 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = AttenuationPluginSettings, meta = (ShowOnlyInnerProperties))
408
412
413 ENGINE_API bool operator==(const FSoundAttenuationSettings& Other) const;
414#if WITH_EDITORONLY_DATA
415 ENGINE_API void PostSerialize(const FArchive& Ar);
416#endif
417
418 ENGINE_API virtual void CollectAttenuationShapesForVisualization(TMultiMap<EAttenuationShape::Type, FBaseAttenuationSettings::AttenuationShapeDetails>& ShapeDetailsMap) const override;
419 ENGINE_API float GetFocusPriorityScale(const struct FGlobalFocusSettings& FocusSettings, float FocusFactor) const;
420 ENGINE_API float GetFocusAttenuation(const struct FGlobalFocusSettings& FocusSettings, float FocusFactor) const;
421 ENGINE_API float GetFocusDistanceScale(const struct FGlobalFocusSettings& FocusSettings, float FocusFactor) const;
422
423 ENGINE_API void AddStructReferencedObjects(FReferenceCollector& Collector);
424};
425
426template<>
428{
429 enum
430 {
431#if WITH_EDITORONLY_DATA
432 WithPostSerialize = true,
433#endif
435 };
436};
437
438
442UCLASS(BlueprintType, hidecategories=Object, editinlinenew, MinimalAPI)
444{
446
447 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=Settings, meta = (CustomizeProperty))
448 FSoundAttenuationSettings Attenuation;
449};
450
451namespace Audio
452{
453 namespace AttenuationInterface
454 {
455 ENGINE_API const extern FName Name;
456
457 namespace Inputs
458 {
459 ENGINE_API const extern FName Distance;
460 } // namespace Inputs
461
463 } // namespace AttenuationInterface
464
465 namespace SpatializationInterface
466 {
467 ENGINE_API const extern FName Name;
468
469 namespace Inputs
470 {
471 ENGINE_API const extern FName Azimuth;
472 ENGINE_API const extern FName Elevation;
473 } // namespace Inputs
474
476 } // namespace SpatializationInterface
477
478 namespace SourceOrientationInterface
479 {
480 ENGINE_API const extern FName Name;
481
482 namespace Inputs
483 {
484 ENGINE_API const extern FName Azimuth;
485 ENGINE_API const extern FName Elevation;
486 } // namespace Inputs
487
489 } // namespace EmitterInterface
490
491 namespace ListenerOrientationInterface
492 {
493 ENGINE_API const extern FName Name;
494
495 namespace Inputs
496 {
497 ENGINE_API const extern FName Azimuth;
498 ENGINE_API const extern FName Elevation;
499 } // namespace Inputs
500
502 } // namespace EmitterInterface
503} // namespace Audio
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
ECollisionChannel
Definition EngineTypes.h:1088
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define GENERATED_UCLASS_BODY(...)
Definition ObjectMacros.h:768
#define UCLASS(...)
Definition ObjectMacros.h:776
#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
ESoundDistanceCalc
Definition SoundAttenuation.h:22
@ SOUNDDISTANCE_InfiniteXYPlane
Definition SoundAttenuation.h:24
@ SOUNDDISTANCE_MAX
Definition SoundAttenuation.h:27
@ SOUNDDISTANCE_Normal
Definition SoundAttenuation.h:23
@ SOUNDDISTANCE_InfiniteYZPlane
Definition SoundAttenuation.h:26
@ SOUNDDISTANCE_InfiniteXZPlane
Definition SoundAttenuation.h:25
ESoundSpatializationAlgorithm
Definition SoundAttenuation.h:32
@ UMETA
Definition SoundAttenuation.h:34
EReverbSendMethod
Definition SoundAttenuation.h:53
EAirAbsorptionMethod
Definition SoundAttenuation.h:42
ENonSpatializedRadiusSpeakerMapMode
Definition SoundAttenuation.h:115
EPriorityAttenuationMethod
Definition SoundAttenuation.h:66
uint8_t uint8
Definition binka_ue_file_header.h:8
Definition Archive.h:1208
Definition NameTypes.h:617
Definition UObjectGlobals.h:2492
Definition Array.h:670
Definition EnumAsByte.h:22
Definition SharedPointer.h:692
Definition AudioLinkSettingsAbstract.h:32
Definition Object.h:95
Definition IAudioExtensionPlugin.h:483
Definition IAudioExtensionPlugin.h:598
Definition SoundAttenuation.h:444
Definition SoundSubmix.h:174
Definition IAudioExtensionPlugin.h:398
Definition IAudioExtensionPlugin.h:185
NO_LOGGING.
Definition AudioMixerPlatformAndroid.cpp:53
Definition SoundAttenuation.h:128
Definition Attenuation.h:57
Definition AudioDevice.h:377
Definition CurveFloat.h:13
Definition SoundAttenuation.h:80
Definition SoundAttenuation.h:139
Definition SoundSubmixSend.h:84
Definition ObjectPtr.h:488
Definition StructOpsTypeTraits.h:11
@ WithAddStructReferencedObjects
Definition StructOpsTypeTraits.h:22
@ WithPostSerialize
Definition StructOpsTypeTraits.h:25
Definition StructOpsTypeTraits.h:46