There is an interesting comparison of (mostly commercial) sample rate converters at http://src.infinitewave.ca/.
It shouldn't be shocking to anyone that a lot of converters do it wrong... though keeping the scale of these graphs in mind, I'm somewhat surprised that there were as many OKAY ones as there were.. clearly things have gotten better.
Insufficiently suppressed aliasing appears to be the most common fault for these converters. This isn't a shock: A failure to completely suppress aliasing is slightly euphonic in quick non-scientific cases, especially in the 48->44 khz case. (The failure of some SRCs to completely suppress aliasing at 40khz->near DC, however, is completely unacceptable).
One thing which struck me as interesting is that virtually none of the converters completely suppressed low level distortion spurs (look at the 1khz tone graphs). I expect that even the converters which showed no noise (Izotope 64bit, for example) on the test still had distortion spurs, but they were below the bottom of the graphs.
While many of the converters had distortion well below the levels that would matter for listening, for some measurement or processing applications they may be significant, and I don't see why they shouldn't be avoided.
If I were making a SRC with the goal of low distortion, I would do this: Take the (16,24,etc) bit input and convert it to my internal format (32 or 64 bit floats). Generate a high level broadband noise with a triangular distribution, in the internal format. I would attenuate a copy of it somewhat, and subtract it from the input signal. I would then apply my sample rate conversion (take your pick of any approach which doesn't completely suck) to the signal and, separately, the noise. I would then add the resampled noise back into the resampled signal, thus removing the noise. Any distortion would instead be converted into a nice flat noise floor. Then truncate or apply noise shaped dither, and output in my desired output format. Is there something broken in my thinking here?
