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

Reply via email to