From 67451024a598804bf0df5117e63840953bab922e Mon Sep 17 00:00:00 2001 From: Paul Fd Date: Mon, 16 Mar 2020 00:28:57 +0100 Subject: [PATCH] Different static ways --- src/sfizz/Wavetables.cpp | 35 ++++++++++++++++++++++++++++++----- src/sfizz/Wavetables.h | 18 +++++------------- 2 files changed, 35 insertions(+), 18 deletions(-) diff --git a/src/sfizz/Wavetables.cpp b/src/sfizz/Wavetables.cpp index cab84574..1e27853b 100644 --- a/src/sfizz/Wavetables.cpp +++ b/src/sfizz/Wavetables.cpp @@ -275,11 +275,36 @@ void WavetableMulti::fillExtra() WavetablePool::WavetablePool() -: waveSin(WavetableMulti::createForHarmonicProfile(HarmonicProfile::getSine(), config::amplitudeSine)) -, waveTriangle(WavetableMulti::createForHarmonicProfile(HarmonicProfile::getTriangle(), config::amplitudeTriangle)) -, waveSaw(WavetableMulti::createForHarmonicProfile(HarmonicProfile::getSaw(), config::amplitudeSaw)) -, waveSquare(WavetableMulti::createForHarmonicProfile(HarmonicProfile::getSquare(), config::amplitudeSquare)) -{ } +{ + getWaveSin(); + getWaveTriangle(); + getWaveSaw(); + getWaveSquare(); +} +const WavetableMulti* WavetablePool::getWaveSin() +{ + static auto wave = WavetableMulti::createForHarmonicProfile( + HarmonicProfile::getSine(), config::amplitudeSine); + return &wave; +} +const WavetableMulti* WavetablePool::getWaveTriangle() +{ + static auto wave = WavetableMulti::createForHarmonicProfile( + HarmonicProfile::getTriangle(), config::amplitudeTriangle); + return &wave; +} +const WavetableMulti* WavetablePool::getWaveSaw() +{ + static auto wave = WavetableMulti::createForHarmonicProfile( + HarmonicProfile::getSaw(), config::amplitudeSaw); + return &wave; +} +const WavetableMulti* WavetablePool::getWaveSquare() +{ + static auto wave = WavetableMulti::createForHarmonicProfile( + HarmonicProfile::getSquare(), config::amplitudeSquare); + return &wave; +} } // namespace sfz diff --git a/src/sfizz/Wavetables.h b/src/sfizz/Wavetables.h index 90bd55f0..6ec7fe12 100644 --- a/src/sfizz/Wavetables.h +++ b/src/sfizz/Wavetables.h @@ -183,20 +183,12 @@ private: * @brief Holds predefined wavetables. * */ -class WavetablePool { -public: +struct WavetablePool { WavetablePool(); - const WavetableMulti* getWaveSin() const { return &waveSin; } - const WavetableMulti* getWaveTriangle() const { return &waveTriangle; } - const WavetableMulti* getWaveSaw() const { return &waveSaw; } - const WavetableMulti* getWaveSquare() const { return &waveSquare; }; -private: - const WavetableMulti waveSin; - const WavetableMulti waveTriangle; - const WavetableMulti waveSaw; - const WavetableMulti waveSquare; - LEAK_DETECTOR(WavetablePool); - + static const WavetableMulti* getWaveSin(); + static const WavetableMulti* getWaveTriangle(); + static const WavetableMulti* getWaveSaw(); + static const WavetableMulti* getWaveSquare(); }; } // namespace sfz