UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
SoundWaveProcedural.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3
8#pragma once
9
10#include "CoreMinimal.h"
13#include "HAL/ThreadSafeBool.h"
14#include "Containers/Queue.h"
15#include "Sound/SoundWave.h"
16#include "SoundWaveProcedural.generated.h"
17
18#if PLATFORM_IOS
19#define DEFAULT_PROCEDURAL_SOUNDWAVE_BUFFER_SIZE (8 * 1024)
20#else
21#define DEFAULT_PROCEDURAL_SOUNDWAVE_BUFFER_SIZE 1024
22#endif
23
25
26UCLASS(MinimalAPI)
28{
30
31private:
32 // A thread safe queue for queuing audio to be consumed on audio thread
33 TQueue<TArray<uint8>> QueuedAudio;
34
35 // The amount of bytes queued and not yet consumed
36 FThreadSafeCounter AvailableByteCount;
37
38 // The actual audio buffer that can be consumed. QueuedAudio is fed to this buffer. Accessed only audio thread.
39 TArray<uint8> AudioBuffer;
40
41 // Flag to reset the audio buffer
42 FThreadSafeBool bReset;
43
44 // Pumps audio queued from game thread
45 ENGINE_API void PumpQueuedAudio();
46
47protected:
48
49 // Number of samples to pad with 0 if there isn't enough audio available
51
52 // The number of PCM samples we want to generate. This can't be larger than SamplesNeeded in GeneratePCMData callback, but can be less.
54
55 // Procedural Sounds don't represent a wav file, don't do anything when serializing cue points
57
58public:
60
61 //~ Begin UObject Interface.
62 ENGINE_API virtual void Serialize( FArchive& Ar ) override;
63 ENGINE_API virtual void GetAssetRegistryTags(FAssetRegistryTagsContext Context) const override;
64 UE_DEPRECATED(5.4, "Implement the version that takes FAssetRegistryTagsContext instead.")
65 ENGINE_API virtual void GetAssetRegistryTags(TArray<FAssetRegistryTag>& OutTags) const override;
66 //~ End UObject Interface.
67
68 //~ Begin USoundWave Interface.
70 ENGINE_API virtual bool HasCompressedData(FName Format, ITargetPlatform* TargetPlatform) const override;
71 ENGINE_API virtual void BeginGetCompressedData(FName Format, const FPlatformAudioCookOverrides* CompressionOverrides, const ITargetPlatform* InTargetPlatform) override;
73 ENGINE_API virtual void InitAudioResource( FByteBulkData& CompressedData ) override;
74 ENGINE_API virtual bool InitAudioResource(FName Format) override;
75 ENGINE_API virtual int32 GetResourceSizeForFormat(FName Format) override;
76 virtual bool IsSeekable() const override { return false; }
77 //~ End USoundWave Interface.
78
79 // Virtual function to generate PCM audio from the audio render thread.
80 // Returns number of samples generated
81 virtual int32 OnGeneratePCMAudio(TArray<uint8>& OutAudio, int32 NumSamples) { return 0; }
82
84 ENGINE_API void QueueAudio(const uint8* AudioData, const int32 BufferSize);
85
87 ENGINE_API void ResetAudio();
88
90 ENGINE_API int32 GetAvailableAudioByteCount();
91
94
97};
#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
#define DECLARE_DELEGATE_TwoParams(DelegateName, Param1Type, Param2Type)
Definition DelegateCombinations.h:57
#define GENERATED_BODY(...)
Definition ObjectMacros.h:765
#define UCLASS(...)
Definition ObjectMacros.h:776
uint8_t uint8
Definition binka_ue_file_header.h:8
Definition Archive.h:1208
Definition AssetRegistryTagsContext.h:98
Definition NameTypes.h:617
Definition UObjectGlobals.h:1292
Definition ThreadSafeBool.h:17
Definition ThreadSafeCounter.h:14
Definition Array.h:670
Definition Queue.h:48
Definition SoundWaveProcedural.h:28
int32 NumSamplesToGeneratePerCallback
Definition SoundWaveProcedural.h:53
virtual int32 OnGeneratePCMAudio(TArray< uint8 > &OutAudio, int32 NumSamples)
Definition SoundWaveProcedural.h:81
int32 SampleByteSize
Definition SoundWaveProcedural.h:96
virtual void SerializeCuePoints(FArchive &Ar, const bool bIsLoadingFromCookedArchive)
Definition SoundWaveProcedural.h:56
FOnSoundWaveProceduralUnderflow OnSoundWaveProceduralUnderflow
Definition SoundWaveProcedural.h:93
int32 NumBufferUnderrunSamples
Definition SoundWaveProcedural.h:50
Definition SoundWave.h:417
Definition AudioCompressionSettings.h:61