aboutsummaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorChris Robinson <[email protected]>2023-12-21 01:10:46 -0800
committerChris Robinson <[email protected]>2023-12-21 01:10:46 -0800
commit9ccddf8fc6ca11dbb50af0f063b05e0d419616c0 (patch)
tree15379c1a9c5c565829f628bdfc47ab901fd14ab2 /core
parent8fad6a395c21e6d285590c34eb81f5af492cf4ac (diff)
Use proper structs for EffectProps
Diffstat (limited to 'core')
-rw-r--r--core/effects/base.h250
1 files changed, 132 insertions, 118 deletions
diff --git a/core/effects/base.h b/core/effects/base.h
index 7d8770fb..3852731a 100644
--- a/core/effects/base.h
+++ b/core/effects/base.h
@@ -19,21 +19,21 @@ struct RealMixParams;
/** Target gain for the reverb decay feedback reaching the decay time. */
-constexpr float ReverbDecayGain{0.001f}; /* -60 dB */
+inline constexpr float ReverbDecayGain{0.001f}; /* -60 dB */
-constexpr float ReverbMaxReflectionsDelay{0.3f};
-constexpr float ReverbMaxLateReverbDelay{0.1f};
+inline constexpr float ReverbMaxReflectionsDelay{0.3f};
+inline constexpr float ReverbMaxLateReverbDelay{0.1f};
enum class ChorusWaveform {
Sinusoid,
Triangle
};
-constexpr float ChorusMaxDelay{0.016f};
-constexpr float FlangerMaxDelay{0.004f};
+inline constexpr float ChorusMaxDelay{0.016f};
+inline constexpr float FlangerMaxDelay{0.004f};
-constexpr float EchoMaxDelay{0.207f};
-constexpr float EchoMaxLRDelay{0.404f};
+inline constexpr float EchoMaxDelay{0.207f};
+inline constexpr float EchoMaxLRDelay{0.404f};
enum class FShifterDirection {
Down,
@@ -59,118 +59,132 @@ enum class VMorpherWaveform {
Sawtooth
};
+struct ReverbProps {
+ float Density;
+ float Diffusion;
+ float Gain;
+ float GainHF;
+ float GainLF;
+ float DecayTime;
+ float DecayHFRatio;
+ float DecayLFRatio;
+ float ReflectionsGain;
+ float ReflectionsDelay;
+ std::array<float,3> ReflectionsPan;
+ float LateReverbGain;
+ float LateReverbDelay;
+ std::array<float,3> LateReverbPan;
+ float EchoTime;
+ float EchoDepth;
+ float ModulationTime;
+ float ModulationDepth;
+ float AirAbsorptionGainHF;
+ float HFReference;
+ float LFReference;
+ float RoomRolloffFactor;
+ bool DecayHFLimit;
+};
+
+struct AutowahProps {
+ float AttackTime;
+ float ReleaseTime;
+ float Resonance;
+ float PeakGain;
+};
+
+struct ChorusProps {
+ ChorusWaveform Waveform;
+ int Phase;
+ float Rate;
+ float Depth;
+ float Feedback;
+ float Delay;
+};
+
+struct CompressorProps {
+ bool OnOff;
+};
+
+struct DistortionProps {
+ float Edge;
+ float Gain;
+ float LowpassCutoff;
+ float EQCenter;
+ float EQBandwidth;
+};
+
+struct EchoProps {
+ float Delay;
+ float LRDelay;
+
+ float Damping;
+ float Feedback;
+
+ float Spread;
+};
+
+struct EqualizerProps {
+ float LowCutoff;
+ float LowGain;
+ float Mid1Center;
+ float Mid1Gain;
+ float Mid1Width;
+ float Mid2Center;
+ float Mid2Gain;
+ float Mid2Width;
+ float HighCutoff;
+ float HighGain;
+};
+
+struct FshiterProps {
+ float Frequency;
+ FShifterDirection LeftDirection;
+ FShifterDirection RightDirection;
+};
+
+struct ModulatorProps {
+ float Frequency;
+ float HighPassCutoff;
+ ModulatorWaveform Waveform;
+};
+
+struct PshifterProps {
+ int CoarseTune;
+ int FineTune;
+};
+
+struct VmorpherProps {
+ float Rate;
+ VMorpherPhenome PhonemeA;
+ VMorpherPhenome PhonemeB;
+ int PhonemeACoarseTuning;
+ int PhonemeBCoarseTuning;
+ VMorpherWaveform Waveform;
+};
+
+struct DedicatedProps {
+ float Gain;
+};
+
+struct ConvolutionProps {
+ std::array<float,3> OrientAt;
+ std::array<float,3> OrientUp;
+};
+
union EffectProps {
- struct {
- float Density;
- float Diffusion;
- float Gain;
- float GainHF;
- float GainLF;
- float DecayTime;
- float DecayHFRatio;
- float DecayLFRatio;
- float ReflectionsGain;
- float ReflectionsDelay;
- std::array<float,3> ReflectionsPan;
- float LateReverbGain;
- float LateReverbDelay;
- std::array<float,3> LateReverbPan;
- float EchoTime;
- float EchoDepth;
- float ModulationTime;
- float ModulationDepth;
- float AirAbsorptionGainHF;
- float HFReference;
- float LFReference;
- float RoomRolloffFactor;
- bool DecayHFLimit;
- } Reverb;
-
- struct {
- float AttackTime;
- float ReleaseTime;
- float Resonance;
- float PeakGain;
- } Autowah;
-
- struct {
- ChorusWaveform Waveform;
- int Phase;
- float Rate;
- float Depth;
- float Feedback;
- float Delay;
- } Chorus; /* Also Flanger */
-
- struct {
- bool OnOff;
- } Compressor;
-
- struct {
- float Edge;
- float Gain;
- float LowpassCutoff;
- float EQCenter;
- float EQBandwidth;
- } Distortion;
-
- struct {
- float Delay;
- float LRDelay;
-
- float Damping;
- float Feedback;
-
- float Spread;
- } Echo;
-
- struct {
- float LowCutoff;
- float LowGain;
- float Mid1Center;
- float Mid1Gain;
- float Mid1Width;
- float Mid2Center;
- float Mid2Gain;
- float Mid2Width;
- float HighCutoff;
- float HighGain;
- } Equalizer;
-
- struct {
- float Frequency;
- FShifterDirection LeftDirection;
- FShifterDirection RightDirection;
- } Fshifter;
-
- struct {
- float Frequency;
- float HighPassCutoff;
- ModulatorWaveform Waveform;
- } Modulator;
-
- struct {
- int CoarseTune;
- int FineTune;
- } Pshifter;
-
- struct {
- float Rate;
- VMorpherPhenome PhonemeA;
- VMorpherPhenome PhonemeB;
- int PhonemeACoarseTuning;
- int PhonemeBCoarseTuning;
- VMorpherWaveform Waveform;
- } Vmorpher;
-
- struct {
- float Gain;
- } Dedicated;
-
- struct {
- std::array<float,3> OrientAt;
- std::array<float,3> OrientUp;
- } Convolution;
+ ReverbProps Reverb;
+ AutowahProps Autowah;
+ ChorusProps Chorus; /* Also Flanger */
+ CompressorProps Compressor;
+ DistortionProps Distortion;
+ EchoProps Echo;
+ EqualizerProps Equalizer;
+ FshiterProps Fshifter;
+ ModulatorProps Modulator;
+ PshifterProps Pshifter;
+ VmorpherProps Vmorpher;
+ DedicatedProps Dedicated;
+ ConvolutionProps Convolution;
};