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 sampleEnd { Default::sampleEndRange.getEnd() }; // end
|
||||
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
|
||||
|
||||
// Instrument settings: voice lifecycle
|
||||
|
|
|
|||
|
|
@ -252,11 +252,17 @@ bool sfz::Synth::loadSfzFile(const fs::path& filename)
|
|||
}
|
||||
region->sampleEnd = std::min(region->sampleEnd, fileInformation->end);
|
||||
|
||||
if (region->loopRange.getStart() == Default::loopRange.getStart())
|
||||
region->loopRange.setStart(fileInformation->loopBegin);
|
||||
if (fileInformation->loopBegin != Default::loopRange.getStart() &&
|
||||
fileInformation->loopEnd != Default::loopRange.getEnd()) {
|
||||
if (region->loopRange.getStart() == Default::loopRange.getStart())
|
||||
region->loopRange.setStart(fileInformation->loopBegin);
|
||||
|
||||
if (region->loopRange.getEnd() == Default::loopRange.getEnd())
|
||||
region->loopRange.setEnd(fileInformation->loopEnd);
|
||||
if (region->loopRange.getEnd() == Default::loopRange.getEnd())
|
||||
region->loopRange.setEnd(fileInformation->loopEnd);
|
||||
|
||||
if (!region->loopMode)
|
||||
region->loopMode = SfzLoopMode::loop_continuous;
|
||||
}
|
||||
|
||||
if (fileInformation->numChannels == 2)
|
||||
region->isStereo = true;
|
||||
|
|
|
|||
|
|
@ -99,7 +99,7 @@ TEST_CASE("[Region] Parsing opcodes")
|
|||
|
||||
SECTION("loop_mode")
|
||||
{
|
||||
REQUIRE(region.loopMode == SfzLoopMode::no_loop);
|
||||
REQUIRE( !region.loopMode );
|
||||
region.parseOpcode({ "loop_mode", "no_loop" });
|
||||
REQUIRE(region.loopMode == SfzLoopMode::no_loop);
|
||||
region.parseOpcode({ "loop_mode", "one_shot" });
|
||||
|
|
@ -112,7 +112,7 @@ TEST_CASE("[Region] Parsing opcodes")
|
|||
|
||||
SECTION("loopmode")
|
||||
{
|
||||
REQUIRE(region.loopMode == SfzLoopMode::no_loop);
|
||||
REQUIRE( !region.loopMode );
|
||||
region.parseOpcode({ "loopmode", "no_loop" });
|
||||
REQUIRE(region.loopMode == SfzLoopMode::no_loop);
|
||||
region.parseOpcode({ "loopmode", "one_shot" });
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue