UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
SoundBase.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2#pragma once
3
4
5#include "AudioDefines.h"
7#include "CoreMinimal.h"
9#include "SoundConcurrency.h"
10#include "UObject/Object.h"
13
14#include "SoundBase.generated.h"
15
16
17// Forward Declarations
18namespace Audio
19{
20 class IParameterTransmitter;
21 struct FParameterInterface;
22 struct FParameterTransmitterInitParams;
23 using FDeviceId = uint32;;
25} // namespace Audio
26
27class ISoundGenerator;
28class UAssetUserData;
32class USoundClass;
35class USoundSourceBus;
36class USoundSubmix;
38class USoundWave;
39enum class EBusSendType : uint8;
40namespace EMaxConcurrentResolutionRule { enum Type : int; }
41struct FActiveSound;
42struct FAudioParameter;
48struct FWaveInstance;
50
56UENUM(BlueprintType)
58{
61
69
71 Restart,
72
76 SeekRestart UE_EXPERIMENTAL(5.6, "This virtualization mode is experimental and may not function as expected in all use cases.")
77};
78
83UENUM(BlueprintType)
90
91// This struct allows us to modify the transient editor properties and minimize impact on the properties
92USTRUCT()
94{
96
97public:
99 UPROPERTY(EditAnywhere, Transient, SkipSerialization, Category = Developer, meta = (DisplayName = "Use Submixes on preview"))
101};
102
103
107UCLASS(config=Engine, hidecategories=Object, abstract, editinlinenew, BlueprintType, MinimalAPI)
109{
110
111private:
113
114public:
116 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Sound, meta = (DisplayName = "Class"), AssetRegistrySearchable)
117 TObjectPtr<USoundClass> SoundClassObject;
118
119#if WITH_EDITORONLY_DATA
121 UPROPERTY(EditAnywhere, Transient, SkipSerialization, Category = Developer, meta = (DisplayName = "Editor Data", ShowOnlyInnerProperties))
123#endif //WITH_EDITORONLY_DATA
124
126 UPROPERTY(EditAnywhere, Category = Developer, meta = (DisplayName = "Enable Attenuation Debug"))
127 uint8 bDebug : 1;
128
130 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Voice Management|Concurrency")
131 uint8 bOverrideConcurrency : 1;
132
133#if WITH_EDITORONLY_DATA
135 UPROPERTY()
137#endif //WITH_EDITORONLY_DATA
138
140 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Effects|Source")
142
144 UPROPERTY(EditAnywhere, Category = "Effects|Submix")
146
148 UPROPERTY(EditAnywhere, Category = "Effects|Submix", meta = (DisplayAfter = "SoundSubmixObject"))
150
152 UPROPERTY()
153 uint8 bHasDelayNode : 1;
154
156 UPROPERTY()
157 uint8 bHasConcatenatorNode : 1;
158
159#if WITH_EDITORONLY_DATA
160 UPROPERTY()
162#endif // WITH_EDITORONLY_DATA
163
165 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Voice Management|Priority")
166 uint8 bBypassVolumeScaleForPriority : 1;
167
169 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Voice Management")
170 EVirtualizationMode VirtualizationMode;
171
172#if WITH_EDITORONLY_DATA
173 UPROPERTY()
175#endif // WITH_EDITORONLY_DATA
176
179
180#if WITH_EDITORONLY_DATA
182 UPROPERTY()
184#endif // WITH_EDITORONLY_DATA
185
187 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Voice Management|Concurrency", meta = (EditCondition = "!bOverrideConcurrency"))
188 TSet<TObjectPtr<USoundConcurrency>> ConcurrencySet;
189
191 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Voice Management|Concurrency", meta = (EditCondition = "bOverrideConcurrency"))
192 FSoundConcurrencySettings ConcurrencyOverrides;
193
194#if WITH_EDITORONLY_DATA
196 UPROPERTY()
198#endif
199
201 UPROPERTY(Category = Developer, AssetRegistrySearchable, VisibleAnywhere, BlueprintReadOnly)
203
206 UPROPERTY(Category = Developer, AssetRegistrySearchable, VisibleAnywhere, BlueprintReadOnly)
208
210 UPROPERTY(Category = Developer, AssetRegistrySearchable, VisibleAnywhere, BlueprintReadOnly)
211 float TotalSamples;
212
217 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Voice Management|Priority", meta = (ClampMin = "0.0", UIMin = "0.0", ClampMax = "100.0", UIMax = "100.0"))
218 float Priority;
219
221 UPROPERTY(EditAnywhere, Category = Attenuation, meta = (EditCondition = "IsAttenuationSettingsEditable"))
222 TObjectPtr<USoundAttenuation> AttenuationSettings;
223
226 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Effects|Submix", meta = (DisplayName = "Base Submix", EditCondition = "bEnableBaseSubmix"))
227 TObjectPtr<USoundSubmixBase> SoundSubmixObject;
228
230 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Effects|Submix", meta = (DisplayName = "Submix Sends", EditCondition = "bEnableSubmixSends"))
232
234 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Effects|Source")
236
238 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Effects|Source", meta = (DisplayName = "Post-Effect Bus Sends", EditCondition = "bEnableBusSends"))
240
242 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Effects|Source", meta = (DisplayName = "Pre-Effect Bus Sends", EditCondition = "bEnableBusSends"))
243 TArray<FSoundSourceBusSendInfo> PreEffectBusSends;
244
246 UPROPERTY(EditAnywhere, AdvancedDisplay, Instanced, Category = Advanced)
248
249#if WITH_EDITORONLY_DATA
250 UPROPERTY(EditAnywhere, Category = AudioProperties)
252
253 // //~ Begin IAudioPropertiesSheetAssetUserInterface
254 ENGINE_API virtual void AllowPropertyParsing(const FProperty& TargetProperty) override;
255 ENGINE_API virtual void IgnorePropertyParsing(const FProperty& PropertyToIgnore) override;
256 ENGINE_API virtual bool ShouldParseProperty(const FProperty& TargetProperty) const override;
257 //~ End IAudioPropertiesSheetAssetUserInterface
258#endif
259
260private:
261 UPROPERTY()
262 FSoundTimecodeOffset TimecodeOffset;
263
264 //Property Sheets support
265 void InjectPropertySheet();
266 void BindToPropertySheetChanges();
267 void UnbindFromPropertySheetChanges();
268
269#if WITH_EDITORONLY_DATA
270 UPROPERTY()
272#endif
273
274public:
275 //~ Begin UObject Interface.
276#if WITH_EDITORONLY_DATA
277 ENGINE_API virtual void PostLoad() override;
278#endif
279 ENGINE_API virtual bool CanBeClusterRoot() const override;
280 ENGINE_API virtual bool CanBeInCluster() const override;
281 ENGINE_API virtual void PreSave(FObjectPreSaveContext SaveContext) override;
282 ENGINE_API virtual void Serialize(FArchive& Ar) override;
283
284#if WITH_EDITOR
285 ENGINE_API virtual void PostEditChangeProperty(struct FPropertyChangedEvent& PropertyChangedEvent) override;
287#endif
288
289 //~ End UObject interface.
290
292 ENGINE_API virtual bool IsPlayable() const;
293
295 ENGINE_API virtual bool SupportsSubtitles() const;
296
298 ENGINE_API virtual bool HasAttenuationNode() const;
299
301 ENGINE_API virtual const FSoundAttenuationSettings* GetAttenuationSettingsToApply() const;
302
306 ENGINE_API virtual float GetMaxDistance() const;
307
311 ENGINE_API virtual float GetDuration() const;
312
314 ENGINE_API bool HasDelayNode() const;
315
317 ENGINE_API bool HasConcatenatorNode() const;
318
320 ENGINE_API virtual bool IsPlayWhenSilent() const;
321
322 ENGINE_API virtual float GetVolumeMultiplier();
323 ENGINE_API virtual float GetPitchMultiplier();
324
326 virtual float GetSubtitlePriority() const { return DEFAULT_SUBTITLE_PRIORITY; };
327
329 ENGINE_API virtual bool ShouldApplyInteriorVolumes();
330
334 virtual class UCurveTable* GetCurveData() const { return nullptr; }
335
337 ENGINE_API virtual bool IsLooping() const;
338
340 ENGINE_API virtual bool IsOneShot() const;
341
343 virtual bool IsProcedurallyGenerated() const { return false; }
344
346 virtual void Parse( class FAudioDevice* AudioDevice, const UPTRINT NodeWaveInstanceHash, FActiveSound& ActiveSound, const FSoundParseParameters& ParseParams, TArray<FWaveInstance*>& WaveInstances ) { }
347
349 ENGINE_API virtual USoundClass* GetSoundClass() const;
350
352 ENGINE_API virtual USoundSubmixBase* GetSoundSubmix() const;
353
355 ENGINE_API void GetSoundSubmixSends(TArray<FSoundSubmixSendInfo>& OutSends) const;
356
358 ENGINE_API void GetSoundSourceBusSends(EBusSendType BusSendType, TArray<FSoundSourceBusSendInfo>& OutSends) const;
359
361 ENGINE_API void GetConcurrencyHandles(TArray<FConcurrencyHandle>& OutConcurrencyHandles) const;
362
364 ENGINE_API float GetPriority() const;
366 ENGINE_API virtual bool GetSoundWavesWithCookedAnalysisData(TArray<USoundWave*>& OutSoundWaves);
367
369 virtual bool HasCookedFFTData() const { return false; }
370 virtual bool HasCookedAmplitudeEnvelopeData() const { return false; }
371
372 //~ Begin IInterface_AssetUserData Interface
373 ENGINE_API virtual void AddAssetUserData(UAssetUserData* InUserData) override;
374 ENGINE_API virtual void RemoveUserDataOfClass(TSubclassOf<UAssetUserData> InUserDataClass) override;
375 ENGINE_API virtual UAssetUserData* GetAssetUserDataOfClass(TSubclassOf<UAssetUserData> InUserDataClass) override;
376 ENGINE_API virtual const TArray<UAssetUserData*>* GetAssetUserDataArray() const override;
377 //~ End IInterface_AssetUserData Interface
378
381
383 virtual void InitResources() { }
384
387
390
393
396
398 ENGINE_API virtual bool IsParameterValid(const FAudioParameter& InParameter) const;
399
401 virtual bool GetAllDefaultParameters(TArray<FAudioParameter>& OutParameters) const { return false; }
402
404 UE_DEPRECATED(5.7, "This is no longer used.") virtual bool EnableSubmixSendsOnPreview() const { return false; }
405
407 UFUNCTION()
408 virtual bool IsAttenuationSettingsEditable() const { return true; }
409
410#if WITH_EDITORONLY_DATA
413
414#endif //WITH_EDITORONLY_DATA
415
416protected:
417 ENGINE_API virtual float ComputeMaxDistance() const;
418};
#define DEFAULT_SUBTITLE_PRIORITY
Definition AudioDefines.h:38
EBusSendType
Definition Audio.h:169
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
FPlatformTypes::UPTRINT UPTRINT
An unsigned integer the same size as a pointer.
Definition Platform.h:1146
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
int32 ParseParams(const FString &ParamStr, TArray< FString > &OutArray)
Definition NativeJSScripting.cpp:193
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define GENERATED_BODY(...)
Definition ObjectMacros.h:765
#define UFUNCTION(...)
Definition ObjectMacros.h:745
#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
USkinnedMeshComponent float
Definition SkinnedMeshComponent.h:60
EVirtualizationMode
Definition SoundBase.h:58
EUseSubmixOnPreviewMode
Definition SoundBase.h:85
TSharedPtr< ISoundGenerator, ESPMode::ThreadSafe > ISoundGeneratorPtr
Definition SoundBase.h:49
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition Engine.Build.cs:7
Definition Archive.h:1208
Definition AudioDevice.h:417
Definition NameTypes.h:617
Definition ObjectSaveContext.h:244
Definition UnrealType.h:174
Definition AudioPropertiesSheetAssetBase.h:28
Definition Interface_AssetUserData.h:20
Definition SoundGenerator.h:31
Definition Array.h:670
Definition EnumAsByte.h:22
Definition UnrealString.h.inl:34
Definition SharedPointer.h:692
Definition SubclassOf.h:30
Definition AssetUserData.h:18
Definition AudioPropertiesSheetAssetBase.h:41
Definition CurveTable.h:43
Definition Object.h:95
Definition SoundAttenuation.h:444
Definition SoundBase.h:109
virtual float GetSubtitlePriority() const
Definition SoundBase.h:326
virtual bool HasCookedAmplitudeEnvelopeData() const
Definition SoundBase.h:370
virtual void InitResources()
Definition SoundBase.h:383
virtual ISoundGeneratorPtr CreateSoundGenerator(const FSoundGeneratorInitParams &InParams, TArray< FAudioParameter > &&InDefaultParameters)
Definition SoundBase.h:392
UE_DEPRECATED(5.7, "This is no longer used.") virtual bool EnableSubmixSendsOnPreview() const
Definition SoundBase.h:404
virtual ISoundGeneratorPtr CreateSoundGenerator(const FSoundGeneratorInitParams &InParams)
Definition SoundBase.h:389
virtual bool GetAllDefaultParameters(TArray< FAudioParameter > &OutParameters) const
Definition SoundBase.h:401
virtual bool HasCookedFFTData() const
Definition SoundBase.h:369
virtual bool ImplementsParameterInterface(Audio::FParameterInterfacePtr InParameterInterface) const
Definition SoundBase.h:386
TMap< Audio::FDeviceId, int32 > CurrentPlayCount
Definition SoundBase.h:178
virtual void Parse(class FAudioDevice *AudioDevice, const UPTRINT NodeWaveInstanceHash, FActiveSound &ActiveSound, const FSoundParseParameters &ParseParams, TArray< FWaveInstance * > &WaveInstances)
Definition SoundBase.h:346
virtual bool IsProcedurallyGenerated() const
Definition SoundBase.h:343
virtual class UCurveTable * GetCurveData() const
Definition SoundBase.h:334
Definition SoundClass.h:209
Definition SoundConcurrency.h:217
Definition SoundEffectSource.h:49
Definition SoundEffectSource.h:20
Definition SoundSubmix.h:174
Definition SoundSubmix.h:334
Definition SoundWave.h:417
Definition Voice.Build.cs:7
NO_LOGGING.
Definition AudioMixerPlatformAndroid.cpp:53
TSharedPtr< FParameterInterface, ESPMode::ThreadSafe > FParameterInterfacePtr
Definition IAudioParameterInterfaceRegistry.h:179
uint32 FDeviceId
Definition AudioDefines.h:66
Definition SoundBase.h:40
Type
Definition SoundConcurrency.h:34
Definition IAudioParameterTransmitter.h:22
Definition ActiveSound.h:283
Definition AudioParameter.h:93
Definition UnrealType.h:6865
Definition SoundAttenuation.h:139
Definition SoundBase.h:94
Definition SoundConcurrency.h:75
Definition SoundGenerator.h:17
Definition ActiveSound.h:64
Definition SoundSourceBusSend.h:27
Definition SoundSubmixSend.h:146
Definition SoundTimecodeOffset.h:8
Definition Audio.h:180
USoundEffectSourcePresetChain * SourceEffectChain
Definition Audio.h:202
uint32 bEnableSubmixSends
Definition Audio.h:276
uint32 bEnableBusSends
Definition Audio.h:270
float GetVolumeMultiplier() const
Definition Audio.h:469
TArray< FSoundSourceBusSendInfo > BusSends[(int32) EBusSendType::Count]
Definition Audio.h:199
TArray< FSoundSubmixSendInfo > SoundSubmixSends
Definition Audio.h:196
uint32 bEnableBaseSubmix
Definition Audio.h:273
Definition ObjectPtr.h:488
Definition Optional.h:131