| Summary: | New resampler: aliasing when downsampling | ||
|---|---|---|---|
| Product: | SDL | Reporter: | Eric Wasylishen <ewasylishen> |
| Component: | audio | Assignee: | 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 | ||
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.