Fix some numCC comparisons which are off by 1

This commit is contained in:
Jean Pierre Cimalando 2020-04-16 14:08:11 +02:00
parent 4f573a6a23
commit e4103600ec
2 changed files with 33 additions and 33 deletions

View file

@ -155,7 +155,7 @@ void sfz::MidiState::resetAllControllers(int delay) noexcept
const sfz::EventVector& sfz::MidiState::getCCEvents(int ccIdx) const noexcept
{
if (ccIdx < 0 || ccIdx > config::numCCs)
if (ccIdx < 0 || ccIdx >= config::numCCs)
return nullEvent;
return cc[ccIdx];

View file

@ -184,13 +184,13 @@ bool sfz::Region::parseOpcode(const Opcode& opcode)
bendRange.setEnd(normalizeBend(*value));
break;
case hash("locc&"):
if (opcode.parameters.back() > config::numCCs)
if (opcode.parameters.back() >= config::numCCs)
return false;
if (auto value = readOpcode(opcode.value, Default::midi7Range))
ccConditions[opcode.parameters.back()].setStart(normalizeCC(*value));
break;
case hash("hicc&"):
if (opcode.parameters.back() > config::numCCs)
if (opcode.parameters.back() >= config::numCCs)
return false;
if (auto value = readOpcode(opcode.value, Default::midi7Range))
ccConditions[opcode.parameters.back()].setEnd(normalizeCC(*value));
@ -285,14 +285,14 @@ bool sfz::Region::parseOpcode(const Opcode& opcode)
break;
case hash("on_locc&"): // fallthrough
case hash("start_locc&"):
if (opcode.parameters.back() > config::numCCs)
if (opcode.parameters.back() >= config::numCCs)
return false;
if (auto value = readOpcode(opcode.value, Default::midi7Range))
ccTriggers[opcode.parameters.back()].setStart(normalizeCC(*value));
break;
case hash("on_hicc&"): // fallthrough
case hash("start_hicc&"):
if (opcode.parameters.back() > config::numCCs)
if (opcode.parameters.back() >= config::numCCs)
return false;
if (auto value = readOpcode(opcode.value, Default::midi7Range))
ccTriggers[opcode.parameters.back()].setEnd(normalizeCC(*value));
@ -303,19 +303,19 @@ bool sfz::Region::parseOpcode(const Opcode& opcode)
setValueFromOpcode(opcode, volume, Default::volumeRange);
break;
case hash("volume_curvecc&"):
if (opcode.parameters.back() > config::numCCs)
if (opcode.parameters.back() >= config::numCCs)
return false;
if (auto value = readOpcode(opcode.value, Default::curveCCRange))
volumeCC[opcode.parameters.back()].curve = *value;
break;
case hash("volume_stepcc&"):
if (opcode.parameters.back() > config::numCCs)
if (opcode.parameters.back() >= config::numCCs)
return false;
if (auto value = readOpcode(opcode.value, Default::volumeStepRange))
volumeCC[opcode.parameters.back()].step = *value;
break;
case hash("volume_smoothcc&"):
if (opcode.parameters.back() > config::numCCs)
if (opcode.parameters.back() >= config::numCCs)
return false;
if (auto value = readOpcode(opcode.value, Default::smoothCCRange))
volumeCC[opcode.parameters.back()].smooth = *value;
@ -323,7 +323,7 @@ bool sfz::Region::parseOpcode(const Opcode& opcode)
case hash("gain_cc&"):
case hash("gain_oncc&"): // fallthrough
case hash("volume_oncc&"):
if (opcode.parameters.back() > config::numCCs)
if (opcode.parameters.back() >= config::numCCs)
return false;
if (auto value = readOpcode(opcode.value, Default::volumeCCRange))
volumeCC[opcode.parameters.back()].value = *value;
@ -333,26 +333,26 @@ bool sfz::Region::parseOpcode(const Opcode& opcode)
amplitude = normalizePercents(*value);
break;
case hash("amplitude_curvecc&"):
if (opcode.parameters.back() > config::numCCs)
if (opcode.parameters.back() >= config::numCCs)
return false;
if (auto value = readOpcode(opcode.value, Default::curveCCRange))
amplitudeCC[opcode.parameters.back()].curve = *value;
break;
case hash("amplitude_stepcc&"):
if (opcode.parameters.back() > config::numCCs)
if (opcode.parameters.back() >= config::numCCs)
return false;
if (auto value = readOpcode(opcode.value, Default::amplitudeRange))
amplitudeCC[opcode.parameters.back()].step = normalizePercents(*value);
break;
case hash("amplitude_smoothcc&"):
if (opcode.parameters.back() > config::numCCs)
if (opcode.parameters.back() >= config::numCCs)
return false;
if (auto value = readOpcode(opcode.value, Default::smoothCCRange))
amplitudeCC[opcode.parameters.back()].smooth = *value;
break;
case hash("amplitude_cc&"): // fallthrough
case hash("amplitude_oncc&"):
if (opcode.parameters.back() > config::numCCs)
if (opcode.parameters.back() >= config::numCCs)
return false;
if (auto value = readOpcode(opcode.value, Default::amplitudeRange))
amplitudeCC[opcode.parameters.back()].value = normalizePercents(*value);
@ -362,26 +362,26 @@ bool sfz::Region::parseOpcode(const Opcode& opcode)
pan = normalizePercents(*value);
break;
case hash("pan_curvecc&"):
if (opcode.parameters.back() > config::numCCs)
if (opcode.parameters.back() >= config::numCCs)
return false;
if (auto value = readOpcode(opcode.value, Default::curveCCRange))
panCC[opcode.parameters.back()].curve = *value;
break;
case hash("pan_stepcc&"):
if (opcode.parameters.back() > config::numCCs)
if (opcode.parameters.back() >= config::numCCs)
return false;
if (auto value = readOpcode(opcode.value, Default::panStepRange))
panCC[opcode.parameters.back()].step = normalizePercents(*value);
break;
case hash("pan_smoothcc&"):
if (opcode.parameters.back() > config::numCCs)
if (opcode.parameters.back() >= config::numCCs)
return false;
if (auto value = readOpcode(opcode.value, Default::smoothCCRange))
panCC[opcode.parameters.back()].smooth = *value;
break;
case hash("pan_cc&"):
case hash("pan_oncc&"):
if (opcode.parameters.back() > config::numCCs)
if (opcode.parameters.back() >= config::numCCs)
return false;
if (auto value = readOpcode(opcode.value, Default::panCCRange))
panCC[opcode.parameters.back()].value = normalizePercents(*value);
@ -391,26 +391,26 @@ bool sfz::Region::parseOpcode(const Opcode& opcode)
position = normalizePercents(*value);
break;
case hash("position_curvecc&"):
if (opcode.parameters.back() > config::numCCs)
if (opcode.parameters.back() >= config::numCCs)
return false;
if (auto value = readOpcode(opcode.value, Default::curveCCRange))
positionCC[opcode.parameters.back()].curve = *value;
break;
case hash("position_stepcc&"):
if (opcode.parameters.back() > config::numCCs)
if (opcode.parameters.back() >= config::numCCs)
return false;
if (auto value = readOpcode(opcode.value, Default::positionStepRange))
positionCC[opcode.parameters.back()].step = normalizePercents(*value);
break;
case hash("position_smoothcc&"):
if (opcode.parameters.back() > config::numCCs)
if (opcode.parameters.back() >= config::numCCs)
return false;
if (auto value = readOpcode(opcode.value, Default::smoothCCRange))
positionCC[opcode.parameters.back()].smooth = *value;
break;
case hash("position_cc&"): // fallthrough
case hash("position_oncc&"):
if (opcode.parameters.back() > config::numCCs)
if (opcode.parameters.back() >= config::numCCs)
return false;
if (auto value = readOpcode(opcode.value, Default::positionCCRange))
positionCC[opcode.parameters.back()].value = normalizePercents(*value);
@ -420,25 +420,25 @@ bool sfz::Region::parseOpcode(const Opcode& opcode)
width = normalizePercents(*value);
break;
case hash("width_curvecc&"):
if (opcode.parameters.back() > config::numCCs)
if (opcode.parameters.back() >= config::numCCs)
return false;
if (auto value = readOpcode(opcode.value, Default::curveCCRange))
widthCC[opcode.parameters.back()].curve = *value;
break;
case hash("width_stepcc&"):
if (opcode.parameters.back() > config::numCCs)
if (opcode.parameters.back() >= config::numCCs)
return false;
if (auto value = readOpcode(opcode.value, Default::widthStepRange))
widthCC[opcode.parameters.back()].step = normalizePercents(*value);
break;
case hash("width_smoothcc&"):
if (opcode.parameters.back() > config::numCCs)
if (opcode.parameters.back() >= config::numCCs)
return false;
if (auto value = readOpcode(opcode.value, Default::smoothCCRange))
widthCC[opcode.parameters.back()].smooth = *value;
break;
case hash("width_oncc&"):
if (opcode.parameters.back() > config::numCCs)
if (opcode.parameters.back() >= config::numCCs)
return false;
if (auto value = readOpcode(opcode.value, Default::widthCCRange))
widthCC[opcode.parameters.back()].value = normalizePercents(*value);
@ -518,25 +518,25 @@ bool sfz::Region::parseOpcode(const Opcode& opcode)
}
break;
case hash("xfin_locc&"):
if (opcode.parameters.back() > config::numCCs)
if (opcode.parameters.back() >= config::numCCs)
return false;
if (auto value = readOpcode(opcode.value, Default::midi7Range))
crossfadeCCInRange[opcode.parameters.back()].setStart(normalizeCC(*value));
break;
case hash("xfin_hicc&"):
if (opcode.parameters.back() > config::numCCs)
if (opcode.parameters.back() >= config::numCCs)
return false;
if (auto value = readOpcode(opcode.value, Default::midi7Range))
crossfadeCCInRange[opcode.parameters.back()].setEnd(normalizeCC(*value));
break;
case hash("xfout_locc&"):
if (opcode.parameters.back() > config::numCCs)
if (opcode.parameters.back() >= config::numCCs)
return false;
if (auto value = readOpcode(opcode.value, Default::midi7Range))
crossfadeCCOutRange[opcode.parameters.back()].setStart(normalizeCC(*value));
break;
case hash("xfout_hicc&"):
if (opcode.parameters.back() > config::numCCs)
if (opcode.parameters.back() >= config::numCCs)
return false;
if (auto value = readOpcode(opcode.value, Default::midi7Range))
crossfadeCCOutRange[opcode.parameters.back()].setEnd(normalizeCC(*value));
@ -824,21 +824,21 @@ bool sfz::Region::parseOpcode(const Opcode& opcode)
break;
case hash("pitch_curvecc&"): // fallthrough
case hash("tune_curvecc&"):
if (opcode.parameters.back() > config::numCCs)
if (opcode.parameters.back() >= config::numCCs)
return false;
if (auto value = readOpcode(opcode.value, Default::curveCCRange))
tuneCC[opcode.parameters.back()].curve = *value;
break;
case hash("pitch_stepcc&"): // fallthrough
case hash("tune_stepcc&"):
if (opcode.parameters.back() > config::numCCs)
if (opcode.parameters.back() >= config::numCCs)
return false;
if (auto value = readOpcode(opcode.value, Default::tuneStepRange))
tuneCC[opcode.parameters.back()].step = *value;
break;
case hash("pitch_smoothcc&"): // fallthrough
case hash("tune_smoothcc&"):
if (opcode.parameters.back() > config::numCCs)
if (opcode.parameters.back() >= config::numCCs)
return false;
if (auto value = readOpcode(opcode.value, Default::smoothCCRange))
tuneCC[opcode.parameters.back()].smooth = *value;
@ -847,7 +847,7 @@ bool sfz::Region::parseOpcode(const Opcode& opcode)
case hash("tune_oncc&"):
case hash("pitch_cc&"):
case hash("pitch_oncc&"):
if (opcode.parameters.back() > config::numCCs)
if (opcode.parameters.back() >= config::numCCs)
return false;
if (auto value = readOpcode(opcode.value, Default::tuneCCRange))
tuneCC[opcode.parameters.back()].value = *value;