diff --git a/src/sfizz/Defaults.cpp b/src/sfizz/Defaults.cpp index 7d9a5459..10375e86 100644 --- a/src/sfizz/Defaults.cpp +++ b/src/sfizz/Defaults.cpp @@ -4,172 +4,184 @@ namespace sfz { namespace Default { constexpr auto uint32_t_max = std::numeric_limits::max(); +constexpr auto float_max = std::numeric_limits::max(); -extern const OpcodeSpec delay { 0.0f, Range(0.0f, 100.0f), 0 }; -extern const OpcodeSpec delayRandom { 0.0f, Range(0.0f, 100.0f), 0 }; -extern const OpcodeSpec delayMod { 0.0f, Range(0.0f, 100.0f), 0 }; -extern const OpcodeSpec offset { 0, Range(0, uint32_t_max), 0 }; -extern const OpcodeSpec offsetMod { 0, Range(0, uint32_t_max), 0 }; -extern const OpcodeSpec offsetRandom { 0, Range(0, uint32_t_max), 0 }; -extern const OpcodeSpec sampleEnd { uint32_t_max, Range(0, uint32_t_max), kEnforceLowerBound }; -extern const OpcodeSpec sampleCount { 0, Range(0, uint32_t_max), 0 }; -extern const OpcodeSpec loopStart { 0, Range(0, uint32_t_max), 0 }; -extern const OpcodeSpec loopEnd { uint32_t_max, Range(0, uint32_t_max), 0 }; -extern const OpcodeSpec loopCount { 0, Range(0, uint32_t_max), 0 }; -extern const OpcodeSpec loopCrossfade { 1e-3, Range(1e-3, 1.0f), 0 }; -extern const OpcodeSpec oscillator { OscillatorEnabled::Auto, Range(OscillatorEnabled::Auto, OscillatorEnabled::On), 0 }; -extern const OpcodeSpec oscillatorPhase { 0.0f, Range(-1000.0f, 1000.0f), 0 }; -extern const OpcodeSpec oscillatorMode { 0, Range(0, 2), 0 }; -extern const OpcodeSpec oscillatorMulti { 1, Range(1, config::oscillatorsPerVoice), 0 }; -extern const OpcodeSpec oscillatorDetune { 0.0f, Range(-12000.0f, 12000.0f), 0 }; -extern const OpcodeSpec oscillatorDetuneMod { 0.0f, Range(-12000.0f, 12000.0f), 0 }; -extern const OpcodeSpec oscillatorModDepth { 0.0f, Range(0.0f, 10000.0f), kNormalizePercent }; -extern const OpcodeSpec oscillatorModDepthMod { 0.0f, Range(0.0f, 10000.0f), kNormalizePercent }; -extern const OpcodeSpec oscillatorQuality { 1, Range(0, 3), 0 }; -extern const OpcodeSpec group { 0, Range(0, uint32_t_max), 0 }; -extern const OpcodeSpec offTime { 6e-3f, Range(0.0f, 100.0f), 0 }; -extern const OpcodeSpec polyphony { config::maxVoices, Range(0, config::maxVoices), 0 }; -extern const OpcodeSpec notePolyphony { config::maxVoices, Range(0, config::maxVoices), 0 }; -extern const OpcodeSpec key { 60, Range(0, 127), kCanBeNote }; -extern const OpcodeSpec loKey { 0, Range(0, 127), kCanBeNote }; -extern const OpcodeSpec hiKey { 127, Range(0, 127), kCanBeNote }; -extern const OpcodeSpec loCC { 0, Range(0.0f, 127.0f), kNormalizeMidi }; -extern const OpcodeSpec hiCC { 127, Range(0.0f, 127.0f), kNormalizeMidi }; -extern const OpcodeSpec loVel { 0, Range(0.0f, 127.0f), kNormalizeMidi }; -extern const OpcodeSpec hiVel { 127, Range(0.0f, 127.0f), kNormalizeMidi }; -extern const OpcodeSpec loChannelAftertouch { 0, Range(0, 127), 0 }; -extern const OpcodeSpec hiChannelAftertouch { 127, Range(0, 127), 0 }; -extern const OpcodeSpec loBend { -8192, Range(-8192.0f, 8192.0f), kNormalizeBend }; -extern const OpcodeSpec hiBend { 8192, Range(-8192.0f, 8192.0f), kNormalizeBend }; -extern const OpcodeSpec loNormalized { 0.0f, Range(0.0f, 1.0f), 0 }; -extern const OpcodeSpec hiNormalized { 1.0f, Range(0.0f, 1.0f), 0 }; -extern const OpcodeSpec loBipolar { -1.0f, Range(-1.0f, 1.0f), 0 }; -extern const OpcodeSpec hiBipolar { 1.0f, Range(-1.0f, 1.0f), 0 }; -extern const OpcodeSpec ccNumber { 0, Range(0, config::numCCs), 0 }; -extern const OpcodeSpec smoothCC { 0, Range(0, 100), 0 }; -extern const OpcodeSpec curveCC { 0, Range(0, 255), 0 }; -extern const OpcodeSpec sustainCC { 64, Range(0, 127), 0 }; -extern const OpcodeSpec sustainThreshold { 1.0f, Range(0.0f, 127.0f), kNormalizeMidi }; -extern const OpcodeSpec checkSustain { true, Range(0, 1), 0 }; -extern const OpcodeSpec checkSostenuto { true, Range(0, 1), 0 }; -extern const OpcodeSpec loBPM { 0.0f, Range(0.0f, 500.0f), 0 }; -extern const OpcodeSpec hiBPM { 500.0f, Range(0.0f, 500.0f), 0 }; -extern const OpcodeSpec sequence { 1, Range(1, 100), 0 }; -extern const OpcodeSpec volume { 0.0f, Range(-144.0f, 48.0f), 0 }; -extern const OpcodeSpec volumeMod { 0.0f, Range(-144.0f, 48.0f), 0 }; -extern const OpcodeSpec amplitude { 100.0f, Range(0.0f, 10000.0f), kNormalizePercent }; -extern const OpcodeSpec amplitudeMod { 0.0f, Range(0.0f, 10000.0f), 0 }; -extern const OpcodeSpec pan { 0.0f, Range(-100.0f, 100.0f), kNormalizePercent }; -extern const OpcodeSpec panMod { 0.0f, Range(-200.0f, 200.0f), 0 }; -extern const OpcodeSpec position { 0.0f, Range(-100.0f, 100.0f), kNormalizePercent }; -extern const OpcodeSpec positionMod { 0.0f, Range(-200.0f, 200.0f), 0 }; -extern const OpcodeSpec width { 100.0f, Range(-100.0f, 100.0f), kNormalizePercent }; -extern const OpcodeSpec widthMod { 0.0f, Range(-200.0f, 200.0f), 0 }; -extern const OpcodeSpec crossfadeIn { 0.0f, Range(0.0f, 127.0f), kNormalizeMidi }; -extern const OpcodeSpec crossfadeInNorm { 0.0f, Range(0.0f, 1.0f), 0 }; -extern const OpcodeSpec crossfadeOut { 127.0f, Range(0.0f, 127.0f), kNormalizeMidi }; -extern const OpcodeSpec crossfadeOutNorm { 1.0f, Range(0.0f, 1.0f), 0 }; -extern const OpcodeSpec ampKeytrack { 0.0f, Range(-96.0f, 12.0f), 0 }; -extern const OpcodeSpec ampVeltrack { 100.0f, Range(-100.0f, 100.0f), kNormalizePercent }; -extern const OpcodeSpec ampVelcurve { 0.0f, Range(0.0f, 1.0f), 0 }; -extern const OpcodeSpec ampRandom { 0.0f, Range(0.0f, 24.0f), 0 }; -extern const OpcodeSpec rtDead { false, Range(0, 1), 0 }; -extern const OpcodeSpec rtDecay { 0.0f, Range(0.0f, 200.0f), 0 }; -extern const OpcodeSpec filterCutoff { 0.0f, Range(0.0f, 20000.0f), kEnforceUpperBound }; -extern const OpcodeSpec filterCutoffMod { 0.0f, Range(-12000.0f, 12000.0f), 0 }; -extern const OpcodeSpec filterResonance { 0.0f, Range(0.0f, 96.0f), 0 }; -extern const OpcodeSpec filterResonanceMod { 0.0f, Range(0.0f, 96.0f), 0 }; -extern const OpcodeSpec filterGain { 0.0f, Range(-96.0f, 96.0f), 0 }; -extern const OpcodeSpec filterGainMod { 0.0f, Range(-96.0f, 96.0f), 0 }; -extern const OpcodeSpec filterRandom { 0.0f, Range(0.0f, 12000.0f), 0 }; -extern const OpcodeSpec filterKeytrack { 0, Range(0, 1200), 0 }; -extern const OpcodeSpec filterVeltrack { 0, Range(-12000, 12000), 0 }; -extern const OpcodeSpec eqBandwidth { 1.0f, Range(0.001f, 4.0f), 0 }; -extern const OpcodeSpec eqBandwidthMod { 0.0f, Range(-4.0f, 4.0f), 0 }; -extern const OpcodeSpec eqFrequency { 0.0f, Range(0.0f, 20000.0f), kEnforceUpperBound }; -extern const OpcodeSpec eqFrequencyMod { 0.0f, Range(-20000.0f, 20000.0f), 0 }; -extern const OpcodeSpec eqGain { 0.0f, Range(-96.0f, 96.0f), 0 }; -extern const OpcodeSpec eqGainMod { 0.0f, Range(-96.0f, 96.0f), 0 }; -extern const OpcodeSpec eqVel2Frequency { 0.0f, Range(-30000.0f, 30000.0f), 0 }; -extern const OpcodeSpec eqVel2Gain { 0.0f, Range(-96.0f, 96.0f), 0 }; -extern const OpcodeSpec pitchKeytrack { 100, Range(-1200, 1200), 0 }; -extern const OpcodeSpec pitchRandom { 0.0f, Range(0.0f, 12000.0f), 0 }; -extern const OpcodeSpec pitchVeltrack { 0, Range(-12000, 12000), 0 }; -extern const OpcodeSpec transpose { 0, Range(-127, 127), 0 }; -extern const OpcodeSpec pitch { 0.0f, Range(-2400.0f, 2400.0f), 0 }; -extern const OpcodeSpec pitchMod { 0.0f, Range(-2400.0f, 2400.0f), 0 }; -extern const OpcodeSpec bendUp { 200.0f, Range(-12000.0f, 12000.0f), 0 }; -extern const OpcodeSpec bendDown { -200.0f, Range(-12000.0f, 12000.0f), 0 }; -extern const OpcodeSpec bendStep { 1.0f, Range(1.0f, 1200.0f), 0 }; -extern const OpcodeSpec ampLFODepth { 0.0f, Range(-10.0f, 10.0f), 0 }; -extern const OpcodeSpec pitchLFODepth { 0.0f, Range(-1200.0f, 1200.0f), 0 }; -extern const OpcodeSpec filLFODepth { 0.0f, Range(-1200.0f, 1200.0f), 0 }; -extern const OpcodeSpec lfoFreq { 0.0f, Range(0.0f, 100.0f), 0 }; -extern const OpcodeSpec lfoFreqMod { 0.0f, Range(-100.0f, 100.0f), 0 }; -extern const OpcodeSpec lfoBeats { 0.0f, Range(0.0f, 1000.0f), 0 }; -extern const OpcodeSpec lfoBeatsMod { 0.0f, Range(-1000.0f, 1000.0f), 0 }; -extern const OpcodeSpec lfoPhase { 0.0f, Range(0.0f, 1.0f), kWrapPhase }; -extern const OpcodeSpec lfoDelay { 0.0f, Range(0.0f, 30.0f), 0 }; -extern const OpcodeSpec lfoFade { 0.0f, Range(0.0f, 30.0f), 0 }; -extern const OpcodeSpec lfoCount { 0, Range(0, 1000), 0 }; -extern const OpcodeSpec lfoSteps { 0, Range(0, static_cast(config::maxLFOSteps)), 0 }; -extern const OpcodeSpec lfoStepX { 0.0f, Range(-100.0f, 100.0f), kNormalizePercent }; -extern const OpcodeSpec lfoWave { LFOWave::Triangle, Range(LFOWave::Triangle, LFOWave::RandomSH), 0 }; -extern const OpcodeSpec lfoOffset { 0.0f, Range(-1.0f, 1.0f), 0 }; -extern const OpcodeSpec lfoRatio { 1.0f, Range(0.0f, 100.0f), 0 }; -extern const OpcodeSpec lfoScale { 1.0f, Range(0.0f, 1.0f), 0 }; -extern const OpcodeSpec egTime { 0.0f, Range(0.0f, 100.0f), 0 }; -extern const OpcodeSpec egRelease { 0.001f, Range(0.0f, 100.0f), 0 }; -extern const OpcodeSpec egTimeMod { 0.0f, Range(-100.0f, 100.0f), 0 }; -extern const OpcodeSpec egPercent { 0.0f, Range(0.0f, 100.0f), 0 }; -extern const OpcodeSpec egPercentMod { 0.0f, Range(-100.0f, 100.0f), 0 }; -extern const OpcodeSpec egDepth { 0.0f, Range(-12000.0f, 12000.0f), 0 }; -extern const OpcodeSpec egVel2Depth { 0.0f, Range(-12000.0f, 12000.0f), 0 }; -extern const OpcodeSpec flexEGAmpeg { false, Range(0, 1), 0 }; -extern const OpcodeSpec flexEGDynamic { 0, Range(0, 1), 0 }; -extern const OpcodeSpec flexEGSustain { 0, Range(0, 100), 0 }; -extern const OpcodeSpec flexEGPointTime { 0.0f, Range(0.0f, 100.0f), 0 }; -extern const OpcodeSpec flexEGPointLevel { 0.0f, Range(-1.0f, 1.0f), 0 }; -extern const OpcodeSpec flexEGPointShape { 0.0f, Range(-100.0f, 100.0f), 0 }; -extern const OpcodeSpec sampleQuality { 1, Range(1, 10), 0 }; -extern const OpcodeSpec octaveOffset { 0, Range(-10, 10), 0 }; -extern const OpcodeSpec noteOffset { 0, Range(-127, 127), 0 }; -extern const OpcodeSpec effect { 0.0f, Range(0.0f, 100.0f), kNormalizePercent }; -extern const OpcodeSpec effectPercent { 0.0f, Range(0.0f, 100.0f), 0 }; -extern const OpcodeSpec apanWaveform { LFOWave::Triangle, Range(LFOWave::Triangle, LFOWave::Saw), 0 }; -extern const OpcodeSpec apanFrequency { 0.0f, Range(0.0f, std::numeric_limits::max()), 0 }; -extern const OpcodeSpec apanPhase { 0.5f, Range(0.0f, 1.0f), kWrapPhase }; -extern const OpcodeSpec apanLevel { 0.0f, Range(0.0f, 100.0f), kNormalizePercent }; -extern const OpcodeSpec distoTone { 100.0f, Range(0.0f, 100.0f), 0 }; -extern const OpcodeSpec distoDepth { 0.0f, Range(0.0f, 100.0f), 0 }; -extern const OpcodeSpec distoStages { 1, Range(1, maxDistoStages), 0 }; -extern const OpcodeSpec compAttack { 0.005f, Range(0.0f, 10.0f), 0 }; -extern const OpcodeSpec compRelease { 0.05f, Range(0.0f, 10.0f), 0 }; -extern const OpcodeSpec compSTLink { false, Range(0, 1), 0 }; -extern const OpcodeSpec compThreshold { 0.0f, Range(-100.0f, 0.0f), 0 }; -extern const OpcodeSpec compRatio { 1.0f, Range(1.0f, 50.0f), 0 }; -extern const OpcodeSpec compGain { 0.0f, Range(-100.0f, 100.0f), kDb2Mag }; -extern const OpcodeSpec fverbSize { 0.0f, Range(0.0f, 100.0f), 0 }; -extern const OpcodeSpec fverbPredelay { 0.0f, Range(0.0f, 10.0f), 0 }; -extern const OpcodeSpec fverbTone { 100.0f, Range(0.0f, 100.0f), 0 }; -extern const OpcodeSpec fverbDamp { 0.0f, Range(0.0f, 100.0f), 0 }; -extern const OpcodeSpec gateSTLink { false, Range(0, 1), 0 }; -extern const OpcodeSpec gateAttack { 0.005f, Range(0.0f, 10.0f), 0 }; -extern const OpcodeSpec gateRelease { 0.05f, Range(0.0f, 10.0f), 0 }; -extern const OpcodeSpec gateHold { 0.0f, Range(0.0f, 10.0f), 0 }; -extern const OpcodeSpec gateThreshold { 0.0f, Range(-100.0f, 0.0f), 0 }; -extern const OpcodeSpec lofiBitred { 0.0f, Range(0.0f, 100.0f), 0 }; -extern const OpcodeSpec lofiDecim { 0.0f, Range(0.0f, 100.0f), 0 }; -extern const OpcodeSpec rectify { 0.0f, Range(0.0f, 100.0f), 0 }; -extern const OpcodeSpec stringsNumber { maxStrings, Range(0, maxStrings), 0 }; -extern const OpcodeSpec trigger { Trigger::attack, Range(Trigger::attack, Trigger::release_key), 0}; -extern const OpcodeSpec crossfadeCurve { CrossfadeCurve::power, Range(CrossfadeCurve::gain, CrossfadeCurve::power), 0}; -extern const OpcodeSpec offMode { OffMode::fast, Range(OffMode::fast, OffMode::time), 0}; -extern const OpcodeSpec loopMode { LoopMode::no_loop, Range(LoopMode::no_loop, LoopMode::loop_sustain), 0}; -extern const OpcodeSpec velocityOverride { VelocityOverride::current, Range(VelocityOverride::current, VelocityOverride::previous), 0}; -extern const OpcodeSpec selfMask { SelfMask::mask, Range(SelfMask::mask, SelfMask::dontMask), 0}; -extern const OpcodeSpec filter { FilterType::kFilterNone, Range(FilterType::kFilterNone, FilterType::kFilterPeq), 0}; -extern const OpcodeSpec eq { EqType::kEqNone, Range(EqType::kEqNone, EqType::kEqHighShelf), 0}; +using FloatSpec = const OpcodeSpec; +using Int8Spec = const OpcodeSpec; +using Int16Spec = const OpcodeSpec; +using Int32Spec = const OpcodeSpec; +using Int64Spec = const OpcodeSpec; +using UInt8Spec = const OpcodeSpec; +using UInt16Spec = const OpcodeSpec; +using UInt32Spec = const OpcodeSpec; +using BoolSpec = const OpcodeSpec; +template using ESpec = const OpcodeSpec; + +FloatSpec delay { 0.0f, {0.0f, 100.0f}, 0 }; +FloatSpec delayRandom { 0.0f, {0.0f, 100.0f}, 0 }; +FloatSpec delayMod { 0.0f, {0.0f, 100.0f}, 0 }; +Int64Spec offset { 0, {0, uint32_t_max}, 0 }; +Int64Spec offsetMod { 0, {0, uint32_t_max}, 0 }; +Int64Spec offsetRandom { 0, {0, uint32_t_max}, 0 }; +UInt32Spec sampleEnd { uint32_t_max, {0, uint32_t_max}, kEnforceLowerBound }; +UInt32Spec sampleCount { 0, {0, uint32_t_max}, 0 }; +UInt32Spec loopStart { 0, {0, uint32_t_max}, 0 }; +UInt32Spec loopEnd { uint32_t_max, {0, uint32_t_max}, 0 }; +UInt32Spec loopCount { 0, {0, uint32_t_max}, 0 }; +FloatSpec loopCrossfade { 1e-3, {1e-3, 1.0f}, 0 }; +ESpec oscillator { OscillatorEnabled::Auto, {OscillatorEnabled::Auto, OscillatorEnabled::On}, 0 }; +FloatSpec oscillatorPhase { 0.0f, {-1000.0f, 1000.0f}, 0 }; +Int32Spec oscillatorMode { 0, {0, 2}, 0 }; +Int32Spec oscillatorMulti { 1, {1, config::oscillatorsPerVoice}, 0 }; +FloatSpec oscillatorDetune { 0.0f, {-12000.0f, 12000.0f}, 0 }; +FloatSpec oscillatorDetuneMod { 0.0f, {-12000.0f, 12000.0f}, 0 }; +FloatSpec oscillatorModDepth { 0.0f, {0.0f, 10000.0f}, kNormalizePercent }; +FloatSpec oscillatorModDepthMod { 0.0f, {0.0f, 10000.0f}, kNormalizePercent }; +Int32Spec oscillatorQuality { 1, {0, 3}, 0 }; +UInt32Spec group { 0, {0, uint32_t_max}, 0 }; +FloatSpec offTime { 6e-3f, {0.0f, 100.0f}, 0 }; +UInt32Spec polyphony { config::maxVoices, {0, config::maxVoices}, 0 }; +UInt32Spec notePolyphony { config::maxVoices, {0, config::maxVoices}, 0 }; +UInt8Spec key { 60, {0, 127}, kCanBeNote }; +UInt8Spec loKey { 0, {0, 127}, kCanBeNote }; +UInt8Spec hiKey { 127, {0, 127}, kCanBeNote }; +FloatSpec loCC { 0, {0.0f, 127.0f}, kNormalizeMidi }; +FloatSpec hiCC { 127, {0.0f, 127.0f}, kNormalizeMidi }; +FloatSpec loVel { 0, {0.0f, 127.0f}, kNormalizeMidi }; +FloatSpec hiVel { 127, {0.0f, 127.0f}, kNormalizeMidi }; +UInt8Spec loChannelAftertouch { 0, {0, 127}, 0 }; +UInt8Spec hiChannelAftertouch { 127, {0, 127}, 0 }; +FloatSpec loBend { -8192, {-8192.0f, 8192.0f}, kNormalizeBend }; +FloatSpec hiBend { 8192, {-8192.0f, 8192.0f}, kNormalizeBend }; +FloatSpec loNormalized { 0.0f, {0.0f, 1.0f}, 0 }; +FloatSpec hiNormalized { 1.0f, {0.0f, 1.0f}, 0 }; +FloatSpec loBipolar { -1.0f, {-1.0f, 1.0f}, 0 }; +FloatSpec hiBipolar { 1.0f, {-1.0f, 1.0f}, 0 }; +UInt16Spec ccNumber { 0, {0, config::numCCs}, 0 }; +UInt8Spec smoothCC { 0, {0, 100}, 0 }; +UInt8Spec curveCC { 0, {0, 255}, 0 }; +UInt8Spec sustainCC { 64, {0, 127}, 0 }; +FloatSpec sustainThreshold { 1.0f, {0.0f, 127.0f}, kNormalizeMidi }; +BoolSpec checkSustain { true, {0, 1}, 0 }; +BoolSpec checkSostenuto { true, {0, 1}, 0 }; +FloatSpec loBPM { 0.0f, {0.0f, 500.0f}, 0 }; +FloatSpec hiBPM { 500.0f, {0.0f, 500.0f}, 0 }; +UInt8Spec sequence { 1, {1, 100}, 0 }; +FloatSpec volume { 0.0f, {-144.0f, 48.0f}, 0 }; +FloatSpec volumeMod { 0.0f, {-144.0f, 48.0f}, 0 }; +FloatSpec amplitude { 100.0f, {0.0f, 10000.0f}, kNormalizePercent }; +FloatSpec amplitudeMod { 0.0f, {0.0f, 10000.0f}, 0 }; +FloatSpec pan { 0.0f, {-100.0f, 100.0f}, kNormalizePercent }; +FloatSpec panMod { 0.0f, {-200.0f, 200.0f}, 0 }; +FloatSpec position { 0.0f, {-100.0f, 100.0f}, kNormalizePercent }; +FloatSpec positionMod { 0.0f, {-200.0f, 200.0f}, 0 }; +FloatSpec width { 100.0f, {-100.0f, 100.0f}, kNormalizePercent }; +FloatSpec widthMod { 0.0f, {-200.0f, 200.0f}, 0 }; +FloatSpec crossfadeIn { 0.0f, {0.0f, 127.0f}, kNormalizeMidi }; +FloatSpec crossfadeInNorm { 0.0f, {0.0f, 1.0f}, 0 }; +FloatSpec crossfadeOut { 127.0f, {0.0f, 127.0f}, kNormalizeMidi }; +FloatSpec crossfadeOutNorm { 1.0f, {0.0f, 1.0f}, 0 }; +FloatSpec ampKeytrack { 0.0f, {-96.0f, 12.0f}, 0 }; +FloatSpec ampVeltrack { 100.0f, {-100.0f, 100.0f}, kNormalizePercent }; +FloatSpec ampVelcurve { 0.0f, {0.0f, 1.0f}, 0 }; +FloatSpec ampRandom { 0.0f, {0.0f, 24.0f}, 0 }; +BoolSpec rtDead { false, {false, true}, 0 }; +FloatSpec rtDecay { 0.0f, {0.0f, 200.0f}, 0 }; +FloatSpec filterCutoff { 0.0f, {0.0f, 20000.0f}, kEnforceUpperBound }; +FloatSpec filterCutoffMod { 0.0f, {-12000.0f, 12000.0f}, 0 }; +FloatSpec filterResonance { 0.0f, {0.0f, 96.0f}, 0 }; +FloatSpec filterResonanceMod { 0.0f, {0.0f, 96.0f}, 0 }; +FloatSpec filterGain { 0.0f, {-96.0f, 96.0f}, 0 }; +FloatSpec filterGainMod { 0.0f, {-96.0f, 96.0f}, 0 }; +FloatSpec filterRandom { 0.0f, {0.0f, 12000.0f}, 0 }; +Int32Spec filterKeytrack { 0, {0, 1200}, 0 }; +Int32Spec filterVeltrack { 0, {-12000, 12000}, 0 }; +FloatSpec eqBandwidth { 1.0f, {0.001f, 4.0f}, 0 }; +FloatSpec eqBandwidthMod { 0.0f, {-4.0f, 4.0f}, 0 }; +FloatSpec eqFrequency { 0.0f, {0.0f, 20000.0f}, kEnforceUpperBound }; +FloatSpec eqFrequencyMod { 0.0f, {-20000.0f, 20000.0f}, 0 }; +FloatSpec eqGain { 0.0f, {-96.0f, 96.0f}, 0 }; +FloatSpec eqGainMod { 0.0f, {-96.0f, 96.0f}, 0 }; +FloatSpec eqVel2Frequency { 0.0f, {-30000.0f, 30000.0f}, 0 }; +FloatSpec eqVel2Gain { 0.0f, {-96.0f, 96.0f}, 0 }; +Int32Spec pitchKeytrack { 100, {-1200, 1200}, 0 }; +FloatSpec pitchRandom { 0.0f, {0.0f, 12000.0f}, 0 }; +Int32Spec pitchVeltrack { 0, {-12000, 12000}, 0 }; +Int32Spec transpose { 0, {-127, 127}, 0 }; +FloatSpec pitch { 0.0f, {-2400.0f, 2400.0f}, 0 }; +FloatSpec pitchMod { 0.0f, {-2400.0f, 2400.0f}, 0 }; +FloatSpec bendUp { 200.0f, {-12000.0f, 12000.0f}, 0 }; +FloatSpec bendDown { -200.0f, {-12000.0f, 12000.0f}, 0 }; +FloatSpec bendStep { 1.0f, {1.0f, 1200.0f}, 0 }; +FloatSpec ampLFODepth { 0.0f, {-10.0f, 10.0f}, 0 }; +FloatSpec pitchLFODepth { 0.0f, {-1200.0f, 1200.0f}, 0 }; +FloatSpec filLFODepth { 0.0f, {-1200.0f, 1200.0f}, 0 }; +FloatSpec lfoFreq { 0.0f, {0.0f, 100.0f}, 0 }; +FloatSpec lfoFreqMod { 0.0f, {-100.0f, 100.0f}, 0 }; +FloatSpec lfoBeats { 0.0f, {0.0f, 1000.0f}, 0 }; +FloatSpec lfoBeatsMod { 0.0f, {-1000.0f, 1000.0f}, 0 }; +FloatSpec lfoPhase { 0.0f, {0.0f, 1.0f}, kWrapPhase }; +FloatSpec lfoDelay { 0.0f, {0.0f, 30.0f}, 0 }; +FloatSpec lfoFade { 0.0f, {0.0f, 30.0f}, 0 }; +UInt32Spec lfoCount { 0, {0, 1000}, 0 }; +UInt32Spec lfoSteps { 0, {0, static_cast(config::maxLFOSteps)}, 0 }; +FloatSpec lfoStepX { 0.0f, {-100.0f, 100.0f}, kNormalizePercent }; +ESpec lfoWave { LFOWave::Triangle, {LFOWave::Triangle, LFOWave::RandomSH}, 0 }; +FloatSpec lfoOffset { 0.0f, {-1.0f, 1.0f}, 0 }; +FloatSpec lfoRatio { 1.0f, {0.0f, 100.0f}, 0 }; +FloatSpec lfoScale { 1.0f, {0.0f, 1.0f}, 0 }; +FloatSpec egTime { 0.0f, {0.0f, 100.0f}, 0 }; +FloatSpec egRelease { 0.001f, {0.0f, 100.0f}, 0 }; +FloatSpec egTimeMod { 0.0f, {-100.0f, 100.0f}, 0 }; +FloatSpec egPercent { 0.0f, {0.0f, 100.0f}, 0 }; +FloatSpec egPercentMod { 0.0f, {-100.0f, 100.0f}, 0 }; +FloatSpec egDepth { 0.0f, {-12000.0f, 12000.0f}, 0 }; +FloatSpec egVel2Depth { 0.0f, {-12000.0f, 12000.0f}, 0 }; +BoolSpec flexEGAmpeg { false, {0, 1}, 0 }; +Int32Spec flexEGDynamic { 0, {0, 1}, 0 }; +Int32Spec flexEGSustain { 0, {0, 100}, 0 }; +FloatSpec flexEGPointTime { 0.0f, {0.0f, 100.0f}, 0 }; +FloatSpec flexEGPointLevel { 0.0f, {-1.0f, 1.0f}, 0 }; +FloatSpec flexEGPointShape { 0.0f, {-100.0f, 100.0f}, 0 }; +Int32Spec sampleQuality { 1, {1, 10}, 0 }; +Int32Spec octaveOffset { 0, {-10, 10}, 0 }; +Int32Spec noteOffset { 0, {-127, 127}, 0 }; +FloatSpec effect { 0.0f, {0.0f, 100.0f}, kNormalizePercent }; +FloatSpec effectPercent { 0.0f, {0.0f, 100.0f}, 0 }; +ESpec apanWaveform { LFOWave::Triangle, {LFOWave::Triangle, LFOWave::Saw}, 0 }; +FloatSpec apanFrequency { 0.0f, {0.0f, float_max}, 0 }; +FloatSpec apanPhase { 0.5f, {0.0f, 1.0f}, kWrapPhase }; +FloatSpec apanLevel { 0.0f, {0.0f, 100.0f}, kNormalizePercent }; +FloatSpec distoTone { 100.0f, {0.0f, 100.0f}, 0 }; +FloatSpec distoDepth { 0.0f, {0.0f, 100.0f}, 0 }; +UInt32Spec distoStages { 1, {1, maxDistoStages}, 0 }; +FloatSpec compAttack { 0.005f, {0.0f, 10.0f}, 0 }; +FloatSpec compRelease { 0.05f, {0.0f, 10.0f}, 0 }; +BoolSpec compSTLink { false, {0, 1}, 0 }; +FloatSpec compThreshold { 0.0f, {-100.0f, 0.0f}, 0 }; +FloatSpec compRatio { 1.0f, {1.0f, 50.0f}, 0 }; +FloatSpec compGain { 0.0f, {-100.0f, 100.0f}, kDb2Mag }; +FloatSpec fverbSize { 0.0f, {0.0f, 100.0f}, 0 }; +FloatSpec fverbPredelay { 0.0f, {0.0f, 10.0f}, 0 }; +FloatSpec fverbTone { 100.0f, {0.0f, 100.0f}, 0 }; +FloatSpec fverbDamp { 0.0f, {0.0f, 100.0f}, 0 }; +BoolSpec gateSTLink { false, {0, 1}, 0 }; +FloatSpec gateAttack { 0.005f, {0.0f, 10.0f}, 0 }; +FloatSpec gateRelease { 0.05f, {0.0f, 10.0f}, 0 }; +FloatSpec gateHold { 0.0f, {0.0f, 10.0f}, 0 }; +FloatSpec gateThreshold { 0.0f, {-100.0f, 0.0f}, 0 }; +FloatSpec lofiBitred { 0.0f, {0.0f, 100.0f}, 0 }; +FloatSpec lofiDecim { 0.0f, {0.0f, 100.0f}, 0 }; +FloatSpec rectify { 0.0f, {0.0f, 100.0f}, 0 }; +UInt32Spec stringsNumber { maxStrings, {0, maxStrings}, 0 }; +ESpec trigger { Trigger::attack, {Trigger::attack, Trigger::release_key}, 0}; +ESpec crossfadeCurve { CrossfadeCurve::power, {CrossfadeCurve::gain, CrossfadeCurve::power}, 0}; +ESpec offMode { OffMode::fast, {OffMode::fast, OffMode::time}, 0}; +ESpec loopMode { LoopMode::no_loop, {LoopMode::no_loop, LoopMode::loop_sustain}, 0}; +ESpec velocityOverride { VelocityOverride::current, {VelocityOverride::current, VelocityOverride::previous}, 0}; +ESpec selfMask { SelfMask::mask, {SelfMask::mask, SelfMask::dontMask}, 0}; +ESpec filter { FilterType::kFilterNone, {FilterType::kFilterNone, FilterType::kFilterPeq}, 0}; +ESpec eq { EqType::kEqNone, {EqType::kEqNone, EqType::kEqHighShelf}, 0}; } // namespace Default } // namespace sfz diff --git a/src/sfizz/Defaults.h b/src/sfizz/Defaults.h index adc14cd6..bf33f5b0 100644 --- a/src/sfizz/Defaults.h +++ b/src/sfizz/Defaults.h @@ -127,13 +127,13 @@ namespace Default extern const OpcodeSpec loopCrossfade; extern const OpcodeSpec oscillatorPhase; extern const OpcodeSpec oscillator; - extern const OpcodeSpec oscillatorMode; - extern const OpcodeSpec oscillatorMulti; + extern const OpcodeSpec oscillatorMode; + extern const OpcodeSpec oscillatorMulti; extern const OpcodeSpec oscillatorDetune; extern const OpcodeSpec oscillatorDetuneMod; extern const OpcodeSpec oscillatorModDepth; extern const OpcodeSpec oscillatorModDepthMod; - extern const OpcodeSpec oscillatorQuality; + extern const OpcodeSpec oscillatorQuality; extern const OpcodeSpec group; extern const OpcodeSpec offTime; extern const OpcodeSpec polyphony; @@ -190,8 +190,8 @@ namespace Default extern const OpcodeSpec filterGain; extern const OpcodeSpec filterGainMod; extern const OpcodeSpec filterRandom; - extern const OpcodeSpec filterKeytrack; - extern const OpcodeSpec filterVeltrack; + extern const OpcodeSpec filterKeytrack; + extern const OpcodeSpec filterVeltrack; extern const OpcodeSpec eqBandwidth; extern const OpcodeSpec eqBandwidthMod; extern const OpcodeSpec eqFrequency; @@ -200,10 +200,10 @@ namespace Default extern const OpcodeSpec eqGainMod; extern const OpcodeSpec eqVel2Frequency; extern const OpcodeSpec eqVel2Gain; - extern const OpcodeSpec pitchKeytrack; + extern const OpcodeSpec pitchKeytrack; extern const OpcodeSpec pitchRandom; - extern const OpcodeSpec pitchVeltrack; - extern const OpcodeSpec transpose; + extern const OpcodeSpec pitchVeltrack; + extern const OpcodeSpec transpose; extern const OpcodeSpec pitch; extern const OpcodeSpec pitchMod; extern const OpcodeSpec bendUp; @@ -219,8 +219,8 @@ namespace Default extern const OpcodeSpec lfoPhase; extern const OpcodeSpec lfoDelay; extern const OpcodeSpec lfoFade; - extern const OpcodeSpec lfoCount; - extern const OpcodeSpec lfoSteps; + extern const OpcodeSpec lfoCount; + extern const OpcodeSpec lfoSteps; extern const OpcodeSpec lfoStepX; extern const OpcodeSpec lfoWave; extern const OpcodeSpec lfoOffset; @@ -234,14 +234,14 @@ namespace Default extern const OpcodeSpec egDepth; extern const OpcodeSpec egVel2Depth; extern const OpcodeSpec flexEGAmpeg; - extern const OpcodeSpec flexEGDynamic; - extern const OpcodeSpec flexEGSustain; + extern const OpcodeSpec flexEGDynamic; + extern const OpcodeSpec flexEGSustain; extern const OpcodeSpec flexEGPointTime; extern const OpcodeSpec flexEGPointLevel; extern const OpcodeSpec flexEGPointShape; - extern const OpcodeSpec sampleQuality; - extern const OpcodeSpec octaveOffset; - extern const OpcodeSpec noteOffset; + extern const OpcodeSpec sampleQuality; + extern const OpcodeSpec octaveOffset; + extern const OpcodeSpec noteOffset; extern const OpcodeSpec effect; extern const OpcodeSpec effectPercent; extern const OpcodeSpec apanWaveform; @@ -250,7 +250,7 @@ namespace Default extern const OpcodeSpec apanLevel; extern const OpcodeSpec distoTone; extern const OpcodeSpec distoDepth; - extern const OpcodeSpec distoStages; + extern const OpcodeSpec distoStages; extern const OpcodeSpec compAttack; extern const OpcodeSpec compRelease; extern const OpcodeSpec compThreshold; @@ -269,7 +269,7 @@ namespace Default extern const OpcodeSpec lofiBitred; extern const OpcodeSpec lofiDecim; extern const OpcodeSpec rectify; - extern const OpcodeSpec stringsNumber; + extern const OpcodeSpec stringsNumber; extern const OpcodeSpec trigger; extern const OpcodeSpec offMode; extern const OpcodeSpec loopMode;