VJ Master 1.3
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};
224
228USTRUCT(BlueprintType)
230{
231 GENERATED_BODY()
232
233public:
238 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "DMX", meta = (SessionRestartRequired))
239 FString PatchName = "Matrix_3x3";
240};
241
245USTRUCT(BlueprintType)
247{
248 GENERATED_BODY()
249
250public:
255 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Material", meta = (SessionRestartRequired))
256 TSoftObjectPtr<class UMaterialInterface> LEDMaterial = nullptr;
257
262 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MIDI", meta = (SessionRestartRequired))
263 FName DeviceName = "";
264
268 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MIDI", meta = (SessionRestartRequired))
270};
271
275USTRUCT(BlueprintType)
277{
278 GENERATED_BODY()
279
280public:
282 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Niagara", meta = (SessionRestartRequired))
283 bool bNiagaraReadback = false;
284};
285
286#if WITH_EDITOR
291DECLARE_MULTICAST_DELEGATE_TwoParams(FOnPostEditChangePropertyDelegate_AVS, UObject*, FPropertyChangedEvent&);
292#endif
293
302UCLASS(Config = ST_VJMaster, DefaultConfig, meta = (DisplayName = "ST Audio Visualisation"))
303class ST_AUDIOVISUALISATION_API UST_AudioVisSettings : public UDeveloperSettings
304{
305 GENERATED_BODY()
306
307public:
312 UFUNCTION(BlueprintPure, Category = "ShaderTech|AudioVisualisation")
314 {
315 return GetDefault<UST_AudioVisSettings>();
316 }
317
318#if WITH_EDITOR
320 inline static FOnPostEditChangePropertyDelegate_AVS OnPostEditChangeProperty;
321
326 virtual void PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent) override
327 {
328 Super::PostEditChangeProperty(PropertyChangedEvent);
329
330 OnPostEditChangeProperty.Broadcast(this, PropertyChangedEvent);
331 }
332#endif
333
339 UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "Audio", meta = (Bitmask, BitmaskEnum = "/Script/ST_AudioProcessing.EAudioIOType", EditorRestartRequired))
341
348 UPROPERTY(config, EditAnywhere, BlueprintReadOnly, Category = "Audio", meta = (EditorRestartRequired))
350
354 UPROPERTY(config, EditAnywhere, BlueprintReadOnly, Category = "Display")
356
360 UPROPERTY(config, EditAnywhere, BlueprintReadOnly, Category = "Display")
362
366 UPROPERTY(config, EditAnywhere, BlueprintReadOnly, Category = "Display")
368
372 UPROPERTY(config, EditAnywhere, BlueprintReadOnly, Category = "Vis")
374
378 UPROPERTY(config, EditAnywhere, BlueprintReadOnly, Category = "Vis")
380
384 UPROPERTY(config, EditAnywhere, BlueprintReadOnly, Category = "Vis")
386
390 UPROPERTY(config, EditAnywhere, BlueprintReadOnly, Category = "Vis")
392
396 UPROPERTY(config, EditAnywhere, BlueprintReadOnly, Category = "Vis")
398
399protected:
404 virtual FName GetCategoryName() const override
405 {
406 return TEXT("ShaderTech");
407 }
408};
Audio Visualisation Settings class used for managing audio visualisation parameters.
Definition ST_AudioVisSettings.h:304
FPitchWaveformDisplay PitchWaveformDisplay
Definition ST_AudioVisSettings.h:367
static const UST_AudioVisSettings * GetST_AudioVisSettings()
Definition ST_AudioVisSettings.h:313
FVisDMX VisDMX
Definition ST_AudioVisSettings.h:385
bool bBindAudioSceneToWorld
Definition ST_AudioVisSettings.h:349
FVisNiagaraFrequency VisNiagaraFrequency
Definition ST_AudioVisSettings.h:397
FVisMPCData VisMPCData
Definition ST_AudioVisSettings.h:379
int32 Material_AudioIOs
Definition ST_AudioVisSettings.h:340
FVisMIDIControlled VisMIDIControlled
Definition ST_AudioVisSettings.h:391
FVisAudioReactiveBoidsData VisAudioReactiveBoidsData
Definition ST_AudioVisSettings.h:373
FFreqWaveformDisplay FreqWaveformDisplay
Definition ST_AudioVisSettings.h:355
FAmpWaveformDisplay AmpWaveformDisplay
Definition ST_AudioVisSettings.h:361
virtual FName GetCategoryName() const override
Definition ST_AudioVisSettings.h:404
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:230
FString PatchName
Definition ST_AudioVisSettings.h:239
Structure for material and MIDI-controlled visualization settings.
Definition ST_AudioVisSettings.h:247
FName DeviceName
Definition ST_AudioVisSettings.h:263
bool bUnregisterOnEndPlay
Definition ST_AudioVisSettings.h:269
TSoftObjectPtr< class UMaterialInterface > LEDMaterial
Definition ST_AudioVisSettings.h:256
Structure containing data for Material Parameter Collection (MPC) visualization and related audio set...
Definition ST_AudioVisSettings.h:175
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
Structure for Niagara frequency settings in the visualization.
Definition ST_AudioVisSettings.h:277
bool bNiagaraReadback
Definition ST_AudioVisSettings.h:283
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