in pedalboard/plugin_templates/Resample.h [185:236]
int process(double speedRatio, const float *inputSamples,
float *outputSamples, int numOutputSamplesToProduce) noexcept {
// Unfortunately, std::visit cannot be used here due to macOS version
// issues: https://stackoverflow.com/q/52310835/679081
if (auto *i =
std::get_if<juce::Interpolators::ZeroOrderHold>(&interpolator)) {
return i->process(speedRatio, inputSamples, outputSamples,
numOutputSamplesToProduce);
} else if (auto *i =
std::get_if<juce::Interpolators::Linear>(&interpolator)) {
return i->process(speedRatio, inputSamples, outputSamples,
numOutputSamplesToProduce);
} else if (auto *i = std::get_if<juce::Interpolators::CatmullRom>(
&interpolator)) {
return i->process(speedRatio, inputSamples, outputSamples,
numOutputSamplesToProduce);
} else if (auto *i =
std::get_if<juce::Interpolators::Lagrange>(&interpolator)) {
return i->process(speedRatio, inputSamples, outputSamples,
numOutputSamplesToProduce);
} else if (auto *i = std::get_if<juce::Interpolators::WindowedSinc>(
&interpolator)) {
return i->process(speedRatio, inputSamples, outputSamples,
numOutputSamplesToProduce);
} else if (auto *i = std::get_if<juce::FastInterpolators::WindowedSinc256>(
&interpolator)) {
return i->process(speedRatio, inputSamples, outputSamples,
numOutputSamplesToProduce);
} else if (auto *i = std::get_if<juce::FastInterpolators::WindowedSinc128>(
&interpolator)) {
return i->process(speedRatio, inputSamples, outputSamples,
numOutputSamplesToProduce);
} else if (auto *i = std::get_if<juce::FastInterpolators::WindowedSinc64>(
&interpolator)) {
return i->process(speedRatio, inputSamples, outputSamples,
numOutputSamplesToProduce);
} else if (auto *i = std::get_if<juce::FastInterpolators::WindowedSinc32>(
&interpolator)) {
return i->process(speedRatio, inputSamples, outputSamples,
numOutputSamplesToProduce);
} else if (auto *i = std::get_if<juce::FastInterpolators::WindowedSinc16>(
&interpolator)) {
return i->process(speedRatio, inputSamples, outputSamples,
numOutputSamplesToProduce);
} else if (auto *i = std::get_if<juce::FastInterpolators::WindowedSinc8>(
&interpolator)) {
return i->process(speedRatio, inputSamples, outputSamples,
numOutputSamplesToProduce);
} else {
throw std::runtime_error("Unknown resampler quality!");
}
}