Cubic Infinite Linear Oversampling

tanh(a x) with cubic infinite linear oversampling

(4 Votes)
1.0 (Updated 1 year ago)
September 22, 2017
Reaktor 6


This is a small improvement (?) to Efflam Le Bivic's excellent 'Infinite Linear Oversampling' core macros. This method employs cubic spline interpolation to further reduce aliasing artefacts. Demonstrated is tanh(a x) both in it's original ILO, and cubic interpretation. The spline points are set to be 1 sample apart here, although, obviously, this can be altered to however you see fit for your purposes. Due to the nature of spline interpolation, delay performance is not er as performant as the original ILO.

CPU usage is slightly more then four times greater than original ILO processing. Sound quality improvement is small but definitely noticeable, and quite clearly visible on an FFT display.

I hope this is useful for someone.


David Freeman
1 year ago
Hi, thanks for the feedback Colin - the way it is set up in the macro I uploaded was definitely z^-4 agreed - however, by altering the mu points of the 4 spline interpolators on the 'left' hand side of the integration, it is possible to draw the average on the right hand side from a sub sample selection. Essentially, space the mu points to calculate between samples at whatever scale you would like. If useful, I can upload this amended version. Thanks for your feedback however, and yes, agreed, this is *not* infinite cubic oversampling. I've thought about this and it hurts my brain. A lot!
Colin Brown
1 year ago
Thanks for the upload David. I've been playing with these too, so seeing what others are doing is useful. When I saw the description, I was half expecting to see an implementation of infinite cubic oversampling :), but given the complexity of even the linear version with a triangular filter kernel, it was kind of a relief to see the basic version oversampled :) One issue I've spotted is that you're not connecting up the state variables, so what you have is the equivalent of the original with z^-4 modules replacing the z^-1 modules. This acts as some sort of low pass filter. Once this has been corrected, there is more noticable aliasing, although still better than no oversampling. However, if you rip the hermite oversampling macros from the Paul filter block, and use them for 2x oversampling, you'll find the results surprisingly good.