Winamp ASIO output module | SRD upsampler for audio files | Upsampler results |
In order to be able to meaningfully compare and assess the quality of different resamplers, I have considered the following procedure for determining the quality:
For creation, the audio files are stored and processed in the intermediate steps with the highest possible bit depth. The prepared "revert" is finally converted to the original bit depth. The question: does the resampler recalculate the original values from the time-shifted samples (with an accuracy corresponding to the original bit depth)?
Tracks in CD quality (16 bit/44.1kHz) were used for the test and extrapolated with different resamplers in the highest quality level. In this test, dithering must be deactivated both when converting the bit depth and when upsampling. The diffusion distribution always affects the recovery rate extremely negatively and falsifies the results.
The following resamplers were tested:
In the evaluation, the diagrams (from left to right)
In my opinion, the two 3D bar charts for (1) and for (3) give a nice summary with a tangible and imaginable reference.
Software tool to make your own revert-test: matchsnd-windows-bin.zip
The Linux binary version is included in the SRD Linux bundle: SRD-2023z3-Linux-bin_incl-matchsnd.tar.gz
The photo shows the SRD algorithm translated into GNU Octave. The details of the program sequences can be clearly illustrated there.
In the diagram, the original samples of a multiple superimposed sine curve can be seen first, as well as the additional samples that have not yet been calculated when the sample rate has been doubled. These still unknown samples are all on the zero line.
After interpolation, these fit precisely into the signal curve.
Looking at a single sample over time for target finding during interpolation (though from the screenshot curve - with different harmonics)
A section in 3D is shown for several samples simultaneously viewed from front to back over time. In addition, the uncalculated samples, which were initially zero, were cut off in the display in order to get a clearer view.