From b453f192d22b1c951d71e8a73f28a37cd96a7b6c Mon Sep 17 00:00:00 2001 From: Andrew Belt Date: Mon, 22 Jul 2024 03:23:28 -0400 Subject: [PATCH] Require >=32 wavetable points to fix crash when computing interpolated wavetables. --- src/Wavetable.hpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/Wavetable.hpp b/src/Wavetable.hpp index 6144c5d..982f737 100644 --- a/src/Wavetable.hpp +++ b/src/Wavetable.hpp @@ -100,7 +100,11 @@ struct Wavetable { void interpolate() { if (quality == 0) return; - if (waveLen < 2) + // pffft only supports >=32 points + if (waveLen < 32) + return; + // pffft only supports multiples of 32 points + if ((waveLen % 32) != 0) return; size_t waveCount = getWaveCount(); @@ -302,7 +306,7 @@ struct Wavetable { [=]() {saveDialog();} )); - int sizeOffset = 4; + int sizeOffset = 5; std::vector sizeLabels; for (int i = sizeOffset; i <= 14; i++) { sizeLabels.push_back(string::f("%d", 1 << i));