Thanks everyone for the suggestions about resample techniques (and qwx for applying the other patches). I'm quite familiar with the jos resample algorithm used by pcmconv, I implemented it just a couple months ago for another project[0]. While the filter in pcmconv has a lot of coefficients, this is because it is a polyphase filter with 256 phases. Only 12 taps are used for each output sample, so it performs quite well. For anyone interested in the topic, I highly recommend reading through that document[1]. To compare the different approaches for resampling, I made a test file sweeping from 1 to 16 kHz with sox (similar to [2]): sox -n -t raw -e signed -b 16 -r 32000 sweep.pcm synth -n 5 sine 1+16000 gain -6 Here are the results: https://mforney.org/misc/snes-resample/ As is suggested by the spectrograms, aliasing is still audible in the higher frequencies in linear and hermite, but it is worse in linear. Nearest-neighbor is *really* bad (in fact, it's not even nearest neighbor, but next neighbor), so anything else is a huge improvement. I do think we should try to reuse the pcmconv code since it's already there and works well, but this is not something I plan on working on in the near future. For now, I think we should just change it to hermite or linear, since they can be implemented in just a few lines of code, and I'm not sure I could tell the difference between them and pcmconv for actual game audio. I attached a patch for hermite interpolation if that is preferred over linear. I'd be happy with either of them for now. [0] https://git.sr.ht/~mcf/resample/tree/master/item/resample.c [1] https://ccrma.stanford.edu/~jos/resample/resample.pdf [2] https://src.infinitewave.ca/