27 const bool deleteInputWhenDeleted,
29 :
input (inputSource, deleteInputWhenDeleted),
40 jassert (samplesInPerOutputSample > 0);
43 ratio =
jmax (0.0, samplesInPerOutputSample);
51 input->prepareToPlay (scaledBlockSize, sampleRate *
ratio);
76 input->releaseResources();
97 const int sampsNeeded =
roundToInt (
info.numSamples * localRatio) + 3;
99 int bufferSize =
buffer.getNumSamples();
101 if (bufferSize < sampsNeeded + 8)
104 bufferSize = sampsNeeded + 32;
105 buffer.setSize (
buffer.getNumChannels(), bufferSize,
true,
true);
115 endOfBufferPos %= bufferSize;
118 bufferSize - endOfBufferPos);
121 input->getNextAudioBlock (readInfo);
123 if (localRatio > 1.0001)
127 for (
int i = channelsToProcess; --
i >= 0;)
132 endOfBufferPos += numToDo;
135 for (
int channel = 0; channel < channelsToProcess; ++channel)
141 int nextPos = (
bufferPos + 1) % bufferSize;
143 for (
int m =
info.numSamples; --
m >= 0;)
149 for (
int channel = 0; channel < channelsToProcess; ++channel)
167 if (localRatio < 0.9999)
170 for (
int i = channelsToProcess; --
i >= 0;)
173 else if (localRatio <= 1.0001 && info.numSamples > 0)
176 for (
int i = channelsToProcess; --
i >= 0;)
178 const float*
const endOfBuffer =
info.buffer->getReadPointer (
i,
info.startSample +
info.numSamples - 1);
181 if (
info.numSamples > 1)
183 fs.
y2 = fs.
x2 = *(endOfBuffer - 1);
191 fs.
y1 = fs.
x1 = *endOfBuffer;
200 const double proportionalRate = (frequencyRatio > 1.0) ? 0.5 / frequencyRatio
201 : 0.5 * frequencyRatio;
204 const double nSquared =
n *
n;
211 c1 * 2.0 * (1.0 - nSquared),
217 const double a = 1.0 /
c4;
243 const double in = *samples;
261 *samples++ = (float)
out;
Type jmin(const Type a, const Type b)
Definition MathsFunctions.h:60
Type jmax(const Type a, const Type b)
Definition MathsFunctions.h:48
uint8_t a
Definition Spc_Cpu.h:141
OptionalScopedPointer< AudioSource > input
Definition juce_ResamplingAudioSource.h:78
HeapBlock< FilterState > filterStates
Definition juce_ResamplingAudioSource.h:98
void releaseResources() override
Definition juce_ResamplingAudioSource.cpp:74
AudioBuffer< float > buffer
Definition juce_ResamplingAudioSource.h:80
double subSampleOffset
Definition juce_ResamplingAudioSource.h:82
void setFilterCoefficients(double c1, double c2, double c3, double c4, double c5, double c6)
Definition juce_ResamplingAudioSource.cpp:215
double coefficients[6]
Definition juce_ResamplingAudioSource.h:83
int bufferPos
Definition juce_ResamplingAudioSource.h:81
const int numChannels
Definition juce_ResamplingAudioSource.h:86
void getNextAudioBlock(const AudioSourceChannelInfo &) override
Definition juce_ResamplingAudioSource.cpp:80
void prepareToPlay(int samplesPerBlockExpected, double sampleRate) override
Definition juce_ResamplingAudioSource.cpp:46
HeapBlock< const float * > srcBuffers
Definition juce_ResamplingAudioSource.h:88
double lastRatio
Definition juce_ResamplingAudioSource.h:79
void flushBuffers()
Definition juce_ResamplingAudioSource.cpp:63
int sampsInBuffer
Definition juce_ResamplingAudioSource.h:81
CriticalSection callbackLock
Definition juce_ResamplingAudioSource.h:85
void resetFilters()
Definition juce_ResamplingAudioSource.cpp:233
void applyFilter(float *samples, int num, FilterState &fs)
Definition juce_ResamplingAudioSource.cpp:239
~ResamplingAudioSource() override
Definition juce_ResamplingAudioSource.cpp:36
SpinLock ratioLock
Definition juce_ResamplingAudioSource.h:84
void setResamplingRatio(double samplesInPerOutputSample)
Definition juce_ResamplingAudioSource.cpp:38
ResamplingAudioSource(AudioSource *inputSource, bool deleteInputWhenDeleted, int numChannels=2)
Definition juce_ResamplingAudioSource.cpp:26
HeapBlock< float * > destBuffers
Definition juce_ResamplingAudioSource.h:87
void createLowPass(double proportionalRate)
Definition juce_ResamplingAudioSource.cpp:198
double ratio
Definition juce_ResamplingAudioSource.h:79
GenericScopedLock< SpinLock > ScopedLockType
Definition juce_SpinLock.h:73
unsigned * m
Definition inflate.c:1559
register unsigned i
Definition inflate.c:1575
static void c2(register WDL_FFT_COMPLEX *a)
Definition fft.c:270
static void c4(register WDL_FFT_COMPLEX *a)
Definition fft.c:283
struct backing_store_struct * info
Definition jmemsys.h:183
float in
Definition lilv_test.c:1460
float out
Definition lilv_test.c:1461
Definition carla_juce.cpp:31
CriticalSection::ScopedLockType ScopedLock
Definition juce_CriticalSection.h:186
constexpr Type jmax(Type a, Type b)
Definition juce_MathsFunctions.h:94
int roundToInt(const FloatType value) noexcept
Definition juce_MathsFunctions.h:465
void zeromem(void *memory, size_t numBytes) noexcept
Definition juce_Memory.h:28
Definition juce_AudioSource.h:33
static constexpr FloatType sqrt2
Definition juce_MathsFunctions.h:394
static constexpr FloatType pi
Definition juce_MathsFunctions.h:382
Definition juce_ResamplingAudioSource.h:94
double y1
Definition juce_ResamplingAudioSource.h:95
double x1
Definition juce_ResamplingAudioSource.h:95
double y2
Definition juce_ResamplingAudioSource.h:95
double x2
Definition juce_ResamplingAudioSource.h:95
int n
Definition crypt.c:458