From 2f6fdd34f10f933ccacae8441b11cd84a06a50f2 Mon Sep 17 00:00:00 2001 From: Paul Fd Date: Thu, 12 Mar 2020 23:43:57 +0100 Subject: [PATCH 1/7] Correct linting on VstProcessor --- vst/SfizzVstProcessor.cpp | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/vst/SfizzVstProcessor.cpp b/vst/SfizzVstProcessor.cpp index 55877da3..a804af43 100644 --- a/vst/SfizzVstProcessor.cpp +++ b/vst/SfizzVstProcessor.cpp @@ -12,7 +12,13 @@ #include "pluginterfaces/vst/ivstparameterchanges.h" #include -#pragma message("TODO: send tempo") +#pragma message("TODO: send tempo") // NOLINT + +template +constexpr int fastRound(T x) +{ + return static_cast(x + T{ 0.5 }); // NOLINT +} SfizzVstProcessor::SfizzVstProcessor() : _fifoToWorker(1024) @@ -22,7 +28,11 @@ SfizzVstProcessor::SfizzVstProcessor() SfizzVstProcessor::~SfizzVstProcessor() { - setActive(false); // to be sure + try { + stopBackgroundWork(); + } catch (const std::exception& e) { + fprintf(stderr, "Caught exception: %s\n", e.what()); + } } tresult PLUGIN_API SfizzVstProcessor::initialize(FUnknown* context) @@ -249,7 +259,7 @@ void SfizzVstProcessor::processControllerChanges(Vst::IParameterChanges& pc) int ccNumber = id - kPidMidiCC0; for (uint32 pointIndex = 0; pointIndex < pointCount; ++pointIndex) { if (vq->getPoint(pointIndex, sampleOffset, value) == kResultTrue) - synth.cc(sampleOffset, ccNumber, (int)(0.5 + value * 127.0)); + synth.cc(sampleOffset, ccNumber, fastRound(value * 127.0)); } } break; @@ -257,14 +267,14 @@ void SfizzVstProcessor::processControllerChanges(Vst::IParameterChanges& pc) case kPidMidiAftertouch: for (uint32 pointIndex = 0; pointIndex < pointCount; ++pointIndex) { if (vq->getPoint(pointIndex, sampleOffset, value) == kResultTrue) - synth.aftertouch(sampleOffset, (int)(0.5 + value * 127.0)); + synth.aftertouch(sampleOffset, fastRound(value * 127.0)); } break; case kPidMidiPitchBend: for (uint32 pointIndex = 0; pointIndex < pointCount; ++pointIndex) { if (vq->getPoint(pointIndex, sampleOffset, value) == kResultTrue) - synth.pitchWheel(sampleOffset, (int)(0.5 + value * 16383) - 8192); + synth.pitchWheel(sampleOffset, fastRound(value * 16383) - 8192); } break; } From 9d2526ec6fdbb1903e73a86f1e808a67f75ff848 Mon Sep 17 00:00:00 2001 From: Paul Fd Date: Thu, 12 Mar 2020 23:45:04 +0100 Subject: [PATCH 2/7] Explicit cast to int --- vst/SfizzVstController.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vst/SfizzVstController.cpp b/vst/SfizzVstController.cpp index cc13b355..5598ca43 100644 --- a/vst/SfizzVstController.cpp +++ b/vst/SfizzVstController.cpp @@ -84,7 +84,7 @@ tresult PLUGIN_API SfizzVstControllerNoUi::getParamStringByValue(Vst::ParamID ta switch (tag) { case kPidOversampling: { - int factorLog2 = kParamOversamplingRange.denormalize(valueNormalized); + auto factorLog2 = static_cast(kParamOversamplingRange.denormalize(valueNormalized)); Steinberg::String buf; buf.printf("%dX", 1 << factorLog2); buf.copyTo(string); From d09032c44fbdc8771a221388474050af6534fe26 Mon Sep 17 00:00:00 2001 From: Paul Fd Date: Thu, 12 Mar 2020 23:47:50 +0100 Subject: [PATCH 3/7] Explicit cast to int The value bounds is checked anyway --- vst/SfizzVstProcessor.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vst/SfizzVstProcessor.cpp b/vst/SfizzVstProcessor.cpp index a804af43..08e516f6 100644 --- a/vst/SfizzVstProcessor.cpp +++ b/vst/SfizzVstProcessor.cpp @@ -256,7 +256,7 @@ void SfizzVstProcessor::processControllerChanges(Vst::IParameterChanges& pc) switch (id) { default: if (id >= kPidMidiCC0 && id <= kPidMidiCCLast) { - int ccNumber = id - kPidMidiCC0; + auto ccNumber = static_cast(id - kPidMidiCC0); for (uint32 pointIndex = 0; pointIndex < pointCount; ++pointIndex) { if (vq->getPoint(pointIndex, sampleOffset, value) == kResultTrue) synth.cc(sampleOffset, ccNumber, fastRound(value * 127.0)); From 779aacc07b872a465c255b39c2817285437694e4 Mon Sep 17 00:00:00 2001 From: Paul Fd Date: Thu, 12 Mar 2020 23:57:06 +0100 Subject: [PATCH 4/7] Update clang-tidy --- scripts/run_clang_tidy.sh | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/scripts/run_clang_tidy.sh b/scripts/run_clang_tidy.sh index e660173b..7431d3f5 100755 --- a/scripts/run_clang_tidy.sh +++ b/scripts/run_clang_tidy.sh @@ -19,6 +19,14 @@ clang-tidy \ src/sfizz/SIMDSSE.cpp \ src/sfizz/Synth.cpp \ src/sfizz/Voice.cpp \ + src/sfizz/effects/Eq.cpp \ + src/sfizz/effects/Filter.cpp \ src/sfizz/effects/Lofi.cpp \ src/sfizz/effects/Nothing.cpp \ - -- -Iexternal/abseil-cpp -Isrc/external -Isrc/external/pugixml/src -Isrc/sfizz -Isrc + vst/SfizzVstController.cpp \ + vst/SfizzVstProcessor.cpp \ + vst/SfizzVstEditor.cpp \ + vst/SfizzVstState.cpp \ + -- -Iexternal/abseil-cpp -Isrc/external -Isrc/external/pugixml/src \ + -Isrc/sfizz -Isrc \ + -Ivst -Ivst/external/VST_SDK/VST3_SDK -Ivst/external/VST_SDK/VST3_SDK/vstgui4 -DNDEBUG From c44a51cea15d498aab197d6c2eeffaad4fbfbfa2 Mon Sep 17 00:00:00 2001 From: Paul Fd Date: Fri, 13 Mar 2020 00:24:37 +0100 Subject: [PATCH 5/7] Add vst sdk to clang-tidy --- .travis.yml | 4 +++- .travis/download_vst_sdk.sh | 7 +++++++ 2 files changed, 10 insertions(+), 1 deletion(-) create mode 100755 .travis/download_vst_sdk.sh diff --git a/.travis.yml b/.travis.yml index f118980a..0c653e66 100644 --- a/.travis.yml +++ b/.travis.yml @@ -14,8 +14,10 @@ jobs: apt: packages: - clang-tidy + - wget + - unzip - libsndfile-dev - install: skip + install: .travis/download_vst_sdk.sh script: scripts/run_clang_tidy.sh - name: "Linux amd64 tests" diff --git a/.travis/download_vst_sdk.sh b/.travis/download_vst_sdk.sh new file mode 100755 index 00000000..e1233c71 --- /dev/null +++ b/.travis/download_vst_sdk.sh @@ -0,0 +1,7 @@ +#!/bin/bash +set -ex + +vst_sdk_archive="vst-sdk_3.6.14_build-24_2019-11-29.zip" +wget "https://download.steinberg.net/sdk_downloads/${vst_sdk_archive}" +mkdir -p vst/external +unzip -ouq ${vst_sdk_archive} -d vst/external From 88593a9a9f4c3e03741d6f9db9f81dbfe80a408a Mon Sep 17 00:00:00 2001 From: Paul Fd Date: Sat, 14 Mar 2020 14:05:05 +0100 Subject: [PATCH 6/7] Check if the sdk is downloaded already --- .travis/download_vst_sdk.sh | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.travis/download_vst_sdk.sh b/.travis/download_vst_sdk.sh index e1233c71..3eee309e 100755 --- a/.travis/download_vst_sdk.sh +++ b/.travis/download_vst_sdk.sh @@ -1,7 +1,11 @@ #!/bin/bash set -ex +vst_download_prefix="vst/download" vst_sdk_archive="vst-sdk_3.6.14_build-24_2019-11-29.zip" -wget "https://download.steinberg.net/sdk_downloads/${vst_sdk_archive}" +mkdir -p ${vst_download_prefix} +if ! [[ -f "${vst_download_prefix}/${vst_sdk_archive}" ]]; then + wget -P ${vst_download_prefix} "https://download.steinberg.net/sdk_downloads/${vst_sdk_archive}" +fi mkdir -p vst/external -unzip -ouq ${vst_sdk_archive} -d vst/external +unzip -ouq "${vst_download_prefix}/${vst_sdk_archive}" -d "vst/external" From 7812d150b9d21f5ed8e013553eacb51fe2fb82b7 Mon Sep 17 00:00:00 2001 From: Paul Fd Date: Sat, 14 Mar 2020 14:12:46 +0100 Subject: [PATCH 7/7] Explicit casts to Steinberg::int64 --- vst/SfizzVstProcessor.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/vst/SfizzVstProcessor.cpp b/vst/SfizzVstProcessor.cpp index 08e516f6..62d6b785 100644 --- a/vst/SfizzVstProcessor.cpp +++ b/vst/SfizzVstProcessor.cpp @@ -196,7 +196,7 @@ void SfizzVstProcessor::processParameterChanges(Vst::IParameterChanges& pc) break; msg->setMessageID("SetNumVoices"); Vst::IAttributeList* attr = msg->getAttributes(); - attr->setInt("NumVoices", kParamNumVoicesRange.denormalize(value)); + attr->setInt("NumVoices", static_cast(kParamNumVoicesRange.denormalize(value))); if (!_fifoToWorker.push(msg)) { msg->release(); break; @@ -211,7 +211,7 @@ void SfizzVstProcessor::processParameterChanges(Vst::IParameterChanges& pc) break; msg->setMessageID("SetOversampling"); Vst::IAttributeList* attr = msg->getAttributes(); - attr->setInt("Oversampling", kParamOversamplingRange.denormalize(value)); + attr->setInt("Oversampling", static_cast(kParamOversamplingRange.denormalize(value))); if (!_fifoToWorker.push(msg)) { msg->release(); break; @@ -226,7 +226,7 @@ void SfizzVstProcessor::processParameterChanges(Vst::IParameterChanges& pc) break; msg->setMessageID("SetPreloadSize"); Vst::IAttributeList* attr = msg->getAttributes(); - attr->setInt("PreloadSize", kParamPreloadSizeRange.denormalize(value)); + attr->setInt("PreloadSize", static_cast(kParamPreloadSizeRange.denormalize(value))); if (!_fifoToWorker.push(msg)) { msg->release(); break;