We are currently migrating Bugzilla to GitHub issues.
Any changes made to the bug tracker now will be lost, so please do not post new bugs or make changes to them.
When we're done, all bug URLs will redirect to their equivalent location on the new bug tracker.

Bug 3955

Summary: New resampler: aliasing when downsampling
Product: SDL Reporter: Eric Wasylishen <ewasylishen>
Component: audioAssignee: Ryan C. Gordon <icculus>
Status: NEW --- QA Contact: Sam Lantinga <slouken>
Severity: normal    
Priority: P2    
Version: 2.0.7   
Hardware: x86   
OS: Other   
Attachments: sine sweep test case

Description Eric Wasylishen 2017-11-11 18:44:49 UTC
Created attachment 3084 [details]
sine sweep test case

The issue is SDL_ResampleAudio currently lowpass filters at 0.5*inrate, even in the case when outrate < inrate. In other words, the part of the "band-limited resampling" paper that says - "if rho < 1... the step-size through the filter table is reduced.." is not implemented.

Here is a test case with a 0-48kHz sine sweep sampled at 96kHz.

testresample sweep96k.wav sweep44100.wav 44100 1
sox sweep44100.wav -n spectrogram -o sweep44100.png
open sweep44100.png

(careful with the volume if you play these!)

It should be resampled as a single upward sweep that stops at the 22kHz nyquist limit with silence after that, but currently you get a siren effect due to the aliasing.
I have a patch in the works for this.