From c1bdfc6a55baf8de95d7f1108bbdebaae58d4f09 Mon Sep 17 00:00:00 2001 From: jules Date: Wed, 1 Nov 2017 17:31:00 +0000 Subject: [PATCH] Added a safety assertion to check if an Oscillator's been initialised --- modules/juce_dsp/processors/juce_Oscillator.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/modules/juce_dsp/processors/juce_Oscillator.h b/modules/juce_dsp/processors/juce_Oscillator.h index 97751510eb..45290462eb 100644 --- a/modules/juce_dsp/processors/juce_Oscillator.h +++ b/modules/juce_dsp/processors/juce_Oscillator.h @@ -55,6 +55,9 @@ public: initialise (function, lookupTableNumPoints); } + /** Returns true if the Oscillator has been initialised. */ + bool isInitialised() const noexcept { return static_cast (generator); } + /** Initialises the oscillator with a waveform. */ void initialise (const std::function& function, size_t lookupTableNumPoints = 0) { @@ -102,6 +105,7 @@ public: /** Returns the result of processing a single sample. */ SampleType JUCE_VECTOR_CALLTYPE processSample (SampleType) noexcept { + jassert (isInitialised()); auto increment = static_cast (2.0 * double_Pi) * frequency.getNextValue() / sampleRate; auto value = generator (pos - static_cast (double_Pi)); pos = std::fmod (pos + increment, static_cast (2.0 * double_Pi)); @@ -113,6 +117,7 @@ public: template void process (const ProcessContext& context) noexcept { + jassert (isInitialised()); auto&& outBlock = context.getOutputBlock(); // this is an output-only processory