Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
As proposed here https://forum.juce.com/t/resample-a-complex-valued-buffer-without-de-interleaving-the-buffer/34703/2, I think it's useful to extend the interpolator classes to accept more than just float values.
The pull request contains a refactored version of both LagrangeInterpolator and CatmullRomInterpolator that are fully templated and now share a common base class ResamplerBase. This makes it possible to use them with double buffers as well as std::complex valued buffers. With that changed both classes were renamed to LagrangeResampler and CatmullRomResampler, adding an alias to the previous names that has float as default SampleType template values. This makes the change fully backwards compatible to existing code.
Furthermore FloatVectorOperations, which are used internally, were extended to accept complex buffers where possible.
Based on these changes, a support for SIMDRegister as SampleType type for the interpolators should also not be to hard to implement, making theses classes compatible to the DSP module template processor classes that also accept SIMDRegister as SampleType.