Adapt start_lohdccN to match ARIA: float 0-127 range
This commit is contained in:
parent
513055980b
commit
ac8d2d24a3
4 changed files with 32 additions and 8 deletions
|
|
@ -102,6 +102,20 @@ public:
|
||||||
_start = value;
|
_start = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Convert the range to a different value type
|
||||||
|
*
|
||||||
|
* @return Range<Other>
|
||||||
|
*/
|
||||||
|
template <class Other>
|
||||||
|
Range<Other> to() const noexcept
|
||||||
|
{
|
||||||
|
return Range<Other> {
|
||||||
|
static_cast<Other>(_start),
|
||||||
|
static_cast<Other>(_end),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Type _start { static_cast<Type>(0.0) };
|
Type _start { static_cast<Type>(0.0) };
|
||||||
Type _end { static_cast<Type>(0.0) };
|
Type _end { static_cast<Type>(0.0) };
|
||||||
|
|
|
||||||
|
|
@ -324,14 +324,14 @@ bool sfz::Region::parseOpcode(const Opcode& rawOpcode)
|
||||||
case hash("start_lohdcc&"): // also on_lohdcc&
|
case hash("start_lohdcc&"): // also on_lohdcc&
|
||||||
if (opcode.parameters.back() >= config::numCCs)
|
if (opcode.parameters.back() >= config::numCCs)
|
||||||
return false;
|
return false;
|
||||||
if (auto value = readOpcode(opcode.value, Default::normalizedRange))
|
if (auto value = readOpcode(opcode.value, Default::midi7Range.to<float>()))
|
||||||
ccTriggers[opcode.parameters.back()].setStart(*value);
|
ccTriggers[opcode.parameters.back()].setStart(normalizeCC(*value));
|
||||||
break;
|
break;
|
||||||
case hash("start_hihdcc&"): // also on_hihdcc&
|
case hash("start_hihdcc&"): // also on_hihdcc&
|
||||||
if (opcode.parameters.back() >= config::numCCs)
|
if (opcode.parameters.back() >= config::numCCs)
|
||||||
return false;
|
return false;
|
||||||
if (auto value = readOpcode(opcode.value, Default::normalizedRange))
|
if (auto value = readOpcode(opcode.value, Default::midi7Range.to<float>()))
|
||||||
ccTriggers[opcode.parameters.back()].setEnd(*value);
|
ccTriggers[opcode.parameters.back()].setEnd(normalizeCC(*value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
// Performance parameters: amplifier
|
// Performance parameters: amplifier
|
||||||
|
|
|
||||||
|
|
@ -194,6 +194,16 @@ namespace literals {
|
||||||
|
|
||||||
return normalize7Bits(value);
|
return normalize7Bits(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline float operator""_norm(long double value)
|
||||||
|
{
|
||||||
|
if (value < 0)
|
||||||
|
value = 0;
|
||||||
|
if (value > 127)
|
||||||
|
value = 127;
|
||||||
|
|
||||||
|
return normalize7Bits(value);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -501,14 +501,14 @@ TEST_CASE("[Region] Parsing opcodes")
|
||||||
for (int ccIdx = 1; ccIdx < 128; ++ccIdx) {
|
for (int ccIdx = 1; ccIdx < 128; ++ccIdx) {
|
||||||
REQUIRE(!region.ccTriggers.contains(ccIdx));
|
REQUIRE(!region.ccTriggers.contains(ccIdx));
|
||||||
}
|
}
|
||||||
region.parseOpcode({ "on_lohdcc46", "0.15" });
|
region.parseOpcode({ "on_lohdcc46", "15.9" });
|
||||||
REQUIRE(region.ccTriggers.contains(46));
|
REQUIRE(region.ccTriggers.contains(46));
|
||||||
REQUIRE(region.ccTriggers[46].getStart() == Approx(0.15f));
|
REQUIRE(region.ccTriggers[46].getStart() == Approx(15.9_norm));
|
||||||
REQUIRE(region.ccTriggers[46].getEnd() == 1.0f);
|
REQUIRE(region.ccTriggers[46].getEnd() == 1.0f);
|
||||||
region.parseOpcode({ "on_hihdcc5", "0.47" });
|
region.parseOpcode({ "on_hihdcc5", "47.3" });
|
||||||
REQUIRE(region.ccTriggers.contains(5));
|
REQUIRE(region.ccTriggers.contains(5));
|
||||||
REQUIRE(region.ccTriggers[5].getStart() == 0.0f);
|
REQUIRE(region.ccTriggers[5].getStart() == 0.0f);
|
||||||
REQUIRE(region.ccTriggers[5].getEnd() == Approx(0.47f));
|
REQUIRE(region.ccTriggers[5].getEnd() == Approx(47.3_norm));
|
||||||
}
|
}
|
||||||
|
|
||||||
SECTION("volume")
|
SECTION("volume")
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue