Hello!
For the Radium music editor, I have used the source code of the effects/LagrangeInterpolator.cpp file in JUCE to create a Catmull-Rom interpolator (also known as a 4 point, 3rd order Hermite interpolator.):
//
// The Interpolator class below is based on the LagrangeInterpolator class in JUCE, written by Julian Storer.
//// I've changed it to use the Catmull-Rom spline interpolator instead (since I found that it sounded a lot better),
// plus that the 'process' function takes two extra parameters:
//
// 1. 'numOut': The maximum number of samples the 'process' method are allowed to write to 'out'.
// 2. 'numCounsumed': After 'process' is finished, this variable will contain the number of samples read from 'in'.
//
// In addition, the 'process' function now returns the number of frames put into 'out', while previously it returned the number
// of samples read from 'in'.
//
// My benchmarking shows that the degrade in performance compared to the original LagrangeInterpolator class is hardly measurable.
Here's the source code: https://github.com/kmatheussen/radium/blob/master/audio/SampleInterpolator.cpp
(For practical reaons (didn't configure my text editor), I also changed the coding style)
You might want to consider backporting the code to JUCE, since the sound quality seems to be a lot better, without adding extra CPU usage.
With the extended API, it's also possible to create a callback-API for it, which I did in another file:
https://github.com/kmatheussen/radium/blob/master/audio/Resampler.cpp#L73