VJ Master 1.0
Real-time audio analysis and visualisation.
Loading...
Searching...
No Matches
ST_AudioSoundWaveProcedural.h
1// Copyright (c) 2025 Aaron Trotter (ShaderTech). All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
6#include "Sound/SoundWaveProcedural.h"
7#include "Main/ST_AudioProcessingInterface.h"
8#include "Main/ST_AudioProcessingSettings.h"
9#include "ST_AudioSoundWaveProcedural.generated.h"
10
16UCLASS(BlueprintType)
17class ST_AUDIOPROCESSING_API UST_AudioSoundWaveProcedural : public USoundWaveProcedural, public IST_AudioProcessingInterface
18{
19 GENERATED_BODY()
20
21public:
22
28 UST_AudioSoundWaveProcedural(const FObjectInitializer& ObjectInitializer);
29
34
43 virtual TUniquePtr<Audio::IProxyData> CreateNewProxyData(const Audio::FProxyDataInitParams& InitParams) override;
44
54 virtual int32 OnGeneratePCMAudio(TArray<uint8>& OutAudio, int32 NumSamples);
55
65 void QueueAudioBuffer(const uint8* AudioData, const int32 BufferSize);
66
77 UFUNCTION(BlueprintCallable, Category = "ShaderTech|AudioProcessing|AudioSoundWaveProcedural")
78 void Initialise(FFFTIOData FFTIOData, bool bUsedByMixerOnly, EST_SampleFormat NewSampleFormat);
79
89 virtual Audio::EAudioMixerStreamDataFormat::Type GetGeneratedPCMDataFormat() const override;
90
92 UFUNCTION(BlueprintCallable, Category = "ShaderTech|AudioProcessing|AudioSoundWaveProcedural")
93 virtual bool RegisterToIO(EAudioIOType NewAudioIOType);
94
96 UFUNCTION(BlueprintCallable, Category = "ShaderTech|AudioProcessing|AudioSoundWaveProcedural")
97 virtual void DeregisterFromIO(EAudioIOType CurrAudioIOType);
98
104 virtual void OnAudioIOStatusChanged_Implementation(bool bIsActive, FIntPoint IOId) override;
105
107 UPROPERTY(Transient, VisibleAnywhere, BlueprintReadOnly, Category = "ShaderTech|AudioProcessing|AudioSoundWaveProcedural")
108 EAudioIOType Registered_AudioIOType = EAudioIOType::None;
109
110 const FThreadSafeBool& GetInitialisedFlag() const;
111
112private:
113
119 bool bMixerOnly = false;
120
126 EST_SampleFormat SampleFormat = EST_SampleFormat::S16;
127
131 FThreadSafeBool bInitialised = false;
132};
133
134inline const FThreadSafeBool& UST_AudioSoundWaveProcedural::GetInitialisedFlag() const
135{
136 return bInitialised;
137}
Interface for handling audio processing events.
Definition ST_AudioProcessingInterface.h:30
void Initialise(FFFTIOData FFTIOData, bool bUsedByMixerOnly, EST_SampleFormat NewSampleFormat)
Setups up sound wave with relevant IO data.
Definition ST_AudioSoundWaveProcedural.cpp:32
virtual int32 OnGeneratePCMAudio(TArray< uint8 > &OutAudio, int32 NumSamples)
Called by the audio engine to generate raw PCM audio data.
Definition ST_AudioSoundWaveProcedural.cpp:22
virtual Audio::EAudioMixerStreamDataFormat::Type GetGeneratedPCMDataFormat() const override
Return the format of the generated PCM data type.
Definition ST_AudioSoundWaveProcedural.cpp:54
void QueueAudioBuffer(const uint8 *AudioData, const int32 BufferSize)
Queues raw PCM audio data for playback.
Definition ST_AudioSoundWaveProcedural.cpp:27
virtual void OnAudioIOStatusChanged_Implementation(bool bIsActive, FIntPoint IOId) override
Definition ST_AudioSoundWaveProcedural.cpp:124
UST_AudioSoundWaveProcedural(const FObjectInitializer &ObjectInitializer)
Constructor for initializing the procedural sound wave.
Definition ST_AudioSoundWaveProcedural.cpp:7
virtual TUniquePtr< Audio::IProxyData > CreateNewProxyData(const Audio::FProxyDataInitParams &InitParams) override
Creates a new proxy data object for this sound wave.
Definition ST_AudioSoundWaveProcedural.cpp:17
EAudioIOType Registered_AudioIOType
Definition ST_AudioSoundWaveProcedural.h:108
virtual void DeregisterFromIO(EAudioIOType CurrAudioIOType)
Definition ST_AudioSoundWaveProcedural.cpp:110
virtual bool RegisterToIO(EAudioIOType NewAudioIOType)
Definition ST_AudioSoundWaveProcedural.cpp:84
Structure that holds the miniaudio playback and capture settings.
Definition ST_AudioProcessingSettings.h:714