VJ Master 1.0
Real-time audio analysis and visualisation.
Loading...
Searching...
No Matches
ST_AudioIOLib.h
1// Copyright (c) 2025 Aaron Trotter (ShaderTech). All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
6#include "RenderGraphUtils.h"
7#include "RenderGraphBuilder.h"
8#include "GlobalShader.h"
9#include "RenderGraphResources.h"
10#include "RenderGraphFwd.h"
11#include "RenderGraphDefinitions.h"
12
13#define AudioIO_Items 12
14#define AudioIO_Items_Active 0
15#define AudioIO_Items_Order 1
16#define AudioIO_Items_NumChannels 2
17#define AudioIO_Items_NumFrequencyBands 3
18#define AudioIO_Items_FrequencyBandHistorySize 4
19#define AudioIO_Items_FrequencyBandsStartIndex 5
20#define AudioIO_Items_AmpltitudeHistorySize 6
21#define AudioIO_Items_AmplitudesStartIndex 7
22#define AudioIO_Items_PitchHistorySize 8
23#define AudioIO_Items_PitchesStartIndex 9
24#define AudioIO_Items_BeatHistorySize 10
25#define AudioIO_Items_BeatsStartIndex 11
26
31{
33 uint32 IODataSize = 0;
34
37
39 uint32 amplitudesLength = 0;
40
42 uint32 pitchesLength = 0;
43
45 uint32 beatsLength = 0;
46
48 TArray<uint32> IOData;
49
51 TArray<float> frequencyBands;
52
54 TArray<float> amplitudes;
55
57 TArray<float> pitches;
58
60 TArray<float> beats;
61
67
70 {
71 IODataSize = 0;
74 pitchesLength = 0;
75 beatsLength = 0;
76 IOData.Empty();
77 frequencyBands.Empty();
78 amplitudes.Empty();
79 pitches.Empty();
80 beats.Empty();
81 }
82};
83
88{
90 uint32 IODataSize = 0;
91
94
96 uint32 amplitudesLength = 0;
97
99 uint32 pitchesLength = 0;
100
102 uint32 beatsLength = 0;
103
105 TArray<uint32> IOData;
106
108 TArray<float> frequencyBands;
109
111 TArray<float> amplitudes;
112
114 TArray<float> pitches;
115
117 TArray<float> beats;
118
124
131 {
132 ReleaseData();
133 IOData = InstanceData_GT.IOData;
134 frequencyBands = InstanceData_GT.frequencyBands;
135 amplitudes = InstanceData_GT.amplitudes;
136 pitches = InstanceData_GT.pitches;
137 beats = InstanceData_GT.beats;
138 IODataSize = InstanceData_GT.IODataSize;
140 amplitudesLength = InstanceData_GT.amplitudesLength;
141 pitchesLength = InstanceData_GT.pitchesLength;
142 beatsLength = InstanceData_GT.beatsLength;
143 }
144
147 {
148 IODataSize = 0;
151 pitchesLength = 0;
152 beatsLength = 0;
153 IOData.Empty();
154 frequencyBands.Empty();
155 amplitudes.Empty();
156 pitches.Empty();
157 beats.Empty();
158 }
159};
160
165{
167 uint32 IODataSize = 0;
168
171
174
176 uint32 pitchesLength = 0;
177
179 uint32 beatsLength = 0;
180
182 TRefCountPtr<FRDGPooledBuffer> ReadIODataPooled = nullptr;
183
185 FRDGBufferRef ReadIODataScopedRef = nullptr;
186
188 FRDGBufferSRVRef ReadIODataScopedSRV = nullptr;
189
191 TRefCountPtr<FRDGPooledBuffer> ReadFrequencyBandsPooled = nullptr;
192
194 FRDGBufferRef ReadFrequencyBandsScopedRef = nullptr;
195
197 FRDGBufferSRVRef ReadFrequencyBandsScopedSRV = nullptr;
198
200 TRefCountPtr<FRDGPooledBuffer> ReadAmplitudesPooled = nullptr;
201
203 FRDGBufferRef ReadAmplitudesScopedRef = nullptr;
204
206 FRDGBufferSRVRef ReadAmplitudesScopedSRV = nullptr;
207
209 TRefCountPtr<FRDGPooledBuffer> ReadPitchesPooled = nullptr;
210
212 FRDGBufferRef ReadPitchesScopedRef = nullptr;
213
215 FRDGBufferSRVRef ReadPitchesScopedSRV = nullptr;
216
218 TRefCountPtr<FRDGPooledBuffer> ReadBeatsPooled = nullptr;
219
221 FRDGBufferRef ReadBeatsScopedRef = nullptr;
222
224 FRDGBufferSRVRef ReadBeatsScopedSRV = nullptr;
225
231
234 {
235 IODataSize = 0;
238 pitchesLength = 0;
239 beatsLength = 0;
240 ReadIODataPooled.SafeRelease();
241 ReadFrequencyBandsPooled.SafeRelease();
242 ReadAmplitudesPooled.SafeRelease();
243 ReadPitchesPooled.SafeRelease();
244 ReadBeatsPooled.SafeRelease();
245 }
246};
Struct that holds audio I/O buffers for the render thread, including scoped references and pooled buf...
Definition ST_AudioIOLib.h:165
TRefCountPtr< FRDGPooledBuffer > ReadFrequencyBandsPooled
Definition ST_AudioIOLib.h:191
FRDGBufferSRVRef ReadFrequencyBandsScopedSRV
Definition ST_AudioIOLib.h:197
FRDGBufferRef ReadBeatsScopedRef
Definition ST_AudioIOLib.h:221
void ReleaseData()
Definition ST_AudioIOLib.h:233
TRefCountPtr< FRDGPooledBuffer > ReadAmplitudesPooled
Definition ST_AudioIOLib.h:200
FRDGBufferSRVRef ReadBeatsScopedSRV
Definition ST_AudioIOLib.h:224
FRDGBufferRef ReadIODataScopedRef
Definition ST_AudioIOLib.h:185
uint32 amplitudesLength
Definition ST_AudioIOLib.h:173
FRDGBufferSRVRef ReadIODataScopedSRV
Definition ST_AudioIOLib.h:188
FRDGBufferRef ReadAmplitudesScopedRef
Definition ST_AudioIOLib.h:203
uint32 frequencyBandsLength
Definition ST_AudioIOLib.h:170
uint32 pitchesLength
Definition ST_AudioIOLib.h:176
FRDGBufferSRVRef ReadPitchesScopedSRV
Definition ST_AudioIOLib.h:215
uint32 IODataSize
Definition ST_AudioIOLib.h:167
FRDGBufferRef ReadPitchesScopedRef
Definition ST_AudioIOLib.h:212
TRefCountPtr< FRDGPooledBuffer > ReadPitchesPooled
Definition ST_AudioIOLib.h:209
uint32 beatsLength
Definition ST_AudioIOLib.h:179
FRDGBufferRef ReadFrequencyBandsScopedRef
Definition ST_AudioIOLib.h:194
TRefCountPtr< FRDGPooledBuffer > ReadIODataPooled
Definition ST_AudioIOLib.h:182
TRefCountPtr< FRDGPooledBuffer > ReadBeatsPooled
Definition ST_AudioIOLib.h:218
~FST_AudioIOBuffers_RenderThread()
Definition ST_AudioIOLib.h:227
FRDGBufferSRVRef ReadAmplitudesScopedSRV
Definition ST_AudioIOLib.h:206
Struct that holds audio I/O data for the game thread.
Definition ST_AudioIOLib.h:31
uint32 amplitudesLength
Definition ST_AudioIOLib.h:39
uint32 IODataSize
Definition ST_AudioIOLib.h:33
TArray< float > frequencyBands
Definition ST_AudioIOLib.h:51
void ReleaseData()
Definition ST_AudioIOLib.h:69
uint32 pitchesLength
Definition ST_AudioIOLib.h:42
TArray< float > beats
Definition ST_AudioIOLib.h:60
uint32 frequencyBandsLength
Definition ST_AudioIOLib.h:36
TArray< uint32 > IOData
Definition ST_AudioIOLib.h:48
uint32 beatsLength
Definition ST_AudioIOLib.h:45
~FST_AudioIOData_GameThread()
Definition ST_AudioIOLib.h:63
TArray< float > pitches
Definition ST_AudioIOLib.h:57
TArray< float > amplitudes
Definition ST_AudioIOLib.h:54
Struct that holds audio I/O data for the render thread.
Definition ST_AudioIOLib.h:88
void ReleaseData()
Definition ST_AudioIOLib.h:146
uint32 IODataSize
Definition ST_AudioIOLib.h:90
uint32 amplitudesLength
Definition ST_AudioIOLib.h:96
uint32 pitchesLength
Definition ST_AudioIOLib.h:99
void UpdateData(FST_AudioIOData_GameThread &InstanceData_GT)
Definition ST_AudioIOLib.h:130
~FST_AudioIOData_RenderThread()
Definition ST_AudioIOLib.h:120
TArray< float > pitches
Definition ST_AudioIOLib.h:114
TArray< uint32 > IOData
Definition ST_AudioIOLib.h:105
uint32 beatsLength
Definition ST_AudioIOLib.h:102
TArray< float > frequencyBands
Definition ST_AudioIOLib.h:108
TArray< float > beats
Definition ST_AudioIOLib.h:117
TArray< float > amplitudes
Definition ST_AudioIOLib.h:111
uint32 frequencyBandsLength
Definition ST_AudioIOLib.h:93