Merge pull request #700 from jpcima/misc

Simplify the notation for opcode spec
This commit is contained in:
JP Cimalando 2021-03-12 16:20:12 +01:00 committed by GitHub
commit 38c02ec65f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 194 additions and 182 deletions

View file

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

View file

@ -127,13 +127,13 @@ namespace Default
extern const OpcodeSpec<float> loopCrossfade;
extern const OpcodeSpec<float> oscillatorPhase;
extern const OpcodeSpec<OscillatorEnabled> oscillator;
extern const OpcodeSpec<int> oscillatorMode;
extern const OpcodeSpec<int> oscillatorMulti;
extern const OpcodeSpec<int32_t> oscillatorMode;
extern const OpcodeSpec<int32_t> oscillatorMulti;
extern const OpcodeSpec<float> oscillatorDetune;
extern const OpcodeSpec<float> oscillatorDetuneMod;
extern const OpcodeSpec<float> oscillatorModDepth;
extern const OpcodeSpec<float> oscillatorModDepthMod;
extern const OpcodeSpec<int> oscillatorQuality;
extern const OpcodeSpec<int32_t> oscillatorQuality;
extern const OpcodeSpec<uint32_t> group;
extern const OpcodeSpec<float> offTime;
extern const OpcodeSpec<uint32_t> polyphony;
@ -190,8 +190,8 @@ namespace Default
extern const OpcodeSpec<float> filterGain;
extern const OpcodeSpec<float> filterGainMod;
extern const OpcodeSpec<float> filterRandom;
extern const OpcodeSpec<int> filterKeytrack;
extern const OpcodeSpec<int> filterVeltrack;
extern const OpcodeSpec<int32_t> filterKeytrack;
extern const OpcodeSpec<int32_t> filterVeltrack;
extern const OpcodeSpec<float> eqBandwidth;
extern const OpcodeSpec<float> eqBandwidthMod;
extern const OpcodeSpec<float> eqFrequency;
@ -200,10 +200,10 @@ namespace Default
extern const OpcodeSpec<float> eqGainMod;
extern const OpcodeSpec<float> eqVel2Frequency;
extern const OpcodeSpec<float> eqVel2Gain;
extern const OpcodeSpec<int> pitchKeytrack;
extern const OpcodeSpec<int32_t> pitchKeytrack;
extern const OpcodeSpec<float> pitchRandom;
extern const OpcodeSpec<int> pitchVeltrack;
extern const OpcodeSpec<int> transpose;
extern const OpcodeSpec<int32_t> pitchVeltrack;
extern const OpcodeSpec<int32_t> transpose;
extern const OpcodeSpec<float> pitch;
extern const OpcodeSpec<float> pitchMod;
extern const OpcodeSpec<float> bendUp;
@ -219,8 +219,8 @@ namespace Default
extern const OpcodeSpec<float> lfoPhase;
extern const OpcodeSpec<float> lfoDelay;
extern const OpcodeSpec<float> lfoFade;
extern const OpcodeSpec<unsigned> lfoCount;
extern const OpcodeSpec<unsigned> lfoSteps;
extern const OpcodeSpec<uint32_t> lfoCount;
extern const OpcodeSpec<uint32_t> lfoSteps;
extern const OpcodeSpec<float> lfoStepX;
extern const OpcodeSpec<LFOWave> lfoWave;
extern const OpcodeSpec<float> lfoOffset;
@ -234,14 +234,14 @@ namespace Default
extern const OpcodeSpec<float> egDepth;
extern const OpcodeSpec<float> egVel2Depth;
extern const OpcodeSpec<bool> flexEGAmpeg;
extern const OpcodeSpec<int> flexEGDynamic;
extern const OpcodeSpec<int> flexEGSustain;
extern const OpcodeSpec<int32_t> flexEGDynamic;
extern const OpcodeSpec<int32_t> flexEGSustain;
extern const OpcodeSpec<float> flexEGPointTime;
extern const OpcodeSpec<float> flexEGPointLevel;
extern const OpcodeSpec<float> flexEGPointShape;
extern const OpcodeSpec<int> sampleQuality;
extern const OpcodeSpec<int> octaveOffset;
extern const OpcodeSpec<int> noteOffset;
extern const OpcodeSpec<int32_t> sampleQuality;
extern const OpcodeSpec<int32_t> octaveOffset;
extern const OpcodeSpec<int32_t> noteOffset;
extern const OpcodeSpec<float> effect;
extern const OpcodeSpec<float> effectPercent;
extern const OpcodeSpec<LFOWave> apanWaveform;
@ -250,7 +250,7 @@ namespace Default
extern const OpcodeSpec<float> apanLevel;
extern const OpcodeSpec<float> distoTone;
extern const OpcodeSpec<float> distoDepth;
extern const OpcodeSpec<unsigned> distoStages;
extern const OpcodeSpec<uint32_t> distoStages;
extern const OpcodeSpec<float> compAttack;
extern const OpcodeSpec<float> compRelease;
extern const OpcodeSpec<float> compThreshold;
@ -269,7 +269,7 @@ namespace Default
extern const OpcodeSpec<float> lofiBitred;
extern const OpcodeSpec<float> lofiDecim;
extern const OpcodeSpec<float> rectify;
extern const OpcodeSpec<unsigned> stringsNumber;
extern const OpcodeSpec<uint32_t> stringsNumber;
extern const OpcodeSpec<Trigger> trigger;
extern const OpcodeSpec<OffMode> offMode;
extern const OpcodeSpec<LoopMode> loopMode;