39template <
class InterpolatorTraits,
int memorySize>
55 return InterpolatorTraits::algorithmicLatency;
80 const float* inputSamples,
82 int numOutputSamplesToProduce)
noexcept
84 return interpolate (speedRatio, inputSamples, outputSamples, numOutputSamplesToProduce);
103 const float* inputSamples,
104 float* outputSamples,
105 int numOutputSamplesToProduce,
106 int numInputSamplesAvailable,
107 int wrapAround)
noexcept
109 return interpolate (speedRatio, inputSamples, outputSamples,
110 numOutputSamplesToProduce, numInputSamplesAvailable, wrapAround);
129 const float* inputSamples,
130 float* outputSamples,
131 int numOutputSamplesToProduce,
134 return interpolateAdding (speedRatio, inputSamples, outputSamples, numOutputSamplesToProduce, gain);
158 const float* inputSamples,
159 float* outputSamples,
160 int numOutputSamplesToProduce,
161 int numInputSamplesAvailable,
166 numOutputSamplesToProduce, numInputSamplesAvailable, wrapAround, gain);
180 int numOutputSamplesToProduce)
noexcept
182 if (numOutputSamplesToProduce >= memorySize)
184 const auto*
const offsetInput = input + (numOutputSamplesToProduce - memorySize);
186 for (
int i = 0;
i < memorySize; ++
i)
191 for (
int i = 0;
i < numOutputSamplesToProduce; ++
i)
197 int numOutputSamplesToProduce,
198 int numInputSamplesAvailable,
199 int wrapAround)
noexcept
201 if (numOutputSamplesToProduce >= memorySize)
203 if (numInputSamplesAvailable >= memorySize)
206 numOutputSamplesToProduce);
211 numInputSamplesAvailable);
215 numOutputSamplesToProduce -= wrapAround;
218 memorySize - numInputSamplesAvailable);
222 for (
int i = numInputSamplesAvailable;
i < memorySize; ++
i)
229 if (numOutputSamplesToProduce > numInputSamplesAvailable)
231 for (
int i = 0;
i < numInputSamplesAvailable; ++
i)
234 const auto extraSamples = numOutputSamplesToProduce - numInputSamplesAvailable;
238 const auto*
const offsetInput = input + (numInputSamplesAvailable - wrapAround);
240 for (
int i = 0;
i < extraSamples; ++
i)
245 for (
int i = 0;
i < extraSamples; ++
i)
251 for (
int i = 0;
i < numOutputSamplesToProduce; ++
i)
261 int numOutputSamplesToProduce)
noexcept
266 while (numOutputSamplesToProduce > 0)
276 --numOutputSamplesToProduce;
284 const float* input,
float* output,
285 int numOutputSamplesToProduce,
286 int numInputSamplesAvailable,
289 auto originalIn = input;
291 bool exceeded =
false;
293 if (speedRatio < 1.0)
295 for (
int i = numOutputSamplesToProduce; --
i >= 0;)
307 if (--numInputSamplesAvailable <= 0)
312 numInputSamplesAvailable += wrap;
330 for (
int i = numOutputSamplesToProduce; --
i >= 0;)
332 while (pos < speedRatio)
342 if (--numInputSamplesAvailable <= 0)
347 numInputSamplesAvailable += wrap;
367 return (
int) (input - originalIn);
369 return ((
int) (input - originalIn) + wrap) % wrap;
375 int numOutputSamplesToProduce,
376 int numInputSamplesAvailable,
380 auto originalIn = input;
382 bool exceeded =
false;
384 if (speedRatio < 1.0)
386 for (
int i = numOutputSamplesToProduce; --
i >= 0;)
398 if (--numInputSamplesAvailable <= 0)
403 numInputSamplesAvailable += wrap;
407 numInputSamplesAvailable =
true;
421 for (
int i = numOutputSamplesToProduce; --
i >= 0;)
423 while (pos < speedRatio)
433 if (--numInputSamplesAvailable <= 0)
438 numInputSamplesAvailable += wrap;
458 return (
int) (input - originalIn);
460 return ((
int) (input - originalIn) + wrap) % wrap;
466 int numOutputSamplesToProduce,
472 while (numOutputSamplesToProduce > 0)
482 --numOutputSamplesToProduce;
#define constexpr
Definition CarlaDefines.h:94
#define noexcept
Definition DistrhoDefines.h:72
float interpolate(const float *data, size_t len, float pos)
Definition Util.cpp:215
double subSamplePos
Definition juce_GenericInterpolator.h:491
int process(double speedRatio, const float *inputSamples, float *outputSamples, int numOutputSamplesToProduce, int numInputSamplesAvailable, int wrapAround) noexcept
Definition juce_GenericInterpolator.h:102
forcedinline void pushInterpolationSample(float newValue) noexcept
Definition juce_GenericInterpolator.h:171
int process(double speedRatio, const float *inputSamples, float *outputSamples, int numOutputSamplesToProduce) noexcept
Definition juce_GenericInterpolator.h:79
GenericInterpolator(GenericInterpolator &&) noexcept=default
int indexBuffer
Definition juce_GenericInterpolator.h:492
forcedinline void pushInterpolationSamples(const float *input, int numOutputSamplesToProduce, int numInputSamplesAvailable, int wrapAround) noexcept
Definition juce_GenericInterpolator.h:196
int interpolateAdding(double speedRatio, const float *input, float *output, int numOutputSamplesToProduce, float gain) noexcept
Definition juce_GenericInterpolator.h:463
int processAdding(double speedRatio, const float *inputSamples, float *outputSamples, int numOutputSamplesToProduce, int numInputSamplesAvailable, int wrapAround, float gain) noexcept
Definition juce_GenericInterpolator.h:157
GenericInterpolator() noexcept
Definition juce_GenericInterpolator.h:43
float lastInputSamples[(size_t) memorySize]
Definition juce_GenericInterpolator.h:490
int interpolate(double speedRatio, const float *input, float *output, int numOutputSamplesToProduce, int numInputSamplesAvailable, int wrap) noexcept
Definition juce_GenericInterpolator.h:283
void reset() noexcept
Definition juce_GenericInterpolator.h:62
int processAdding(double speedRatio, const float *inputSamples, float *outputSamples, int numOutputSamplesToProduce, float gain) noexcept
Definition juce_GenericInterpolator.h:128
int interpolateAdding(double speedRatio, const float *input, float *output, int numOutputSamplesToProduce, int numInputSamplesAvailable, int wrap, float gain) noexcept
Definition juce_GenericInterpolator.h:372
forcedinline void pushInterpolationSamples(const float *input, int numOutputSamplesToProduce) noexcept
Definition juce_GenericInterpolator.h:179
int interpolate(double speedRatio, const float *input, float *output, int numOutputSamplesToProduce) noexcept
Definition juce_GenericInterpolator.h:258
static constexpr float getBaseLatency() noexcept
Definition juce_GenericInterpolator.h:53
register unsigned i
Definition inflate.c:1575
#define JUCE_API
Definition juce_StandardHeader.h:152
Definition carla_juce.cpp:31
constexpr Type jmax(Type a, Type b)
Definition juce_MathsFunctions.h:94