From 45bab7289f0acffc1c517c94eadb63df60820591 Mon Sep 17 00:00:00 2001 From: Jean Pierre Cimalando Date: Tue, 23 Feb 2021 20:02:11 +0100 Subject: [PATCH] Load equal temperament if scl loading fails --- src/sfizz/Tuning.cpp | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/src/sfizz/Tuning.cpp b/src/sfizz/Tuning.cpp index 82ccdfe8..5130fe4a 100644 --- a/src/sfizz/Tuning.cpp +++ b/src/sfizz/Tuning.cpp @@ -162,50 +162,59 @@ Tuning::~Tuning() bool Tuning::loadScalaFile(const fs::path& path) { + Tunings::Scale scl; fs::ifstream stream(path); + if (stream.bad()) { DBG("Cannot open scale file: " << path); - return false; + goto failure; } - Tunings::Scale scl; try { scl = Tunings::readSCLStream(stream); } catch (Tunings::TuningError& error) { DBG("Tuning: " << error.what()); - return false; + goto failure; } if (scl.count <= 0) { DBG("The scale file is empty: " << path); - return false; + goto failure; } impl_->updateScale(scl, path); return true; + +failure: + loadEqualTemperamentScale(); + return false; } bool Tuning::loadScalaString(const std::string& text) { + Tunings::Scale scl; std::istringstream stream(text); - Tunings::Scale scl; try { scl = Tunings::readSCLStream(stream); } catch (Tunings::TuningError& error) { DBG("Tuning: " << error.what()); - return false; + goto failure; } if (scl.count <= 0) { DBG("Error loading scala string: " << text); - return false; + goto failure; } impl_->updateScale(scl); return true; + +failure: + loadEqualTemperamentScale(); + return false; } void Tuning::setScalaRootKey(int rootKey)