59 filterHalfBandFIREquiripple = 0,
60 filterHalfBandPolyphaseIIR,
92 bool isMaxQuality =
true,
93 bool useIntegerLatency =
false);
102 void setUsingIntegerLatency (
bool shouldUseIntegerLatency)
noexcept;
114 SampleType getLatencyInSamples() const noexcept;
117 size_t getOversamplingFactor() const noexcept;
123 void initProcessing (
size_t maximumNumberOfSamplesBeforeOversampling);
126 void reset() noexcept;
135 AudioBlock<SampleType> processSamplesUp (const
AudioBlock<const SampleType>& inputBlock) noexcept;
142 void processSamplesDown (
AudioBlock<SampleType>& outputBlock) noexcept;
168 void addOversamplingStage (FilterType,
169 float normalisedTransitionWidthUp,
float stopbandAmplitudedBUp,
170 float normalisedTransitionWidthDown,
float stopbandAmplitudedBDown);
179 void addDummyOversamplingStage();
186 void clearOversamplingStages();
189 size_t factorOversampling = 1;
190 size_t numChannels = 1;
193 struct OversamplingStage;
198 void updateDelayLine();
199 SampleType getUncompensatedLatency() const noexcept;
203 bool isReady = false, shouldUseIntegerLatency = false;
204 DelayLine<SampleType, DelayLineInterpolationTypes::Thiran> delay { 8 };
205 SampleType fractionalDelay = 0;
208 JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (Oversampling)