From da75095a9b18a78355460a6bd361dc3b46333714 Mon Sep 17 00:00:00 2001 From: Paul Ferrand Date: Tue, 18 Aug 2020 23:09:03 +0200 Subject: [PATCH] Explicitely signify if a loop if present Before we tried to "guess", which causes problems if a loop spans the entire file --- src/sfizz/FilePool.cpp | 1 + src/sfizz/FilePool.h | 1 + src/sfizz/Synth.cpp | 2 +- tests/FilesT.cpp | 11 +++++++++++ .../wavetable_with_loop_at_endings.wav | Bin 0 -> 33004 bytes 5 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 tests/TestFiles/wavetable_with_loop_at_endings.wav diff --git a/src/sfizz/FilePool.cpp b/src/sfizz/FilePool.cpp index cda13a7e..6e27153b 100644 --- a/src/sfizz/FilePool.cpp +++ b/src/sfizz/FilePool.cpp @@ -227,6 +227,7 @@ absl::optional sfz::FilePool::getFileInformation(const Fil if (!fileId.isReverse()) { if (instrumentInfo.loop_count > 0) { + returnedValue.hasLoop = true; returnedValue.loopBegin = instrumentInfo.loops[0].start; returnedValue.loopEnd = min(returnedValue.end, instrumentInfo.loops[0].end - 1); } diff --git a/src/sfizz/FilePool.h b/src/sfizz/FilePool.h index cbec5f8f..9d099550 100644 --- a/src/sfizz/FilePool.h +++ b/src/sfizz/FilePool.h @@ -52,6 +52,7 @@ struct FileInformation { uint32_t end { Default::sampleEndRange.getEnd() }; uint32_t loopBegin { Default::loopRange.getStart() }; uint32_t loopEnd { Default::loopRange.getEnd() }; + bool hasLoop { false }; double sampleRate { config::defaultSampleRate }; int numChannels { 0 }; }; diff --git a/src/sfizz/Synth.cpp b/src/sfizz/Synth.cpp index 9f095c4c..40dd331b 100644 --- a/src/sfizz/Synth.cpp +++ b/src/sfizz/Synth.cpp @@ -482,7 +482,7 @@ void sfz::Synth::finalizeSfzLoad() region->sampleEnd = std::min(region->sampleEnd, fileInformation->end); - if (fileInformation->loopBegin != Default::loopRange.getStart() && fileInformation->loopEnd != Default::loopRange.getEnd()) { + if (fileInformation->hasLoop) { if (region->loopRange.getStart() == Default::loopRange.getStart()) region->loopRange.setStart(fileInformation->loopBegin); diff --git a/tests/FilesT.cpp b/tests/FilesT.cpp index 98b16dce..f92f496c 100644 --- a/tests/FilesT.cpp +++ b/tests/FilesT.cpp @@ -564,6 +564,17 @@ TEST_CASE("[Files] Looped regions taken from files and possibly overriden") REQUIRE(synth.getRegionView(2)->loopRange == Range { 4, 124 }); } +TEST_CASE("[Files] Looped regions can start at 0") +{ + Synth synth; + synth.loadSfzString(fs::current_path() / "tests/TestFiles/loop_can_start_at_0.sfz", R"( + sample=wavetable_with_loop_at_endings.wav + )"); + REQUIRE( synth.getNumRegions() == 1 ); + REQUIRE( synth.getRegionView(0)->loopMode == SfzLoopMode::loop_continuous ); + REQUIRE( synth.getRegionView(0)->loopRange == Range { 0, synth.getRegionView(0)->sampleEnd } ); +} + TEST_CASE("[Files] Case sentitiveness") { const fs::path sfzFilePath = fs::current_path() / "tests/TestFiles/case_insensitive.sfz"; diff --git a/tests/TestFiles/wavetable_with_loop_at_endings.wav b/tests/TestFiles/wavetable_with_loop_at_endings.wav new file mode 100644 index 0000000000000000000000000000000000000000..b6aafda4930b4b4e696637a71d6ef2732a3009d9 GIT binary patch literal 33004 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