You can also look in the code which defines the UPROPERTIES. I actually specified in many cases a UIMin/UIMax and ClampMin/ClampMax for most params. The UIMin specifies the range for the UI, but the Clamp specifies the true min/max. You have different ranges because of the 2 different input methods – one is a UI slider, but you can also enter values in by hand/typing. The UIMin/Max values are chosen for reasonable slider-style input but the clamps are the full range.
USTRUCT(BlueprintType)
struct SYNTHESIS_API FModularSynthPreset : public FTableRowBase
{
GENERATED_USTRUCT_BODY()
// Whether or not to allow multiple synth voices.
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Synth|Preset")
uint32 bEnablePolyphony : 1;
// What type of oscillator to use for oscillator 1
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Synth|Preset")
ESynth1OscType Osc1Type;
// The linear gain of oscillator 1 [0.0, 1.0]
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Synth|Preset", meta = (ClampMin = "0.0", ClampMax = "1.0", UIMin = "0.0", UIMax = "1.0"))
float Osc1Gain;
// The octave of oscillator 1. -8.0, 8.0]
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Synth|Preset", meta = (ClampMin = "-8.0", ClampMax = "8.0", UIMin = "-8.0", UIMax = "8.0"))
float Osc1Octave;
// The semi-tones of oscillator 1. -12.0, 12.0]
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Synth|Preset", meta = (ClampMin = "-12.0", ClampMax = "12.0", UIMin = "-12.0", UIMax = "12.0"))
float Osc1Semitones;
// The cents (hundreds of a semitone) of oscillator 1. -100.0, 100.0]
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Synth|Preset", meta = (ClampMin = "-100.0", ClampMax = "100.0", UIMin = "-100.0", UIMax = "100.0"))
float Osc1Cents;
// The pulsewidth of oscillator 1 (when using a square wave type oscillator). [0.0, 1.0]
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Synth|Preset", meta = (ClampMin = "0.0", ClampMax = "1.0", UIMin = "0.0", UIMax = "1.0"))
float Osc1PulseWidth;
// What type of oscillator to use for oscillator 2
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Synth|Preset")
ESynth1OscType Osc2Type;
// The linear gain of oscillator 2 [0.0, 1.0]
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Synth|Preset", meta = (ClampMin = "0.0", ClampMax = "1.0", UIMin = "0.0", UIMax = "1.0"))
float Osc2Gain;
// The octave of oscillator 2. -8.0, 8.0]
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Synth|Preset", meta = (ClampMin = "-8.0", ClampMax = "8.0", UIMin = "-8.0", UIMax = "8.0"))
float Osc2Octave;
// The semi-tones of oscillator 2. -12.0, 12.0]
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Synth|Preset", meta = (ClampMin = "-12.0", ClampMax = "12.0", UIMin = "-12.0", UIMax = "12.0"))
float Osc2Semitones;
// The cents (hundreds of a semitone) of oscillator 2. -100.0, 100.0]
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Synth|Preset", meta = (ClampMin = "-100.0", ClampMax = "100.0", UIMin = "-100.0", UIMax = "100.0"))
float Osc2Cents;
// The pulsewidth of oscillator 2 (when using a square wave type oscillator). [0.0, 1.0]
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Synth|Preset", meta = (ClampMin = "0.0", ClampMax = "1.0", UIMin = "0.0", UIMax = "1.0"))
float Osc2PulseWidth;
// The amount of portamento to use, which is the amount of pitch sliding from current note to next [0.0, 1.0]
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Synth|Preset", meta = (ClampMin = "0.0", ClampMax = "1.0", UIMin = "0.0", UIMax = "1.0"))
float Portamento;
// Enables forcing the oscillators to have no stereo spread.
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Synth|Preset")
uint32 bEnableUnison : 1;
// Whether or not oscillator sync is enabled. Oscillator sync forces oscillator 2's phase to align with oscillator 1's phase.
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Synth|Preset")
uint32 bEnableOscillatorSync : 1;
// The amount of stereo spread to use between oscillator 1 and oscillator 2 [0.0, 1.0]
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Synth|Preset", meta = (ClampMin = "0.0", ClampMax = "1.0", UIMin = "0.0", UIMax = "1.0"))
float Spread;
// The stereo pan to use. 0.0 is center. -1.0 is left, 1.0 is right.
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Synth|Preset", meta = (ClampMin = "-1.0", ClampMax = "1.0", UIMin = "-1.0", UIMax = "1.0"))
float Pan;
// The frequency to use for LFO 1 (in hz) [0.0, 50.0]
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Synth|Preset", meta = (ClampMin = "0.0", ClampMax = "50.0", UIMin = "0.0", UIMax = "50.0"))
float LFO1Frequency;
// The linear gain to use for LFO 1 [0.0, 1.0]
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Synth|Preset", meta = (ClampMin = "0.0", ClampMax = "1.0", UIMin = "0.0", UIMax = "1.0"))
float LFO1Gain;
// The type of LFO to use for LFO 1
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Synth|Preset")
ESynthLFOType LFO1Type;
// The mode to use for LFO 1
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Synth|Preset")
ESynthLFOMode LFO1Mode;
// The built-in patch type to use for LFO 1 (you can route this to any patchable parameter using the Patches parameter)
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Synth|Preset")
ESynthLFOPatchType LFO1PatchType;
// The frequency to use for LFO 2 (in hz) [0.0, 50.0]
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Synth|Preset", meta = (ClampMin = "0.0", ClampMax = "50.0", UIMin = "0.0", UIMax = "50.0"))
float LFO2Frequency;
// The linear gain to use for LFO 2 [0.0, 1.0]
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Synth|Preset", meta = (ClampMin = "0.0", ClampMax = "1.0", UIMin = "0.0", UIMax = "1.0"))
float LFO2Gain;
// The type of LFO to use for LFO 2
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Synth|Preset")
ESynthLFOType LFO2Type;
// The mode to use for LFO 2
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Synth|Preset")
ESynthLFOMode LFO2Mode;
// The built-in patch type to use for LFO 2 (you can route this to any patchable parameter using the Patches parameter)
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Synth|Preset")
ESynthLFOPatchType LFO2PatchType;
// The overall gain to use for the synthesizer in dB -90.0, 20.0]
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Synth|Preset", meta = (ClampMin = "-90.0", ClampMax = "20.0", UIMin = "-90.0", UIMax = "20.0"))
float GainDb;
// The amplitude envelope attack time (in ms) [0.0, 10000]
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Synth|Preset", meta = (ClampMin = "0.0", UIMin = "0.0", UIMax = "10000.0"))
float AttackTime;
// The amplitude envelope decay time (in ms)[0.0, 10000]
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Synth|Preset", meta = (ClampMin = "0.0", UIMin = "0.0", UIMax = "10000.0"))
float DecayTime;
// The amplitude envelope sustain amount (linear gain) [0.0, 1.0]
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Synth|Preset", meta = (ClampMin = "0.0", ClampMax = "1.0", UIMin = "0.0", UIMax = "1.0"))
float SustainGain;
// The amplitude envelope release time (in ms) [0.0, 10000]
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Synth|Preset", meta = (ClampMin = "0.0", UIMin = "0.0", UIMax = "10000.0"))
float ReleaseTime;
// The built-in patch type for the envelope modulator
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Synth|Preset")
ESynthModEnvPatch ModEnvPatchType;
// The built-in patch type for the envelope modulator bias output. Bias is when the envelope output is offset by the sustain gain.
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Synth|Preset")
ESynthModEnvBiasPatch ModEnvBiasPatchType;
// Whether or not to invert the modulation envelope
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Synth|Preset")
uint32 bInvertModulationEnvelope : 1;
// Whether or not to invert the modulation envelope bias output
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Synth|Preset")
uint32 bInvertModulationEnvelopeBias : 1;
// The "depth" (i.e. how much) modulation envelope to use. This scales the modulation envelope output. [0.0, 1.0]
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Synth|Preset", meta = (ClampMin = "0.0", ClampMax = "1.0", UIMin = "0.0", UIMax = "1.0"))
float ModulationEnvelopeDepth;
// The modulation envelope attack time (in ms) [0.0, 10000]
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Synth|Preset", meta = (ClampMin = "0.0", ClampMax = "10000.0", UIMin = "0.0", UIMax = "10000.0"))
float ModulationEnvelopeAttackTime;
// The modulation envelope decay time (in ms) [0.0, 10000]
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Synth|Preset", meta = (ClampMin = "0.0", ClampMax = "10000.0", UIMin = "0.0", UIMax = "10000.0"))
float ModulationEnvelopeDecayTime;
// The modulation envelope sustain gain (linear gain) [0.0, 1.0]
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Synth|Preset", meta = (ClampMin = "0.0", ClampMax = "1.0", UIMin = "0.0", UIMax = "1.0"))
float ModulationEnvelopeSustainGain;
// The modulation envelope release time (in ms) [0.0, 10000]
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Synth|Preset", meta = (ClampMin = "0.0", ClampMax = "10000.0", UIMin = "0.0", UIMax = "10000.0"))
float ModulationEnvelopeReleaseTime;
// Whether or not to use legato mode.
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Synth|Preset")
uint32 bLegato : 1;
// Whether or not to use retrigger mode.
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Synth|Preset")
uint32 bRetrigger : 1;
// The output filter cutoff frequency (hz) [0.0, 20000.0]
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Synth|Preset", meta = (ClampMin = "0.0", ClampMax = "20000.0", UIMin = "0.0", UIMax = "20000.0"))
float FilterFrequency;
// The output filter resonance (Q) [0.5, 10]
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Synth|Preset", meta = (ClampMin = "0.5", ClampMax = "10.0", UIMin = "0.5", UIMax = "10.0"))
float FilterQ;
// The output filter type (lowpass, highpass, bandpass, bandstop)
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Synth|Preset")
ESynthFilterType FilterType;
// The output filter circuit/algorithm type (one-pole ladder, ladder, state-variable)
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Synth|Preset")
ESynthFilterAlgorithm FilterAlgorithm;
// Whether or not stereo delay is enabled on the synth
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Synth|Preset")
uint32 bStereoDelayEnabled : 1;
// The stereo delay mode of the synth
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Synth|Preset")
ESynthStereoDelayMode StereoDelayMode;
// The stereo delay time (in ms) [0.0, 2000.0]
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Synth|Preset", meta = (ClampMin = "0.0", ClampMax = "2000.0", UIMin = "0.0", UIMax = "2000.0"))
float StereoDelayTime;
// The amount of feedback in the stereo delay line [0.0, 1.0]
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Synth|Preset", meta = (ClampMin = "0.0", ClampMax = "1.0", UIMin = "0.0", UIMax = "1.0"))
float StereoDelayFeedback;
// The output wet level to use for the stereo delay time [0.0, 1.0]
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Synth|Preset", meta = (ClampMin = "0.0", ClampMax = "1.0", UIMin = "0.0", UIMax = "1.0"))
float StereoDelayWetlevel;
// The ratio between left and right stereo delay lines (wider value is more separation) [0.0, 1.0]
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Synth|Preset", meta = (ClampMin = "0.0", ClampMax = "1.0", UIMin = "0.0", UIMax = "1.0"))
float StereoDelayRatio;
// Whether or not the chorus effect is enabled
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Synth|Preset")
uint32 bChorusEnabled : 1;
// The depth of the chorus effect [0.0, 1.0]
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Synth|Preset", meta = (ClampMin = "0.0", ClampMax = "1.0", UIMin = "0.0", UIMax = "1.0"))
float ChorusDepth;
// The amount of feedback in the chorus effect [0.0, 1.0]
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Synth|Preset", meta = (ClampMin = "0.0", ClampMax = "1.0", UIMin = "0.0", UIMax = "1.0"))
float ChorusFeedback;
// The chorus LFO frequency [0.0, 20.0]
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Synth|Preset", meta = (ClampMin = "0.0", ClampMax = "20.0", UIMin = "0.0", UIMax = "20.0"))
float ChorusFrequency;
// The modular synth patch chords to use for the synth. Allows routing the LFO1/LFO2 and Modulation Envelope to any patchable destination.
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Synth|Preset")
TArray<FEpicSynth1Patch> Patches;