VJ Master 1.0
Real-time audio analysis and visualisation.
Loading...
Searching...
No Matches
ST_AudioVisSettings.h
1// Copyright (c) 2025 Aaron Trotter (ShaderTech). All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
6#include "Engine/DeveloperSettings.h"
7#include "Materials/MaterialParameterCollection.h"
8#include "Main/ST_AudioControlSettings.h"
9#include "Data/ST_AudioReactiveBoidsLib.h"
10#include "NiagaraSystem.h"
11#include "ST_AudioVisSettings.generated.h"
12
16UENUM(BlueprintType)
17enum class ESpectrumColours : uint8
18{
20 Solid UMETA(DisplayName = "Solid"),
21
23 Random UMETA(DisplayName = "Random"),
24
26 RandomRange UMETA(DisplayName = "RandomRange"),
27
29 Wheel UMETA(DisplayName = "Wheel"),
30
32 WheelMapped UMETA(DisplayName = "WheelMapped"),
33
35 WheelIntensity UMETA(DisplayName = "WheelIntensity"),
36
38 Gradient UMETA(DisplayName = "Gradient"),
39
41 GradientMapped UMETA(DisplayName = "GradientMapped"),
42
44 GradientIntensity UMETA(DisplayName = "GradientIntensity")
45};
46
50UENUM(BlueprintType)
51enum class EAudioMeasurement : uint8
52{
54 Frequency UMETA(DisplayName = "Frequency"),
55
57 Amplitude UMETA(DisplayName = "Amplitude"),
58
60 Pitch UMETA(DisplayName = "Pitch")
61};
62
66USTRUCT(BlueprintType)
68{
69 GENERATED_BODY()
70
71public:
73 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Audio")
74 FLinearColor ColourSolid = FLinearColor::White;
75
77 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Audio")
78 FLinearColor ColourRange1 = FLinearColor::White;
79
81 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Audio")
82 FLinearColor ColourRange2 = FLinearColor::White;
83};
84
88USTRUCT(BlueprintType)
90{
91 GENERATED_BODY()
92
93public:
95 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Audio")
97};
98
102USTRUCT(BlueprintType)
104{
105 GENERATED_BODY()
106
107public:
109 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Audio")
111};
112
116USTRUCT(BlueprintType)
118{
119 GENERATED_BODY()
120
121public:
123 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Audio")
125};
126
130USTRUCT(BlueprintType)
132{
133 GENERATED_BODY()
134
135public:
137 UPROPERTY(config, EditAnywhere, BlueprintReadOnly, Category = "Boids")
139
141 UPROPERTY(config, EditAnywhere, BlueprintReadOnly, Category = "Boids")
143
145 UPROPERTY(config, EditAnywhere, BlueprintReadOnly, Category = "Boids")
147
152 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Boids", meta = (SessionRestartRequired))
153 TSoftObjectPtr<class UMaterialInterface> BoidsMaterial = nullptr;
154
159 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Boids", meta = (SessionRestartRequired))
160 EAudioIOType ReactiveMaterialAmplitude_IO = EAudioIOType::None;
161
166 UPROPERTY(config, EditAnywhere, BlueprintReadOnly, Category = "Boids", meta = (SessionRestartRequired))
167 TSoftObjectPtr<UNiagaraSystem> BoidsEmitterVFX = nullptr;
168};
169
173USTRUCT(BlueprintType)
175{
176 GENERATED_BODY()
177
178public:
183 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Material", meta = (SessionRestartRequired))
184 UMaterialParameterCollection* MaterialParameterCollection = nullptr;
185
187 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Audio")
189
191 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Audio")
193
195 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Audio")
197
199 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Audio")
200 float TimeMultiplier = 1.0f;
201
203 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Audio")
205
210 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Audio", meta = (ClampMin = "0.0", ClampMax = "1.0", UIMin = "0.0", UIMax = "1.0"))
211 float AmplitudeSmoothing = 1.0f;
212
214 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Audio")
215 float PitchMultiplier = 1.0f;
216
221 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Audio", meta = (ClampMin = "0.0", ClampMax = "1.0", UIMin = "0.0", UIMax = "1.0"))
222 float PitchSmoothing = 1.0f;
223
228 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Niagara", meta = (SessionRestartRequired, ClampMin = "0.0", ClampMax = "1.0", UIMin = "0.0", UIMax = "1.0"))
229 float BeatSmoothing = 0.5f;
230
235 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Niagara", meta = (SessionRestartRequired, ClampMin = "0.0", UIMin = "0.0"))
236 float BeatCooldownTime = 0.25f;
237};
238
242USTRUCT(BlueprintType)
244{
245 GENERATED_BODY()
246
247public:
252 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "DMX", meta = (SessionRestartRequired))
253 FString PatchName = "Matrix_3x3";
254};
255
259USTRUCT(BlueprintType)
261{
262 GENERATED_BODY()
263
264public:
269 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Material", meta = (SessionRestartRequired))
270 TSoftObjectPtr<class UMaterialInterface> LEDMaterial = nullptr;
271
276 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MIDI", meta = (SessionRestartRequired))
277 FName DeviceName = "";
278
282 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MIDI", meta = (SessionRestartRequired))
284};
285
289USTRUCT(BlueprintType)
291{
292 GENERATED_BODY()
293
294public:
296 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Niagara", meta = (SessionRestartRequired))
297 bool bNiagaraReadback = false;
298};
299
303USTRUCT(BlueprintType)
305{
306 GENERATED_BODY()
307
308public:
313 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Niagara", meta = (SessionRestartRequired, ClampMin = "0.0", ClampMax = "1.0", UIMin = "0.0", UIMax = "1.0"))
314 float SmoothingFactor = 0.5f;
315
320 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Niagara", meta = (SessionRestartRequired, ClampMin = "0.0", UIMin = "0.0"))
321 float BeatCooldownTime = 0.25f;
322};
323
324#if WITH_EDITOR
329DECLARE_MULTICAST_DELEGATE_TwoParams(FOnPostEditChangePropertyDelegate_AVS, UObject*, FPropertyChangedEvent&);
330#endif
331
340UCLASS(Config = ST_VJMaster, DefaultConfig, meta = (DisplayName = "ST Audio Visualisation"))
341class ST_AUDIOVISUALISATION_API UST_AudioVisSettings : public UDeveloperSettings
342{
343 GENERATED_BODY()
344
345public:
350 UFUNCTION(BlueprintPure, Category = "ShaderTech|AudioVisualisation")
352 {
353 return GetDefault<UST_AudioVisSettings>();
354 }
355
356#if WITH_EDITOR
358 inline static FOnPostEditChangePropertyDelegate_AVS OnPostEditChangeProperty;
359
364 virtual void PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent) override
365 {
366 Super::PostEditChangeProperty(PropertyChangedEvent);
367
368 OnPostEditChangeProperty.Broadcast(this, PropertyChangedEvent);
369 }
370#endif
371
377 UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Audio", meta = (Bitmask, BitmaskEnum = "/Script/ST_AudioProcessing.EAudioIOType", EditorRestartRequired))
379
386 UPROPERTY(config, EditAnywhere, BlueprintReadOnly, Category = "Audio", meta = (EditorRestartRequired))
388
392 UPROPERTY(config, EditAnywhere, BlueprintReadOnly, Category = "Display")
394
398 UPROPERTY(config, EditAnywhere, BlueprintReadOnly, Category = "Display")
400
404 UPROPERTY(config, EditAnywhere, BlueprintReadOnly, Category = "Display")
406
410 UPROPERTY(config, EditAnywhere, BlueprintReadOnly, Category = "Vis")
412
416 UPROPERTY(config, EditAnywhere, BlueprintReadOnly, Category = "Vis")
418
422 UPROPERTY(config, EditAnywhere, BlueprintReadOnly, Category = "Vis")
424
428 UPROPERTY(config, EditAnywhere, BlueprintReadOnly, Category = "Vis")
430
434 UPROPERTY(config, EditAnywhere, BlueprintReadOnly, Category = "Vis")
436
440 UPROPERTY(config, EditAnywhere, BlueprintReadOnly, Category = "Vis")
442
443protected:
448 virtual FName GetCategoryName() const override
449 {
450 return TEXT("ShaderTech");
451 }
452};
Audio Visualisation Settings class used for managing audio visualisation parameters.
Definition ST_AudioVisSettings.h:342
FPitchWaveformDisplay PitchWaveformDisplay
Definition ST_AudioVisSettings.h:405
static const UST_AudioVisSettings * GetST_AudioVisSettings()
Definition ST_AudioVisSettings.h:351
FVisDMX VisDMX
Definition ST_AudioVisSettings.h:429
bool bBindAudioSceneToWorld
Definition ST_AudioVisSettings.h:387
FVisNiagaraBeatDetection VisBeatDetection
Definition ST_AudioVisSettings.h:417
FVisNiagaraFrequency VisNiagaraFrequency
Definition ST_AudioVisSettings.h:441
FVisMPCData VisMPCData
Definition ST_AudioVisSettings.h:423
int32 Material_AudioIOs
Definition ST_AudioVisSettings.h:378
FVisMIDIControlled VisMIDIControlled
Definition ST_AudioVisSettings.h:435
FVisAudioReactiveBoidsData VisAudioReactiveBoidsData
Definition ST_AudioVisSettings.h:411
FFreqWaveformDisplay FreqWaveformDisplay
Definition ST_AudioVisSettings.h:393
FAmpWaveformDisplay AmpWaveformDisplay
Definition ST_AudioVisSettings.h:399
virtual FName GetCategoryName() const override
Definition ST_AudioVisSettings.h:448
Structure representing the amplitude waveform display settings for audio visualizations.
Definition ST_AudioVisSettings.h:104
FWaveformDisplay display
Definition ST_AudioVisSettings.h:110
Structure representing the frequency waveform display settings for audio visualizations.
Definition ST_AudioVisSettings.h:90
FWaveformDisplay display
Definition ST_AudioVisSettings.h:96
Structure representing the pitch waveform display settings for audio visualizations.
Definition ST_AudioVisSettings.h:118
FWaveformDisplay display
Definition ST_AudioVisSettings.h:124
Struct to hold constant parameters for VJ boids, such as the number of boids.
Definition ST_AudioReactiveBoidsLib.h:131
Struct to hold dynamic parameters for VJ boids, such as simulation speed, max speed,...
Definition ST_AudioReactiveBoidsLib.h:145
Struct to hold reactive dynamic parameters for boids, such as audio-reactive noise multipliers and fr...
Definition ST_AudioReactiveBoidsLib.h:196
Structure representing the data for reactive boids in audio visualizations.
Definition ST_AudioVisSettings.h:132
FST_VJ_ReactiveBoidDynamicParameters ReactiveBoidDynamicParameters
Definition ST_AudioVisSettings.h:146
TSoftObjectPtr< UNiagaraSystem > BoidsEmitterVFX
Definition ST_AudioVisSettings.h:167
EAudioIOType ReactiveMaterialAmplitude_IO
Definition ST_AudioVisSettings.h:160
FST_VJ_BoidDynamicParameters BoidDynamicParameters
Definition ST_AudioVisSettings.h:142
FST_VJ_BoidConstantParameters BoidConstantParameters
Definition ST_AudioVisSettings.h:138
TSoftObjectPtr< class UMaterialInterface > BoidsMaterial
Definition ST_AudioVisSettings.h:153
Structure for DMX settings, including patch name.
Definition ST_AudioVisSettings.h:244
FString PatchName
Definition ST_AudioVisSettings.h:253
Structure for material and MIDI-controlled visualization settings.
Definition ST_AudioVisSettings.h:261
FName DeviceName
Definition ST_AudioVisSettings.h:277
bool bUnregisterOnEndPlay
Definition ST_AudioVisSettings.h:283
TSoftObjectPtr< class UMaterialInterface > LEDMaterial
Definition ST_AudioVisSettings.h:270
Structure containing data for Material Parameter Collection (MPC) visualization and related audio set...
Definition ST_AudioVisSettings.h:175
float BeatCooldownTime
Definition ST_AudioVisSettings.h:236
float PitchSmoothing
Definition ST_AudioVisSettings.h:222
UMaterialParameterCollection * MaterialParameterCollection
Definition ST_AudioVisSettings.h:184
float PitchMultiplier
Definition ST_AudioVisSettings.h:215
int32 SampleFrequencyBand
Definition ST_AudioVisSettings.h:188
float AmplitudeMultiplier
Definition ST_AudioVisSettings.h:204
float TimeMultiplier
Definition ST_AudioVisSettings.h:200
float AmplitudeSmoothing
Definition ST_AudioVisSettings.h:211
int32 SamplePitchHistoryIndex
Definition ST_AudioVisSettings.h:196
int32 SampleAmplitudeHistoryIndex
Definition ST_AudioVisSettings.h:192
float BeatSmoothing
Definition ST_AudioVisSettings.h:229
Structure for Niagara beat detection settings in the visualization.
Definition ST_AudioVisSettings.h:305
float BeatCooldownTime
Definition ST_AudioVisSettings.h:321
float SmoothingFactor
Definition ST_AudioVisSettings.h:314
Structure for Niagara frequency settings in the visualization.
Definition ST_AudioVisSettings.h:291
bool bNiagaraReadback
Definition ST_AudioVisSettings.h:297
Structure representing the waveform display settings for audio visualizations.
Definition ST_AudioVisSettings.h:68
FLinearColor ColourSolid
Definition ST_AudioVisSettings.h:74
FLinearColor ColourRange2
Definition ST_AudioVisSettings.h:82
FLinearColor ColourRange1
Definition ST_AudioVisSettings.h:78