Enable looping if unset in the region
This commit is contained in:
parent
3aa341e0aa
commit
8dc532b58d
4 changed files with 14 additions and 7 deletions
1
external/benchmark
vendored
Submodule
1
external/benchmark
vendored
Submodule
|
|
@ -0,0 +1 @@
|
||||||
|
Subproject commit 090faecb454fbd6e6e17a75ef8146acb037118d4
|
||||||
|
|
@ -227,7 +227,7 @@ struct Region {
|
||||||
uint32_t offsetRandom { Default::offsetRandom }; // offset_random
|
uint32_t offsetRandom { Default::offsetRandom }; // offset_random
|
||||||
uint32_t sampleEnd { Default::sampleEndRange.getEnd() }; // end
|
uint32_t sampleEnd { Default::sampleEndRange.getEnd() }; // end
|
||||||
absl::optional<uint32_t> sampleCount {}; // count
|
absl::optional<uint32_t> sampleCount {}; // count
|
||||||
SfzLoopMode loopMode { Default::loopMode }; // loopmode
|
absl::optional<SfzLoopMode> loopMode {}; // loopmode
|
||||||
Range<uint32_t> loopRange { Default::loopRange }; //loopstart and loopend
|
Range<uint32_t> loopRange { Default::loopRange }; //loopstart and loopend
|
||||||
|
|
||||||
// Instrument settings: voice lifecycle
|
// Instrument settings: voice lifecycle
|
||||||
|
|
|
||||||
|
|
@ -252,12 +252,18 @@ bool sfz::Synth::loadSfzFile(const fs::path& filename)
|
||||||
}
|
}
|
||||||
region->sampleEnd = std::min(region->sampleEnd, fileInformation->end);
|
region->sampleEnd = std::min(region->sampleEnd, fileInformation->end);
|
||||||
|
|
||||||
|
if (fileInformation->loopBegin != Default::loopRange.getStart() &&
|
||||||
|
fileInformation->loopEnd != Default::loopRange.getEnd()) {
|
||||||
if (region->loopRange.getStart() == Default::loopRange.getStart())
|
if (region->loopRange.getStart() == Default::loopRange.getStart())
|
||||||
region->loopRange.setStart(fileInformation->loopBegin);
|
region->loopRange.setStart(fileInformation->loopBegin);
|
||||||
|
|
||||||
if (region->loopRange.getEnd() == Default::loopRange.getEnd())
|
if (region->loopRange.getEnd() == Default::loopRange.getEnd())
|
||||||
region->loopRange.setEnd(fileInformation->loopEnd);
|
region->loopRange.setEnd(fileInformation->loopEnd);
|
||||||
|
|
||||||
|
if (!region->loopMode)
|
||||||
|
region->loopMode = SfzLoopMode::loop_continuous;
|
||||||
|
}
|
||||||
|
|
||||||
if (fileInformation->numChannels == 2)
|
if (fileInformation->numChannels == 2)
|
||||||
region->isStereo = true;
|
region->isStereo = true;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -99,7 +99,7 @@ TEST_CASE("[Region] Parsing opcodes")
|
||||||
|
|
||||||
SECTION("loop_mode")
|
SECTION("loop_mode")
|
||||||
{
|
{
|
||||||
REQUIRE(region.loopMode == SfzLoopMode::no_loop);
|
REQUIRE( !region.loopMode );
|
||||||
region.parseOpcode({ "loop_mode", "no_loop" });
|
region.parseOpcode({ "loop_mode", "no_loop" });
|
||||||
REQUIRE(region.loopMode == SfzLoopMode::no_loop);
|
REQUIRE(region.loopMode == SfzLoopMode::no_loop);
|
||||||
region.parseOpcode({ "loop_mode", "one_shot" });
|
region.parseOpcode({ "loop_mode", "one_shot" });
|
||||||
|
|
@ -112,7 +112,7 @@ TEST_CASE("[Region] Parsing opcodes")
|
||||||
|
|
||||||
SECTION("loopmode")
|
SECTION("loopmode")
|
||||||
{
|
{
|
||||||
REQUIRE(region.loopMode == SfzLoopMode::no_loop);
|
REQUIRE( !region.loopMode );
|
||||||
region.parseOpcode({ "loopmode", "no_loop" });
|
region.parseOpcode({ "loopmode", "no_loop" });
|
||||||
REQUIRE(region.loopMode == SfzLoopMode::no_loop);
|
REQUIRE(region.loopMode == SfzLoopMode::no_loop);
|
||||||
region.parseOpcode({ "loopmode", "one_shot" });
|
region.parseOpcode({ "loopmode", "one_shot" });
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue