MCPcopy Create free account
hub / github.com/DamRsn/NeuralNote / processBlock

Method processBlock

Lib/DSP/Resampler.cpp:43–76  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

41}
42
43int Resampler::processBlock(const float* inBuffer, float* outBuffer, int inNumSamples)
44{
45 jassert(mNumInputSamplesAvailable + inNumSamples <= mInternalBuffer.getNumSamples());
46
47 mInternalBuffer.copyFrom(0, mNumInputSamplesAvailable, inBuffer, inNumSamples);
48 float* internal_buffer_ptr = mInternalBuffer.getWritePointer(0);
49
50 // Lowpass filter if necessary
51 if (mTargetSampleRate < mSourceSampleRate) {
52 for (int i = 0; i < inNumSamples; i++) {
53 for (auto& lowpass_filter: mLowpassFilters) {
54 internal_buffer_ptr[mNumInputSamplesAvailable + i] =
55 lowpass_filter.processSample(internal_buffer_ptr[mNumInputSamplesAvailable + i]);
56 }
57 }
58 }
59
60 mNumInputSamplesAvailable += inNumSamples;
61
62 int num_out_samples_to_produce = static_cast<int>(std::floor(mNumInputSamplesAvailable / mSpeedRatio));
63
64 int num_input_samples_used =
65 mInterpolator.process(mSpeedRatio, mInternalBuffer.getReadPointer(0), outBuffer, num_out_samples_to_produce);
66
67 jassert(num_input_samples_used <= mNumInputSamplesAvailable);
68
69 mNumInputSamplesAvailable -= num_input_samples_used;
70
71 for (int i = 0; i < mNumInputSamplesAvailable; i++) {
72 mInternalBuffer.setSample(0, i, mInternalBuffer.getSample(0, i + num_input_samples_used));
73 }
74
75 return num_out_samples_to_produce;
76}
77
78int Resampler::getNumOutSamplesOnNextProcessBlock(int inNumSamples) const
79{

Callers 1

resampleBufferFunction · 0.45

Calls 1

processMethod · 0.80

Tested by

no test coverage detected