Let's analyze your suggestion of using a FIR filter at f = 0.5/512 = 0.0009765625 for an interpolation filter for 512x oversampling.
Here's the frequency response of a FIR filter of length 1000: http://morpheus.spectralhead.com/img/fir512_1000.png Closeup of the frequency range between 0-0.01 (cutoff marked with black line): http://morpheus.spectralhead.com/img/fir512_1000_closeup.png Apparently that's a pretty crappy anti-alias filter, the transition band is very wide. So let's try a FIR filter of length 5000: http://morpheus.spectralhead.com/img/fir512_5000_closeup.png Better, but still quite a lot of aliasing above the cutoff freq. FIR filter of length 20,000: http://morpheus.spectralhead.com/img/fir512_20000_closeup.png Now this starts to look like a proper-ish anti-alias filter. The problem is - its length is 20,000 samples, so assuming 32-bit float representation, the coefficients alone need about 80 KB of memory... meaning that there's a high chance that it won't even fit into the L1 cache, causing a lot of cache misses, so this filter will be extra slow, since your CPU will be constantly waiting for the coefficients to arrive from the L2 cache and/or RAM. Also consider how much CPU power you need to do convolution with a 20,000 sample long kernel at 512x oversampled rate... I bet you're not trying to do this in realtime, are you? So, that's not exactly the brightest way to do 512x oversampling, unless you prefer to waste a lot of resources and spend a week on upsampling. In that case, it is ideal. -P _______________________________________________ music-dsp mailing list music-dsp@music.columbia.edu https://lists.columbia.edu/mailman/listinfo/music-dsp