Parse filter/eq modulation targets
This commit is contained in:
parent
8c625d1e04
commit
4e58a945a8
4 changed files with 37 additions and 0 deletions
|
|
@ -585,6 +585,7 @@ bool sfz::Region::parseOpcode(const Opcode& rawOpcode)
|
||||||
if (!extendIfNecessary(filters, filterIndex + 1, Default::numFilters))
|
if (!extendIfNecessary(filters, filterIndex + 1, Default::numFilters))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
processGenericCc(opcode, Default::filterCutoffModRange, ModKey::createNXYZ(ModId::FilCutoff, id, filterIndex));
|
||||||
setValueFromOpcode(
|
setValueFromOpcode(
|
||||||
opcode,
|
opcode,
|
||||||
filters[filterIndex].cutoffCC[opcode.parameters.back()],
|
filters[filterIndex].cutoffCC[opcode.parameters.back()],
|
||||||
|
|
@ -598,6 +599,7 @@ bool sfz::Region::parseOpcode(const Opcode& rawOpcode)
|
||||||
if (!extendIfNecessary(filters, filterIndex + 1, Default::numFilters))
|
if (!extendIfNecessary(filters, filterIndex + 1, Default::numFilters))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
processGenericCc(opcode, Default::filterResonanceModRange, ModKey::createNXYZ(ModId::FilResonance, id, filterIndex));
|
||||||
setValueFromOpcode(
|
setValueFromOpcode(
|
||||||
opcode,
|
opcode,
|
||||||
filters[filterIndex].resonanceCC[opcode.parameters.back()],
|
filters[filterIndex].resonanceCC[opcode.parameters.back()],
|
||||||
|
|
@ -656,6 +658,7 @@ bool sfz::Region::parseOpcode(const Opcode& rawOpcode)
|
||||||
if (!extendIfNecessary(filters, filterIndex + 1, Default::numFilters))
|
if (!extendIfNecessary(filters, filterIndex + 1, Default::numFilters))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
processGenericCc(opcode, Default::filterGainModRange, ModKey::createNXYZ(ModId::FilGain, id, filterIndex));
|
||||||
setValueFromOpcode(
|
setValueFromOpcode(
|
||||||
opcode,
|
opcode,
|
||||||
filters[filterIndex].gainCC[opcode.parameters.back()],
|
filters[filterIndex].gainCC[opcode.parameters.back()],
|
||||||
|
|
@ -688,6 +691,7 @@ bool sfz::Region::parseOpcode(const Opcode& rawOpcode)
|
||||||
return false;
|
return false;
|
||||||
if (!extendIfNecessary(equalizers, eqNumber, Default::numEQs))
|
if (!extendIfNecessary(equalizers, eqNumber, Default::numEQs))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
setValueFromOpcode(opcode, equalizers[eqNumber - 1].bandwidth, Default::eqBandwidthRange);
|
setValueFromOpcode(opcode, equalizers[eqNumber - 1].bandwidth, Default::eqBandwidthRange);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
@ -699,6 +703,7 @@ bool sfz::Region::parseOpcode(const Opcode& rawOpcode)
|
||||||
if (!extendIfNecessary(equalizers, eqNumber, Default::numEQs))
|
if (!extendIfNecessary(equalizers, eqNumber, Default::numEQs))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
processGenericCc(opcode, Default::eqBandwidthModRange, ModKey::createNXYZ(ModId::EqBandwidth, id, eqNumber));
|
||||||
setValueFromOpcode(opcode, equalizers[eqNumber - 1].bandwidthCC[opcode.parameters.back()], Default::eqBandwidthModRange);
|
setValueFromOpcode(opcode, equalizers[eqNumber - 1].bandwidthCC[opcode.parameters.back()], Default::eqBandwidthModRange);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
@ -720,6 +725,7 @@ bool sfz::Region::parseOpcode(const Opcode& rawOpcode)
|
||||||
if (!extendIfNecessary(equalizers, eqNumber, Default::numEQs))
|
if (!extendIfNecessary(equalizers, eqNumber, Default::numEQs))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
processGenericCc(opcode, Default::eqFrequencyModRange, ModKey::createNXYZ(ModId::EqFrequency, id, eqNumber));
|
||||||
setValueFromOpcode(opcode, equalizers[eqNumber - 1].frequencyCC[opcode.parameters.back()], Default::eqFrequencyModRange);
|
setValueFromOpcode(opcode, equalizers[eqNumber - 1].frequencyCC[opcode.parameters.back()], Default::eqFrequencyModRange);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
@ -754,6 +760,7 @@ bool sfz::Region::parseOpcode(const Opcode& rawOpcode)
|
||||||
if (!extendIfNecessary(equalizers, eqNumber, Default::numEQs))
|
if (!extendIfNecessary(equalizers, eqNumber, Default::numEQs))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
processGenericCc(opcode, Default::eqGainModRange, ModKey::createNXYZ(ModId::EqGain, id, eqNumber));
|
||||||
setValueFromOpcode(opcode, equalizers[eqNumber - 1].gainCC[opcode.parameters.back()], Default::eqGainModRange);
|
setValueFromOpcode(opcode, equalizers[eqNumber - 1].gainCC[opcode.parameters.back()], Default::eqGainModRange);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
|
|
@ -44,6 +44,18 @@ int ModIds::flags(ModId id) noexcept
|
||||||
return kModIsPerVoice|kModIsAdditive;
|
return kModIsPerVoice|kModIsAdditive;
|
||||||
case ModId::Volume:
|
case ModId::Volume:
|
||||||
return kModIsPerVoice|kModIsAdditive;
|
return kModIsPerVoice|kModIsAdditive;
|
||||||
|
case ModId::FilGain:
|
||||||
|
return kModIsPerVoice|kModIsAdditive;
|
||||||
|
case ModId::FilCutoff:
|
||||||
|
return kModIsPerVoice|kModIsAdditive;
|
||||||
|
case ModId::FilResonance:
|
||||||
|
return kModIsPerVoice|kModIsMultiplicative;
|
||||||
|
case ModId::EqGain:
|
||||||
|
return kModIsPerVoice|kModIsAdditive;
|
||||||
|
case ModId::EqFrequency:
|
||||||
|
return kModIsPerVoice|kModIsAdditive;
|
||||||
|
case ModId::EqBandwidth:
|
||||||
|
return kModIsPerVoice|kModIsAdditive;
|
||||||
|
|
||||||
// unknown
|
// unknown
|
||||||
default:
|
default:
|
||||||
|
|
|
||||||
|
|
@ -37,6 +37,12 @@ enum class ModId : int {
|
||||||
Position,
|
Position,
|
||||||
Pitch,
|
Pitch,
|
||||||
Volume,
|
Volume,
|
||||||
|
FilGain,
|
||||||
|
FilCutoff,
|
||||||
|
FilResonance,
|
||||||
|
EqGain,
|
||||||
|
EqFrequency,
|
||||||
|
EqBandwidth,
|
||||||
|
|
||||||
_TargetsEnd,
|
_TargetsEnd,
|
||||||
// [/targets] --------------------------------------------------------------
|
// [/targets] --------------------------------------------------------------
|
||||||
|
|
|
||||||
|
|
@ -87,6 +87,18 @@ std::string ModKey::toString() const
|
||||||
return absl::StrCat("Pitch {", region_.number(), "}");
|
return absl::StrCat("Pitch {", region_.number(), "}");
|
||||||
case ModId::Volume:
|
case ModId::Volume:
|
||||||
return absl::StrCat("Volume {", region_.number(), "}");
|
return absl::StrCat("Volume {", region_.number(), "}");
|
||||||
|
case ModId::FilGain:
|
||||||
|
return absl::StrCat("FilterGain {", region_.number(), "N=", params_.N, "}");
|
||||||
|
case ModId::FilCutoff:
|
||||||
|
return absl::StrCat("FilterCutoff {", region_.number(), "N=", params_.N, "}");
|
||||||
|
case ModId::FilResonance:
|
||||||
|
return absl::StrCat("FilterResonance {", region_.number(), "N=", params_.N, "}");
|
||||||
|
case ModId::EqGain:
|
||||||
|
return absl::StrCat("EqGain {", region_.number(), "N=", params_.N, "}");
|
||||||
|
case ModId::EqFrequency:
|
||||||
|
return absl::StrCat("EqFrequency {", region_.number(), "N=", params_.N, "}");
|
||||||
|
case ModId::EqBandwidth:
|
||||||
|
return absl::StrCat("EqBandwitdth {", region_.number(), "N=", params_.N, "}");
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return {};
|
return {};
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue