Scope the enums in sfz and remove the prefix
This commit is contained in:
parent
60b5783753
commit
e9941b4337
14 changed files with 113 additions and 113 deletions
|
|
@ -53,7 +53,7 @@ void ADSREnvelope::reset(const EGDescription& desc, const Region& region, const
|
|||
shouldRelease = false;
|
||||
freeRunning = (
|
||||
(this->sustain == Float(0.0))
|
||||
|| (region.loopMode == SfzLoopMode::one_shot && region.isOscillator())
|
||||
|| (region.loopMode == LoopMode::one_shot && region.isOscillator())
|
||||
);
|
||||
currentValue = this->start;
|
||||
currentState = State::Delay;
|
||||
|
|
|
|||
|
|
@ -145,11 +145,11 @@ extern const OpcodeSpec<float> lofiBitred { 0.0f, Range<float>(0.0f, 100.0f), kI
|
|||
extern const OpcodeSpec<float> lofiDecim { 0.0f, Range<float>(0.0f, 100.0f), kIgnoreOOB };
|
||||
extern const OpcodeSpec<float> rectify { 0.0f, Range<float>(0.0f, 100.0f), kIgnoreOOB };
|
||||
extern const OpcodeSpec<unsigned> stringsNumber { maxStrings, Range<unsigned>(0, maxStrings), kEnforceLowerBound };
|
||||
extern const OpcodeSpec<SfzTrigger> trigger { SfzTrigger::attack, Range<SfzTrigger>(SfzTrigger::attack, SfzTrigger::release_key), 0};
|
||||
extern const OpcodeSpec<SfzCrossfadeCurve> crossfadeCurve { SfzCrossfadeCurve::power, Range<SfzCrossfadeCurve>(SfzCrossfadeCurve::gain, SfzCrossfadeCurve::power), 0};
|
||||
extern const OpcodeSpec<SfzOffMode> offMode { SfzOffMode::fast, Range<SfzOffMode>(SfzOffMode::fast, SfzOffMode::time), 0};
|
||||
extern const OpcodeSpec<SfzVelocityOverride> velocityOverride { SfzVelocityOverride::current, Range<SfzVelocityOverride>(SfzVelocityOverride::current, SfzVelocityOverride::previous), 0};
|
||||
extern const OpcodeSpec<SfzSelfMask> selfMask { SfzSelfMask::mask, Range<SfzSelfMask>(SfzSelfMask::mask, SfzSelfMask::dontMask), 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<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};
|
||||
} // namespace Default
|
||||
|
|
|
|||
|
|
@ -30,16 +30,16 @@
|
|||
#include <limits>
|
||||
#include <cstdint>
|
||||
|
||||
enum class SfzTrigger { attack = 0, release, release_key, first, legato };
|
||||
enum class SfzLoopMode { no_loop = 0, one_shot, loop_continuous, loop_sustain };
|
||||
enum class SfzOffMode { fast = 0, normal, time };
|
||||
enum class SfzVelocityOverride { current = 0, previous };
|
||||
enum class SfzCrossfadeCurve { gain = 0, power };
|
||||
enum class SfzSelfMask { mask = 0, dontMask };
|
||||
|
||||
namespace sfz
|
||||
{
|
||||
|
||||
enum class Trigger { attack = 0, release, release_key, first, legato };
|
||||
enum class LoopMode { no_loop = 0, one_shot, loop_continuous, loop_sustain };
|
||||
enum class OffMode { fast = 0, normal, time };
|
||||
enum class VelocityOverride { current = 0, previous };
|
||||
enum class CrossfadeCurve { gain = 0, power };
|
||||
enum class SelfMask { mask = 0, dontMask };
|
||||
enum class OscillatorEnabled { Auto = -1, Off = 0, On = 1 };
|
||||
|
||||
enum OpcodeFlags : int {
|
||||
|
|
@ -199,11 +199,11 @@ namespace Default
|
|||
extern const OpcodeSpec<float> lofiDecim;
|
||||
extern const OpcodeSpec<float> rectify;
|
||||
extern const OpcodeSpec<unsigned> stringsNumber;
|
||||
extern const OpcodeSpec<SfzTrigger> trigger;
|
||||
extern const OpcodeSpec<SfzOffMode> offMode;
|
||||
extern const OpcodeSpec<SfzCrossfadeCurve> crossfadeCurve;
|
||||
extern const OpcodeSpec<SfzVelocityOverride> velocityOverride;
|
||||
extern const OpcodeSpec<SfzSelfMask> selfMask;
|
||||
extern const OpcodeSpec<Trigger> trigger;
|
||||
extern const OpcodeSpec<OffMode> offMode;
|
||||
extern const OpcodeSpec<CrossfadeCurve> crossfadeCurve;
|
||||
extern const OpcodeSpec<VelocityOverride> velocityOverride;
|
||||
extern const OpcodeSpec<SelfMask> selfMask;
|
||||
extern const OpcodeSpec<FilterType> filter;
|
||||
extern const OpcodeSpec<EqType> eq;
|
||||
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ struct RiffChunkInfo {
|
|||
/**
|
||||
@brief Loop mode, like SF_LOOP_*
|
||||
*/
|
||||
enum LoopMode {
|
||||
enum FileLoopMode {
|
||||
LoopNone,
|
||||
LoopForward,
|
||||
LoopBackward,
|
||||
|
|
@ -52,7 +52,7 @@ struct InstrumentInfo {
|
|||
} loops[16];
|
||||
};
|
||||
#else
|
||||
enum LoopMode {
|
||||
enum FileLoopMode {
|
||||
LoopNone = SF_LOOP_NONE,
|
||||
LoopForward = SF_LOOP_FORWARD,
|
||||
LoopBackward = SF_LOOP_BACKWARD,
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ namespace sfz {
|
|||
* @brief Compute a crossfade in value with respect to a crossfade range (note, velocity, cc, ...)
|
||||
*/
|
||||
template <class T, class U>
|
||||
float crossfadeIn(const sfz::Range<T>& crossfadeRange, U value, SfzCrossfadeCurve curve)
|
||||
float crossfadeIn(const sfz::Range<T>& crossfadeRange, U value, CrossfadeCurve curve)
|
||||
{
|
||||
if (value < crossfadeRange.getStart())
|
||||
return 0.0f;
|
||||
|
|
@ -27,9 +27,9 @@ float crossfadeIn(const sfz::Range<T>& crossfadeRange, U value, SfzCrossfadeCurv
|
|||
|
||||
else if (value < crossfadeRange.getEnd()) {
|
||||
const auto crossfadePosition = static_cast<float>(value - crossfadeRange.getStart()) / length;
|
||||
if (curve == SfzCrossfadeCurve::power)
|
||||
if (curve == CrossfadeCurve::power)
|
||||
return sqrt(crossfadePosition);
|
||||
if (curve == SfzCrossfadeCurve::gain)
|
||||
if (curve == CrossfadeCurve::gain)
|
||||
return crossfadePosition;
|
||||
}
|
||||
|
||||
|
|
@ -40,7 +40,7 @@ float crossfadeIn(const sfz::Range<T>& crossfadeRange, U value, SfzCrossfadeCurv
|
|||
* @brief Compute a crossfade out value with respect to a crossfade range (note, velocity, cc, ...)
|
||||
*/
|
||||
template <class T, class U>
|
||||
float crossfadeOut(const sfz::Range<T>& crossfadeRange, U value, SfzCrossfadeCurve curve)
|
||||
float crossfadeOut(const sfz::Range<T>& crossfadeRange, U value, CrossfadeCurve curve)
|
||||
{
|
||||
if (value > crossfadeRange.getEnd())
|
||||
return 0.0f;
|
||||
|
|
@ -51,9 +51,9 @@ float crossfadeOut(const sfz::Range<T>& crossfadeRange, U value, SfzCrossfadeCur
|
|||
|
||||
else if (value > crossfadeRange.getStart()) {
|
||||
const auto crossfadePosition = static_cast<float>(value - crossfadeRange.getStart()) / length;
|
||||
if (curve == SfzCrossfadeCurve::power)
|
||||
if (curve == CrossfadeCurve::power)
|
||||
return std::sqrt(1 - crossfadePosition);
|
||||
if (curve == SfzCrossfadeCurve::gain)
|
||||
if (curve == CrossfadeCurve::gain)
|
||||
return 1 - crossfadePosition;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -305,14 +305,14 @@ absl::optional<OscillatorEnabled> Opcode::read(OpcodeSpec<OscillatorEnabled>) co
|
|||
}
|
||||
|
||||
template <>
|
||||
absl::optional<SfzTrigger> Opcode::read(OpcodeSpec<SfzTrigger>) const
|
||||
absl::optional<Trigger> Opcode::read(OpcodeSpec<Trigger>) const
|
||||
{
|
||||
switch (hash(value)) {
|
||||
case hash("attack"): return SfzTrigger::attack;
|
||||
case hash("first"): return SfzTrigger::first;
|
||||
case hash("legato"): return SfzTrigger::legato;
|
||||
case hash("release"): return SfzTrigger::release;
|
||||
case hash("release_key"): return SfzTrigger::release_key;
|
||||
case hash("attack"): return Trigger::attack;
|
||||
case hash("first"): return Trigger::first;
|
||||
case hash("legato"): return Trigger::legato;
|
||||
case hash("release"): return Trigger::release;
|
||||
case hash("release_key"): return Trigger::release_key;
|
||||
}
|
||||
|
||||
DBG("Unknown trigger value: " << value);
|
||||
|
|
@ -320,11 +320,11 @@ absl::optional<SfzTrigger> Opcode::read(OpcodeSpec<SfzTrigger>) const
|
|||
}
|
||||
|
||||
template <>
|
||||
absl::optional<SfzCrossfadeCurve> Opcode::read(OpcodeSpec<SfzCrossfadeCurve>) const
|
||||
absl::optional<CrossfadeCurve> Opcode::read(OpcodeSpec<CrossfadeCurve>) const
|
||||
{
|
||||
switch (hash(value)) {
|
||||
case hash("power"): return SfzCrossfadeCurve::power;
|
||||
case hash("gain"): return SfzCrossfadeCurve::gain;
|
||||
case hash("power"): return CrossfadeCurve::power;
|
||||
case hash("gain"): return CrossfadeCurve::gain;
|
||||
}
|
||||
|
||||
DBG("Unknown crossfade power curve: " << value);
|
||||
|
|
@ -332,12 +332,12 @@ absl::optional<SfzCrossfadeCurve> Opcode::read(OpcodeSpec<SfzCrossfadeCurve>) co
|
|||
}
|
||||
|
||||
template <>
|
||||
absl::optional<SfzOffMode> Opcode::read(OpcodeSpec<SfzOffMode>) const
|
||||
absl::optional<OffMode> Opcode::read(OpcodeSpec<OffMode>) const
|
||||
{
|
||||
switch (hash(value)) {
|
||||
case hash("fast"): return SfzOffMode::fast;
|
||||
case hash("normal"): return SfzOffMode::normal;
|
||||
case hash("time"): return SfzOffMode::time;
|
||||
case hash("fast"): return OffMode::fast;
|
||||
case hash("normal"): return OffMode::normal;
|
||||
case hash("time"): return OffMode::time;
|
||||
}
|
||||
|
||||
DBG("Unknown off mode: " << value);
|
||||
|
|
@ -391,11 +391,11 @@ absl::optional<EqType> Opcode::read(OpcodeSpec<EqType>) const
|
|||
}
|
||||
|
||||
template <>
|
||||
absl::optional<SfzVelocityOverride> Opcode::read(OpcodeSpec<SfzVelocityOverride>) const
|
||||
absl::optional<VelocityOverride> Opcode::read(OpcodeSpec<VelocityOverride>) const
|
||||
{
|
||||
switch (hash(value)) {
|
||||
case hash("current"): return SfzVelocityOverride::current;
|
||||
case hash("previous"): return SfzVelocityOverride::previous;
|
||||
case hash("current"): return VelocityOverride::current;
|
||||
case hash("previous"): return VelocityOverride::previous;
|
||||
}
|
||||
|
||||
DBG("Unknown velocity override: " << value);
|
||||
|
|
@ -403,12 +403,12 @@ absl::optional<SfzVelocityOverride> Opcode::read(OpcodeSpec<SfzVelocityOverride>
|
|||
}
|
||||
|
||||
template <>
|
||||
absl::optional<SfzSelfMask> Opcode::read(OpcodeSpec<SfzSelfMask>) const
|
||||
absl::optional<SelfMask> Opcode::read(OpcodeSpec<SelfMask>) const
|
||||
{
|
||||
switch (hash(value)) {
|
||||
case hash("on"):
|
||||
case hash("mask"): return SfzSelfMask::mask;
|
||||
case hash("off"): return SfzSelfMask::dontMask;
|
||||
case hash("mask"): return SelfMask::mask;
|
||||
case hash("off"): return SelfMask::dontMask;
|
||||
}
|
||||
|
||||
DBG("Unknown velocity override: " << value);
|
||||
|
|
|
|||
|
|
@ -130,16 +130,16 @@ bool sfz::Region::parseOpcode(const Opcode& rawOpcode)
|
|||
case hash("loop_mode"): // also loopmode
|
||||
switch (hash(opcode.value)) {
|
||||
case hash("no_loop"):
|
||||
loopMode = SfzLoopMode::no_loop;
|
||||
loopMode = LoopMode::no_loop;
|
||||
break;
|
||||
case hash("one_shot"):
|
||||
loopMode = SfzLoopMode::one_shot;
|
||||
loopMode = LoopMode::one_shot;
|
||||
break;
|
||||
case hash("loop_continuous"):
|
||||
loopMode = SfzLoopMode::loop_continuous;
|
||||
loopMode = LoopMode::loop_continuous;
|
||||
break;
|
||||
case hash("loop_sustain"):
|
||||
loopMode = SfzLoopMode::loop_sustain;
|
||||
loopMode = LoopMode::loop_sustain;
|
||||
break;
|
||||
default:
|
||||
DBG("Unkown loop mode:" << opcode.value);
|
||||
|
|
@ -207,7 +207,7 @@ bool sfz::Region::parseOpcode(const Opcode& rawOpcode)
|
|||
offMode = opcode.read(Default::offMode).value_or(offMode);
|
||||
break;
|
||||
case hash("off_time"):
|
||||
offMode = SfzOffMode::time;
|
||||
offMode = OffMode::time;
|
||||
offTime = opcode.read(Default::offTime).value_or(offTime);
|
||||
break;
|
||||
case hash("polyphony"):
|
||||
|
|
@ -220,10 +220,10 @@ bool sfz::Region::parseOpcode(const Opcode& rawOpcode)
|
|||
case hash("note_selfmask"):
|
||||
switch (hash(opcode.value)) {
|
||||
case hash("on"):
|
||||
selfMask = SfzSelfMask::mask;
|
||||
selfMask = SelfMask::mask;
|
||||
break;
|
||||
case hash("off"):
|
||||
selfMask = SfzSelfMask::dontMask;
|
||||
selfMask = SelfMask::dontMask;
|
||||
break;
|
||||
default:
|
||||
DBG("Unkown self mask value:" << opcode.value);
|
||||
|
|
@ -1608,9 +1608,9 @@ bool sfz::Region::registerNoteOn(int noteNumber, float velocity, float randValue
|
|||
|
||||
const bool velOk = velocityRange.containsWithEnd(velocity);
|
||||
const bool randOk = randRange.contains(randValue) || (randValue == 1.0f && randRange.getEnd() == 1.0f);
|
||||
const bool firstLegatoNote = (trigger == SfzTrigger::first && midiState.getActiveNotes() == 1);
|
||||
const bool attackTrigger = (trigger == SfzTrigger::attack);
|
||||
const bool notFirstLegatoNote = (trigger == SfzTrigger::legato && midiState.getActiveNotes() > 1);
|
||||
const bool firstLegatoNote = (trigger == Trigger::first && midiState.getActiveNotes() == 1);
|
||||
const bool attackTrigger = (trigger == Trigger::attack);
|
||||
const bool notFirstLegatoNote = (trigger == Trigger::legato && midiState.getActiveNotes() > 1);
|
||||
|
||||
return keyOk && velOk && randOk && (attackTrigger || firstLegatoNote || notFirstLegatoNote);
|
||||
}
|
||||
|
|
@ -1636,10 +1636,10 @@ bool sfz::Region::registerNoteOff(int noteNumber, float velocity, float randValu
|
|||
|
||||
// Release logic
|
||||
|
||||
if (trigger == SfzTrigger::release_key)
|
||||
if (trigger == Trigger::release_key)
|
||||
return true;
|
||||
|
||||
if (trigger == SfzTrigger::release) {
|
||||
if (trigger == Trigger::release) {
|
||||
if (midiState.getCCValue(sustainCC) < sustainThreshold)
|
||||
return true;
|
||||
|
||||
|
|
@ -1717,7 +1717,7 @@ float sfz::Region::getBaseVolumedB(int noteNumber) const noexcept
|
|||
baseVolumedB += globalVolume;
|
||||
baseVolumedB += masterVolume;
|
||||
baseVolumedB += groupVolume;
|
||||
if (trigger == SfzTrigger::release || trigger == SfzTrigger::release_key)
|
||||
if (trigger == Trigger::release || trigger == Trigger::release_key)
|
||||
baseVolumedB -= rtDecay * midiState.getNoteDuration(noteNumber);
|
||||
return baseVolumedB;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -61,7 +61,7 @@ struct Region {
|
|||
* @return true
|
||||
* @return false
|
||||
*/
|
||||
bool isRelease() const noexcept { return trigger == SfzTrigger::release || trigger == SfzTrigger::release_key; }
|
||||
bool isRelease() const noexcept { return trigger == Trigger::release || trigger == Trigger::release_key; }
|
||||
/**
|
||||
* @brief Is a generator (*sine or *silence mostly)?
|
||||
*
|
||||
|
|
@ -97,7 +97,7 @@ struct Region {
|
|||
* @return true
|
||||
* @return false
|
||||
*/
|
||||
bool shouldLoop() const noexcept { return (loopMode == SfzLoopMode::loop_continuous || loopMode == SfzLoopMode::loop_sustain); }
|
||||
bool shouldLoop() const noexcept { return (loopMode == LoopMode::loop_continuous || loopMode == LoopMode::loop_sustain); }
|
||||
/**
|
||||
* @brief Given the current midi state, is the region switched on?
|
||||
*
|
||||
|
|
@ -326,7 +326,7 @@ struct Region {
|
|||
CCMap<int64_t> offsetCC { Default::offsetMod.value };
|
||||
uint32_t sampleEnd { Default::sampleEnd.value }; // end
|
||||
absl::optional<uint32_t> sampleCount {}; // count
|
||||
absl::optional<SfzLoopMode> loopMode {}; // loopmode
|
||||
absl::optional<LoopMode> loopMode {}; // loopmode
|
||||
Range<uint32_t> loopRange { Default::loopRange.bounds }; //loopstart and loopend
|
||||
float loopCrossfade { Default::loopCrossfade.value }; // loop_crossfade
|
||||
|
||||
|
|
@ -343,11 +343,11 @@ struct Region {
|
|||
// Instrument settings: voice lifecycle
|
||||
uint32_t group { Default::group.value }; // group
|
||||
absl::optional<uint32_t> offBy {}; // off_by
|
||||
SfzOffMode offMode { Default::offMode.value }; // off_mode
|
||||
OffMode offMode { Default::offMode.value }; // off_mode
|
||||
float offTime { Default::offTime.value }; // off_mode
|
||||
absl::optional<uint32_t> notePolyphony {}; // note_polyphony
|
||||
uint32_t polyphony { config::maxVoices }; // polyphony
|
||||
SfzSelfMask selfMask { Default::selfMask.value };
|
||||
SelfMask selfMask { Default::selfMask.value };
|
||||
bool rtDead { Default::rtDead.value };
|
||||
|
||||
// Region logic: key mapping
|
||||
|
|
@ -364,7 +364,7 @@ struct Region {
|
|||
absl::optional<uint8_t> downKeyswitch {}; // sw_down
|
||||
absl::optional<uint8_t> previousKeyswitch {}; // sw_previous
|
||||
absl::optional<uint8_t> defaultSwitch {};
|
||||
SfzVelocityOverride velocityOverride { Default::velocityOverride.value }; // sw_vel
|
||||
VelocityOverride velocityOverride { Default::velocityOverride.value }; // sw_vel
|
||||
bool checkSustain { Default::checkSustain.value }; // sustain_sw
|
||||
bool checkSostenuto { Default::checkSostenuto.value }; // sostenuto_sw
|
||||
uint16_t sustainCC { Default::sustainCC.value }; // sustain_cc
|
||||
|
|
@ -378,7 +378,7 @@ struct Region {
|
|||
uint8_t sequencePosition { Default::sequence.value }; // seq_position
|
||||
|
||||
// Region logic: triggers
|
||||
SfzTrigger trigger { Default::trigger.value }; // trigger
|
||||
Trigger trigger { Default::trigger.value }; // trigger
|
||||
CCMap<Range<float>> ccTriggers { Default::normalized.bounds }; // on_loccN on_hiccN
|
||||
|
||||
// Performance parameters: amplifier
|
||||
|
|
@ -397,9 +397,9 @@ struct Region {
|
|||
Range<uint8_t> crossfadeKeyOutRange { Default::crossfadeKeyOutRange };
|
||||
Range<float> crossfadeVelInRange { Default::crossfadeVelInRange };
|
||||
Range<float> crossfadeVelOutRange { Default::crossfadeVelOutRange };
|
||||
SfzCrossfadeCurve crossfadeKeyCurve { Default::crossfadeCurve.value };
|
||||
SfzCrossfadeCurve crossfadeVelCurve { Default::crossfadeCurve.value };
|
||||
SfzCrossfadeCurve crossfadeCCCurve { Default::crossfadeCurve.value };
|
||||
CrossfadeCurve crossfadeKeyCurve { Default::crossfadeCurve.value };
|
||||
CrossfadeCurve crossfadeVelCurve { Default::crossfadeCurve.value };
|
||||
CrossfadeCurve crossfadeCCCurve { Default::crossfadeCurve.value };
|
||||
CCMap<Range<float>> crossfadeCCInRange { Default::crossfadeCCInRange }; // xfin_loccN xfin_hiccN
|
||||
CCMap<Range<float>> crossfadeCCOutRange { Default::crossfadeCCOutRange }; // xfout_loccN xfout_hiccN
|
||||
float rtDecay { Default::rtDecay.value }; // rt_decay
|
||||
|
|
|
|||
|
|
@ -596,11 +596,11 @@ void Synth::Impl::finalizeSfzLoad()
|
|||
region->loopRange.setEnd(fileInformation->loopEnd);
|
||||
|
||||
if (!region->loopMode)
|
||||
region->loopMode = SfzLoopMode::loop_continuous;
|
||||
region->loopMode = LoopMode::loop_continuous;
|
||||
}
|
||||
|
||||
if (region->isRelease() && !region->loopMode)
|
||||
region->loopMode = SfzLoopMode::one_shot;
|
||||
region->loopMode = LoopMode::one_shot;
|
||||
|
||||
if (region->loopRange.getEnd() == Default::loopRange.bounds.getEnd())
|
||||
region->loopRange.setEnd(region->sampleEnd);
|
||||
|
|
@ -656,7 +656,7 @@ void Synth::Impl::finalizeSfzLoad()
|
|||
for (int cc = 0; cc < config::numCCs; cc++) {
|
||||
if (region->ccTriggers.contains(cc)
|
||||
|| region->ccConditions.contains(cc)
|
||||
|| (cc == region->sustainCC && region->trigger == SfzTrigger::release))
|
||||
|| (cc == region->sustainCC && region->trigger == Trigger::release))
|
||||
ccActivationLists_[cc].push_back(region);
|
||||
}
|
||||
|
||||
|
|
@ -1052,7 +1052,7 @@ void Synth::Impl::noteOffDispatch(int delay, int noteNumber, float velocity) noe
|
|||
|
||||
for (auto& region : noteActivationLists_[noteNumber]) {
|
||||
if (region->registerNoteOff(noteNumber, velocity, randValue)) {
|
||||
if (region->trigger == SfzTrigger::release && !region->rtDead && !voiceManager_.playingAttackVoice(region))
|
||||
if (region->trigger == Trigger::release && !region->rtDead && !voiceManager_.playingAttackVoice(region))
|
||||
continue;
|
||||
|
||||
startVoice(region, delay, triggerEvent, ring);
|
||||
|
|
|
|||
|
|
@ -167,16 +167,16 @@ void sfz::Synth::dispatchMessage(Client& client, int delay, const char* path, co
|
|||
}
|
||||
|
||||
switch (*region.loopMode) {
|
||||
case SfzLoopMode::no_loop:
|
||||
case LoopMode::no_loop:
|
||||
client.receive<'s'>(delay, path, "no_loop");
|
||||
break;
|
||||
case SfzLoopMode::loop_continuous:
|
||||
case LoopMode::loop_continuous:
|
||||
client.receive<'s'>(delay, path, "loop_continuous");
|
||||
break;
|
||||
case SfzLoopMode::loop_sustain:
|
||||
case LoopMode::loop_sustain:
|
||||
client.receive<'s'>(delay, path, "loop_sustain");
|
||||
break;
|
||||
case SfzLoopMode::one_shot:
|
||||
case LoopMode::one_shot:
|
||||
client.receive<'s'>(delay, path, "one_shot");
|
||||
break;
|
||||
}
|
||||
|
|
@ -204,13 +204,13 @@ void sfz::Synth::dispatchMessage(Client& client, int delay, const char* path, co
|
|||
MATCH("/region&/off_mode", "") {
|
||||
GET_REGION_OR_BREAK(indices[0])
|
||||
switch (region.offMode) {
|
||||
case SfzOffMode::time:
|
||||
case OffMode::time:
|
||||
client.receive<'s'>(delay, path, "time");
|
||||
break;
|
||||
case SfzOffMode::normal:
|
||||
case OffMode::normal:
|
||||
client.receive<'s'>(delay, path, "normal");
|
||||
break;
|
||||
case SfzOffMode::fast:
|
||||
case OffMode::fast:
|
||||
client.receive<'s'>(delay, path, "fast");
|
||||
break;
|
||||
}
|
||||
|
|
@ -313,10 +313,10 @@ void sfz::Synth::dispatchMessage(Client& client, int delay, const char* path, co
|
|||
MATCH("/region&/sw_vel", "") {
|
||||
GET_REGION_OR_BREAK(indices[0])
|
||||
switch (region.velocityOverride) {
|
||||
case SfzVelocityOverride::current:
|
||||
case VelocityOverride::current:
|
||||
client.receive<'s'>(delay, path, "current");
|
||||
break;
|
||||
case SfzVelocityOverride::previous:
|
||||
case VelocityOverride::previous:
|
||||
client.receive<'s'>(delay, path, "previous");
|
||||
break;
|
||||
}
|
||||
|
|
@ -359,19 +359,19 @@ void sfz::Synth::dispatchMessage(Client& client, int delay, const char* path, co
|
|||
MATCH("/region&/trigger", "") {
|
||||
GET_REGION_OR_BREAK(indices[0])
|
||||
switch (region.trigger) {
|
||||
case SfzTrigger::attack:
|
||||
case Trigger::attack:
|
||||
client.receive<'s'>(delay, path, "attack");
|
||||
break;
|
||||
case SfzTrigger::first:
|
||||
case Trigger::first:
|
||||
client.receive<'s'>(delay, path, "first");
|
||||
break;
|
||||
case SfzTrigger::release:
|
||||
case Trigger::release:
|
||||
client.receive<'s'>(delay, path, "release");
|
||||
break;
|
||||
case SfzTrigger::release_key:
|
||||
case Trigger::release_key:
|
||||
client.receive<'s'>(delay, path, "release_key");
|
||||
break;
|
||||
case SfzTrigger::legato:
|
||||
case Trigger::legato:
|
||||
client.receive<'s'>(delay, path, "legato");
|
||||
break;
|
||||
}
|
||||
|
|
@ -696,10 +696,10 @@ void sfz::Synth::dispatchMessage(Client& client, int delay, const char* path, co
|
|||
MATCH("/region&/xf_keycurve", "") {
|
||||
GET_REGION_OR_BREAK(indices[0])
|
||||
switch (region.crossfadeKeyCurve) {
|
||||
case SfzCrossfadeCurve::gain:
|
||||
case CrossfadeCurve::gain:
|
||||
client.receive<'s'>(delay, path, "gain");
|
||||
break;
|
||||
case SfzCrossfadeCurve::power:
|
||||
case CrossfadeCurve::power:
|
||||
client.receive<'s'>(delay, path, "power");
|
||||
break;
|
||||
}
|
||||
|
|
@ -708,10 +708,10 @@ void sfz::Synth::dispatchMessage(Client& client, int delay, const char* path, co
|
|||
MATCH("/region&/xf_velcurve", "") {
|
||||
GET_REGION_OR_BREAK(indices[0])
|
||||
switch (region.crossfadeVelCurve) {
|
||||
case SfzCrossfadeCurve::gain:
|
||||
case CrossfadeCurve::gain:
|
||||
client.receive<'s'>(delay, path, "gain");
|
||||
break;
|
||||
case SfzCrossfadeCurve::power:
|
||||
case CrossfadeCurve::power:
|
||||
client.receive<'s'>(delay, path, "power");
|
||||
break;
|
||||
}
|
||||
|
|
@ -720,10 +720,10 @@ void sfz::Synth::dispatchMessage(Client& client, int delay, const char* path, co
|
|||
MATCH("/region&/xf_cccurve", "") {
|
||||
GET_REGION_OR_BREAK(indices[0])
|
||||
switch (region.crossfadeCCCurve) {
|
||||
case SfzCrossfadeCurve::gain:
|
||||
case CrossfadeCurve::gain:
|
||||
client.receive<'s'>(delay, path, "gain");
|
||||
break;
|
||||
case SfzCrossfadeCurve::power:
|
||||
case CrossfadeCurve::power:
|
||||
client.receive<'s'>(delay, path, "power");
|
||||
break;
|
||||
}
|
||||
|
|
@ -945,10 +945,10 @@ void sfz::Synth::dispatchMessage(Client& client, int delay, const char* path, co
|
|||
MATCH("/region&/note_selfmask", "") {
|
||||
GET_REGION_OR_BREAK(indices[0])
|
||||
switch(region.selfMask) {
|
||||
case SfzSelfMask::mask:
|
||||
case SelfMask::mask:
|
||||
client.receive(delay, path, "T", nullptr);
|
||||
break;
|
||||
case SfzSelfMask::dontMask:
|
||||
case SelfMask::dontMask:
|
||||
client.receive(delay, path, "F", nullptr);
|
||||
break;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -464,9 +464,9 @@ void Voice::off(int delay, bool fast) noexcept
|
|||
{
|
||||
Impl& impl = *impl_;
|
||||
if (!impl.region_->flexAmpEG) {
|
||||
if (impl.region_->offMode == SfzOffMode::fast || fast) {
|
||||
if (impl.region_->offMode == OffMode::fast || fast) {
|
||||
impl.egAmplitude_.setReleaseTime(Default::offTime.value);
|
||||
} else if (impl.region_->offMode == SfzOffMode::time) {
|
||||
} else if (impl.region_->offMode == OffMode::time) {
|
||||
impl.egAmplitude_.setReleaseTime(impl.region_->offTime);
|
||||
}
|
||||
}
|
||||
|
|
@ -492,7 +492,7 @@ void Voice::registerNoteOff(int delay, int noteNumber, float velocity) noexcept
|
|||
if (impl.triggerEvent_.number == noteNumber && impl.triggerEvent_.type == TriggerEventType::NoteOn) {
|
||||
impl.noteIsOff_ = true;
|
||||
|
||||
if (impl.region_->loopMode == SfzLoopMode::one_shot)
|
||||
if (impl.region_->loopMode == LoopMode::one_shot)
|
||||
return;
|
||||
|
||||
if (!impl.region_->checkSustain
|
||||
|
|
|
|||
|
|
@ -198,7 +198,7 @@ void VoiceManager::checkNotePolyphony(const Region* region, int delay, const Tri
|
|||
&& voiceTriggerEvent.type == triggerEvent.type) {
|
||||
notePolyphonyCounter += 1;
|
||||
switch (region->selfMask) {
|
||||
case SfzSelfMask::mask:
|
||||
case SelfMask::mask:
|
||||
if (voiceTriggerEvent.value <= triggerEvent.value) {
|
||||
if (!selfMaskCandidate
|
||||
|| selfMaskCandidate->getTriggerEvent().value > voiceTriggerEvent.value) {
|
||||
|
|
@ -206,7 +206,7 @@ void VoiceManager::checkNotePolyphony(const Region* region, int delay, const Tri
|
|||
}
|
||||
}
|
||||
break;
|
||||
case SfzSelfMask::dontMask:
|
||||
case SelfMask::dontMask:
|
||||
if (!selfMaskCandidate || selfMaskCandidate->getAge() < voice->getAge())
|
||||
selfMaskCandidate = voice;
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ void FlexEnvelopeSource::init(const ModKey& sourceKey, NumericId<Voice> voiceId,
|
|||
FlexEnvelope* eg = voice->getFlexEG(egIndex);
|
||||
eg->configure(®ion->flexEGs[egIndex]);
|
||||
bool freeRunning = (
|
||||
(region->loopMode == SfzLoopMode::one_shot && region->isOscillator())
|
||||
(region->loopMode == LoopMode::one_shot && region->isOscillator())
|
||||
);
|
||||
if (freeRunning && region->flexAmpEG && egIndex == *region->flexAmpEG)
|
||||
eg->setFreeRunning(true);
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@ TEST_CASE("[Files] Underscore opcodes (underscore_opcodes.sfz)")
|
|||
Synth synth;
|
||||
synth.loadSfzFile(fs::current_path() / "tests/TestFiles/Regions/underscore_opcodes.sfz");
|
||||
REQUIRE(synth.getNumRegions() == 1);
|
||||
REQUIRE(synth.getRegionView(0)->loopMode == SfzLoopMode::loop_sustain);
|
||||
REQUIRE(synth.getRegionView(0)->loopMode == LoopMode::loop_sustain);
|
||||
}
|
||||
|
||||
TEST_CASE("[Files] (regions_bad.sfz)")
|
||||
|
|
@ -505,11 +505,11 @@ TEST_CASE("[Files] Off modes")
|
|||
synth.noteOn(0, 64, 63);
|
||||
REQUIRE( synth.getNumActiveVoices() == 2 );
|
||||
const auto* fastVoice =
|
||||
synth.getVoiceView(0)->getRegion()->offMode == SfzOffMode::fast ?
|
||||
synth.getVoiceView(0)->getRegion()->offMode == OffMode::fast ?
|
||||
synth.getVoiceView(0) :
|
||||
synth.getVoiceView(1) ;
|
||||
const auto* normalVoice =
|
||||
synth.getVoiceView(0)->getRegion()->offMode == SfzOffMode::fast ?
|
||||
synth.getVoiceView(0)->getRegion()->offMode == OffMode::fast ?
|
||||
synth.getVoiceView(1) :
|
||||
synth.getVoiceView(0) ;
|
||||
synth.noteOn(100, 63, 63);
|
||||
|
|
@ -530,9 +530,9 @@ TEST_CASE("[Files] Looped regions taken from files and possibly overriden")
|
|||
synth.setSampleRate(44100);
|
||||
synth.loadSfzFile(fs::current_path() / "tests/TestFiles/looped_regions.sfz");
|
||||
REQUIRE( synth.getNumRegions() == 3 );
|
||||
REQUIRE( synth.getRegionView(0)->loopMode == SfzLoopMode::loop_continuous );
|
||||
REQUIRE( synth.getRegionView(1)->loopMode == SfzLoopMode::no_loop );
|
||||
REQUIRE( synth.getRegionView(2)->loopMode == SfzLoopMode::loop_continuous );
|
||||
REQUIRE( synth.getRegionView(0)->loopMode == LoopMode::loop_continuous );
|
||||
REQUIRE( synth.getRegionView(1)->loopMode == LoopMode::no_loop );
|
||||
REQUIRE( synth.getRegionView(2)->loopMode == LoopMode::loop_continuous );
|
||||
|
||||
REQUIRE(synth.getRegionView(0)->loopRange == Range<uint32_t> { 77554, 186581 });
|
||||
REQUIRE(synth.getRegionView(1)->loopRange == Range<uint32_t> { 77554, 186581 });
|
||||
|
|
@ -546,7 +546,7 @@ TEST_CASE("[Files] Looped regions can start at 0")
|
|||
<region> sample=wavetable_with_loop_at_endings.wav
|
||||
)");
|
||||
REQUIRE( synth.getNumRegions() == 1 );
|
||||
REQUIRE( synth.getRegionView(0)->loopMode == SfzLoopMode::loop_continuous );
|
||||
REQUIRE( synth.getRegionView(0)->loopMode == LoopMode::loop_continuous );
|
||||
REQUIRE( synth.getRegionView(0)->loopRange == Range<uint32_t> { 0, synth.getRegionView(0)->sampleEnd } );
|
||||
}
|
||||
|
||||
|
|
@ -563,13 +563,13 @@ TEST_CASE("[Synth] Release triggers automatically sets the loop mode")
|
|||
<region> sample=kick.wav pitch_keycenter=69 trigger=release
|
||||
)");
|
||||
REQUIRE( synth.getNumRegions() == 7 );
|
||||
REQUIRE( synth.getRegionView(0)->loopMode == SfzLoopMode::loop_sustain );
|
||||
REQUIRE( synth.getRegionView(1)->loopMode == SfzLoopMode::loop_sustain );
|
||||
REQUIRE( synth.getRegionView(2)->loopMode == SfzLoopMode::loop_sustain );
|
||||
REQUIRE( synth.getRegionView(3)->loopMode == SfzLoopMode::loop_sustain );
|
||||
REQUIRE( synth.getRegionView(4)->loopMode == SfzLoopMode::loop_continuous );
|
||||
REQUIRE( synth.getRegionView(5)->loopMode == SfzLoopMode::one_shot );
|
||||
REQUIRE( synth.getRegionView(6)->loopMode == SfzLoopMode::one_shot );
|
||||
REQUIRE( synth.getRegionView(0)->loopMode == LoopMode::loop_sustain );
|
||||
REQUIRE( synth.getRegionView(1)->loopMode == LoopMode::loop_sustain );
|
||||
REQUIRE( synth.getRegionView(2)->loopMode == LoopMode::loop_sustain );
|
||||
REQUIRE( synth.getRegionView(3)->loopMode == LoopMode::loop_sustain );
|
||||
REQUIRE( synth.getRegionView(4)->loopMode == LoopMode::loop_continuous );
|
||||
REQUIRE( synth.getRegionView(5)->loopMode == LoopMode::one_shot );
|
||||
REQUIRE( synth.getRegionView(6)->loopMode == LoopMode::one_shot );
|
||||
}
|
||||
|
||||
TEST_CASE("[Files] Case sentitiveness")
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue