As far as the oversampling + linear interpolation approach goes, I have to ask... why oversample so much (512x)?
Purely from a rolloff perspective, it seems you can figure out what your returns are going to be by calculating sinc^2 at (1/upsample_ratio) for a variety of oversampling ratios. Here's the python code to run the numbers... #------------------------------------------------- import numpy as np #normalized frequency points X = [1.0/512.0, 1.0/256.0, 1.0/128.0, 1.0/64.0, 1.0/32.0, 1.0/16.0, 1.0/8.0, 1.0/4.0] #find attenuation at frequency points due to linear interpolation worst case (halfway in between) S = np.sinc(X) S = 20*np.log10(S*S) print S #----------------------------------------------- and here's what it spits out for various attenuation values at what would be nyquist in the baseband: 2X: -7.8 dB 4X: -1.8 dB 8X: -0.44 dB 16X: -0.11 dB 32X: -0.027 dB 64X: -0.0069 dB 128X: -0.0017 dB 256X: -0.00043 dB 512X: -0.00010 dB If all you're trying to do is mitigate the rolloff of linear interp, it looks like there's diminishing returns beyond 16X or 32X, where you're talking about a tenth of a dB or less at nyquist, which most people can't even hear in that range. Your anti-aliasing properties are going to be determined by your choice of upsampling/windowed-sync/anti-imaging filter and how long you want to let that be. Or am I missing something? It just doesn't seem worth it go to that high.
_______________________________________________ music-dsp mailing list music-dsp@music.columbia.edu https://lists.columbia.edu/mailman/listinfo/music-dsp