Added support for parsing bend ranges
This commit is contained in:
parent
8fecef27ca
commit
a1282ff193
4 changed files with 48 additions and 2 deletions
|
|
@ -128,6 +128,11 @@ namespace Default
|
|||
constexpr Range<int> transposeRange { -127, 127 };
|
||||
constexpr int tune { 0 };
|
||||
constexpr Range<int> tuneRange { -100, 100 };
|
||||
constexpr Range<int> bendBoundRange { -9600, 9600 };
|
||||
constexpr Range<int> bendStepRange { 1, 1200 };
|
||||
constexpr int bendUp { 200 }; // No range here because the bounds can be inverted
|
||||
constexpr int bendDown { -200 };
|
||||
constexpr int bendStep { 1 };
|
||||
|
||||
// Envelope generators
|
||||
constexpr float attack { 0 };
|
||||
|
|
|
|||
|
|
@ -407,6 +407,15 @@ bool sfz::Region::parseOpcode(const Opcode& opcode)
|
|||
case hash("tune"):
|
||||
setValueFromOpcode(opcode, tune, Default::tuneRange);
|
||||
break;
|
||||
case hash("bend_up"):
|
||||
setValueFromOpcode(opcode, bendUp, Default::bendBoundRange);
|
||||
break;
|
||||
case hash("bend_down"):
|
||||
setValueFromOpcode(opcode, bendDown, Default::bendBoundRange);
|
||||
break;
|
||||
case hash("bend_step"):
|
||||
setValueFromOpcode(opcode, bendStep, Default::bendStepRange);
|
||||
break;
|
||||
|
||||
// Amplitude Envelope
|
||||
case hash("ampeg_attack"):
|
||||
|
|
|
|||
|
|
@ -300,6 +300,9 @@ struct Region {
|
|||
int pitchVeltrack { Default::pitchVeltrack }; // pitch_veltrack
|
||||
int transpose { Default::transpose }; // transpose
|
||||
int tune { Default::tune }; // tune
|
||||
int bendUp { Default::bendUp };
|
||||
int bendDown { Default::bendDown };
|
||||
int bendStep { Default::bendStep };
|
||||
|
||||
// Envelopes
|
||||
EGDescription amplitudeEG;
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ TEST_CASE("[Region] Parsing opcodes")
|
|||
{
|
||||
sfz::MidiState midiState;
|
||||
sfz::Region region { midiState };
|
||||
|
||||
|
||||
SECTION("sample")
|
||||
{
|
||||
REQUIRE(region.sample == "");
|
||||
|
|
@ -832,6 +832,35 @@ TEST_CASE("[Region] Parsing opcodes")
|
|||
REQUIRE(region.tune == -100);
|
||||
}
|
||||
|
||||
SECTION("bend_up, bend_down, bend_step")
|
||||
{
|
||||
REQUIRE(region.bendUp == 200);
|
||||
REQUIRE(region.bendDown == -200);
|
||||
REQUIRE(region.bendStep == 1);
|
||||
region.parseOpcode({ "bend_up", "400" });
|
||||
REQUIRE(region.bendUp == 400);
|
||||
region.parseOpcode({ "bend_up", "-200" });
|
||||
REQUIRE(region.bendUp == -200);
|
||||
region.parseOpcode({ "bend_up", "9700" });
|
||||
REQUIRE(region.bendUp == 9600);
|
||||
region.parseOpcode({ "bend_up", "-9700" });
|
||||
REQUIRE(region.bendUp == -9600);
|
||||
region.parseOpcode({ "bend_down", "400" });
|
||||
REQUIRE(region.bendDown == 400);
|
||||
region.parseOpcode({ "bend_down", "-200" });
|
||||
REQUIRE(region.bendDown == -200);
|
||||
region.parseOpcode({ "bend_down", "9700" });
|
||||
REQUIRE(region.bendDown == 9600);
|
||||
region.parseOpcode({ "bend_down", "-9700" });
|
||||
REQUIRE(region.bendDown == -9600);
|
||||
region.parseOpcode({ "bend_step", "400" });
|
||||
REQUIRE(region.bendStep == 400);
|
||||
region.parseOpcode({ "bend_step", "-200" });
|
||||
REQUIRE(region.bendStep == 1);
|
||||
region.parseOpcode({ "bend_step", "9700" });
|
||||
REQUIRE(region.bendStep == 1200);
|
||||
}
|
||||
|
||||
SECTION("ampeg")
|
||||
{
|
||||
// Defaults
|
||||
|
|
@ -1045,4 +1074,4 @@ TEST_CASE("[Region] Non-conforming floating point values in integer opcodes")
|
|||
REQUIRE(region.offset == 2014);
|
||||
region.parseOpcode({ "pitch_keytrack", "-2.1" });
|
||||
REQUIRE(region.pitchKeytrack == -2);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue