VJ Master 1.0
Real-time audio analysis and visualisation.
Loading...
Searching...
No Matches
UST_AudioIOBase Class Reference

Base class for Audio IO functionality in ShaderTech. More...

#include <ST_AudioIOBase.h>

Public Member Functions

 UST_AudioIOBase ()
 ~UST_AudioIOBase ()
bool Activate ()
void Deactivate ()
virtual EAudioIOType GetAudioIOType () const
FAudioIOConfig GetAudioIOConfig () const
FFFTIOData GetFFTIOData () const
bool RegisterSampler (UObject *Sampler, bool bSamplerActivates=false)
void DeregisterSampler (UObject *Sampler, bool bZeroSamplersDeactivates=false)
template<typename InterfaceType>
bool ContainsInterface () const
FIntPoint GetIOId () const
virtual EST_SampleFormat GetAudioFormat () const
 Returns the current audio format.

Static Public Member Functions

static void MA_DataOrganiser (ma_device *pDevice, void *pSamples, uint64 PeriodSizeInFrames, ma_format Format, uint32 Channels)

Public Attributes

FCriticalSection AudioBufferLock
void * SampledAudioBuffers [BufferCount] = { nullptr, nullptr }
void * CurrentAudioBuffer = nullptr
std::atomic< uint32 > ReadIndex
std::atomic< uint32 > WriteIndex
FOnAudioIOStatusChanged OnAudioIOStatusChanged
FOnRawMagnitudesReady OnRawMagnitudesReady
FOnFrequencyBandsReady OnFrequencyBandsReady
FOnAmplitudesReady OnAmplitudesReady
FOnPitchesReady OnPitchesReady
FOnBeatDetected OnBeatDetected

Static Public Attributes

static constexpr uint32 BufferCount = 2

Protected Member Functions

virtual void Initialize (FSubsystemCollectionBase &Collection) override
virtual void Deinitialize () override
virtual bool InitializeAudioIO ()
virtual void DeinitializeAudioIO ()
void BuildFFTIOData (uint32 PeriodSizeInFrames, ma_format Format, uint32 SampleRate, uint32 Channels)
void DeinitializeFFT ()
virtual ma_decoderGetPlaybackDecoder () const
virtual ma_encoderGetCaptureEncoder () const
void GetDeviceInfo (EAudioIOType AudioIOType, FString FindDeviceName)

Protected Attributes

bool bActivated = false
bool bIsProcessingFFT = false
FCriticalSection SamplerRegistrationMutex
TArray< UObject * > RegisteredSamplers
ma_device_idpDeviceID = NULL
 Pointer to the selected device ID.
ma_device_infopPlaybackDeviceInfos = nullptr
 Playback device information.
ma_device_infopCaptureDeviceInfos = nullptr
 Capture device information.
ma_uint32 playbackDeviceCount = 0
 Number of playback devices found.
ma_uint32 captureDeviceCount = 0
 Number of capture devices found.
FFFTIOData CachedFFTIOData
 Cached FFT IO data.
FAudioIOConfig CachedAudioIOConfig
 Cached audio IO configuration.

Detailed Description

Base class for Audio IO functionality in ShaderTech.

Base class for Audio IO functionality in ShaderTech.

Constructor & Destructor Documentation

◆ UST_AudioIOBase()

UST_AudioIOBase::UST_AudioIOBase ( )

Sets default values for this actor's properties.

◆ ~UST_AudioIOBase()

UST_AudioIOBase::~UST_AudioIOBase ( )

Default destructor.

Member Function Documentation

◆ Activate()

bool UST_AudioIOBase::Activate ( )

Activates the audio IO.

◆ BuildFFTIOData()

void UST_AudioIOBase::BuildFFTIOData ( uint32 PeriodSizeInFrames,
ma_format Format,
uint32 SampleRate,
uint32 Channels )
protected

Builds FFT IO data from device parameters.

Parameters
PeriodSizeInFramesSize of a period in frames.
FormatAudio data format.
SampleRateSample rate of the audio.
ChannelsNumber of audio channels.

◆ ContainsInterface()

template<typename InterfaceType>
bool UST_AudioIOBase::ContainsInterface ( ) const
inline

Checks if a registered interface type exists.

Returns
true if the interface exists, false otherwise.

◆ Deactivate()

void UST_AudioIOBase::Deactivate ( )

Deactivates the audio IO.

◆ DeinitializeAudioIO()

void UST_AudioIOBase::DeinitializeAudioIO ( )
protectedvirtual

◆ DeinitializeFFT()

void UST_AudioIOBase::DeinitializeFFT ( )
protected

Deinitializes FFT data and processing.

◆ DeregisterSampler()

void UST_AudioIOBase::DeregisterSampler ( UObject * Sampler,
bool bZeroSamplersDeactivates = false )

Deregisters a sampler from the audio IO system.

Parameters
SamplerThe sampler object to deregister.
bZeroSamplersDeactivatesWhether deactivation should occur when no samplers remain.

◆ GetAudioFormat()

EST_SampleFormat UST_AudioIOBase::GetAudioFormat ( ) const
inlinevirtual

Returns the current audio format.

Returns
the current audio format.

Reimplemented in UST_AudioIOCaptureBase, and UST_AudioIOPlaybackBase.

◆ GetAudioIOConfig()

FAudioIOConfig UST_AudioIOBase::GetAudioIOConfig ( ) const
inline

Returns the current Audio IO configuration.

◆ GetAudioIOType()

EAudioIOType UST_AudioIOBase::GetAudioIOType ( ) const
inlinevirtual

◆ GetCaptureEncoder()

ma_encoder * UST_AudioIOBase::GetCaptureEncoder ( ) const
inlineprotectedvirtual

Returns a pointer to the capture encoder, if any.

Reimplemented in UST_AudioIOCaptureBase.

◆ GetDeviceInfo()

void UST_AudioIOBase::GetDeviceInfo ( EAudioIOType AudioIOType,
FString FindDeviceName )
protected

Retrieves device information for a given Audio IO type.

Parameters
AudioIOTypeThe type of audio IO device.
FindDeviceNameThe device name to search for.

◆ GetFFTIOData()

FFFTIOData UST_AudioIOBase::GetFFTIOData ( ) const
inline

Returns the current FFT IO data.

◆ GetIOId()

FIntPoint UST_AudioIOBase::GetIOId ( ) const
inline

Returns the IO Id used for identification purposes.

◆ GetPlaybackDecoder()

ma_decoder * UST_AudioIOBase::GetPlaybackDecoder ( ) const
inlineprotectedvirtual

Returns a pointer to the playback decoder, if any.

Reimplemented in UST_AudioIOPlaybackBase.

◆ InitializeAudioIO()

bool UST_AudioIOBase::InitializeAudioIO ( )
protectedvirtual

Initializes the audio IO.

Returns
true if successful, false otherwise.

Reimplemented in UST_AudioCaptureLoopback, UST_AudioCaptureMicrophone, UST_AudioPlaybackEnginePlayer, UST_AudioPlaybackPlayer, and UST_AudioPlaybackWaveform.

◆ MA_DataOrganiser()

void UST_AudioIOBase::MA_DataOrganiser ( ma_device * pDevice,
void * pSamples,
uint64 PeriodSizeInFrames,
ma_format Format,
uint32 Channels )
static

Miniaudio callback function to organize audio data.

Parameters
pDeviceThe audio device.
pSamplesThe buffer of samples.
PeriodSizeInFramesThe size of the period in frames.
FormatThe sample format.
ChannelsThe number of audio channels.

◆ RegisterSampler()

bool UST_AudioIOBase::RegisterSampler ( UObject * Sampler,
bool bSamplerActivates = false )

Registers a sampler for the audio IO system.

Parameters
SamplerThe sampler object to register.
bSamplerActivatesWhether the sampler should cause activation.

Member Data Documentation

◆ AudioBufferLock

FCriticalSection UST_AudioIOBase::AudioBufferLock

Critical section for thread-safe audio buffer operations.

◆ bActivated

bool UST_AudioIOBase::bActivated = false
protected

Whether the audio IO system is activated.

◆ bIsProcessingFFT

bool UST_AudioIOBase::bIsProcessingFFT = false
protected

Whether the FFT processing is currently running.

◆ BufferCount

uint32 UST_AudioIOBase::BufferCount = 2
staticconstexpr

Number of buffers for double buffering.

◆ CurrentAudioBuffer

void* UST_AudioIOBase::CurrentAudioBuffer = nullptr

Pointer to the currently active audio buffer.

◆ OnAmplitudesReady

FOnAmplitudesReady UST_AudioIOBase::OnAmplitudesReady

Event triggered when amplitudes are ready.

◆ OnAudioIOStatusChanged

FOnAudioIOStatusChanged UST_AudioIOBase::OnAudioIOStatusChanged

Event triggered when audio IO activation status changes.

◆ OnBeatDetected

FOnBeatDetected UST_AudioIOBase::OnBeatDetected

Event triggered when beats are detected.

◆ OnFrequencyBandsReady

FOnFrequencyBandsReady UST_AudioIOBase::OnFrequencyBandsReady

Event triggered when frequency bands are ready.

◆ OnPitchesReady

FOnPitchesReady UST_AudioIOBase::OnPitchesReady

Event triggered when pitches are ready.

◆ OnRawMagnitudesReady

FOnRawMagnitudesReady UST_AudioIOBase::OnRawMagnitudesReady

Event triggered when raw magnitudes are ready.

◆ ReadIndex

std::atomic<uint32> UST_AudioIOBase::ReadIndex

Index to indicate which buffer the FFT thread reads.

◆ RegisteredSamplers

TArray<UObject*> UST_AudioIOBase::RegisteredSamplers
protected

Array of registered sampler objects.

◆ SampledAudioBuffers

void* UST_AudioIOBase::SampledAudioBuffers[BufferCount] = { nullptr, nullptr }

Array of sampled audio buffers.

◆ SamplerRegistrationMutex

FCriticalSection UST_AudioIOBase::SamplerRegistrationMutex
protected

Ensure the registration and deregistration of samplers is thread safe.

◆ WriteIndex

std::atomic<uint32> UST_AudioIOBase::WriteIndex

Index to indicate which buffer miniaudio writes to.


The documentation for this class was generated from the following files:
  • H:/Games/Unreal/Aaron/FunWithShaders/Plugins/ST_VJMaster/Source/ST_AudioProcessing/Public/IO/Base/ST_AudioIOBase.h
  • H:/Games/Unreal/Aaron/FunWithShaders/Plugins/ST_VJMaster/Source/ST_AudioProcessing/Private/IO/Base/ST_AudioIOBase.cpp