Skip to main content

Notice

Please note that most of the software linked on this forum is likely to be safe to use. If you are unsure, feel free to ask in the relevant topics, or send a private message to an administrator or moderator. To help curb the problems of false positives, or in the event that you do find actual malware, you can contribute through the article linked here.
Topic: Resampler dbpoweramp/SSRC and RetroArch do not null, why? (Read 1144 times) previous topic - next topic
0 Members and 1 Guest are viewing this topic.

Resampler dbpoweramp/SSRC and RetroArch do not null, why?

I've tested various resampler and some strange thing happened.
When I null the resampled file against the original, dbpoweramp/SSRC and RetroArch do not null.

Why dbpoweramp/SSRC and RetroArch do not null (0-24kHz), but all other resamplers do?

Used Resamplers:

foobar2000 2.1.5 Resampler (dbpoweramp/SSRC, RetroArch)
foo_dsp_resampler 0.8.7+ (SoX)
foo_dsp_src_resampler 1.0.14 (SRC - Secret Rabbit Code)
r8brain 2.10 free
Audition 3.0
ffmpeg 5.1.2

Please see screenshots.


Re: Resampler dbpoweramp/SSRC and RetroArch do not null, why?

Reply #1
Update:

This happens when I'm resampling 20x times Source (192kHz)  to 48kHz, 96kHz, 48kHz, 96kHz....

Nulling the first resample against the 20x resample (used the same resampler).

dbpoweramp/SSRC looks awfull.

Used resamplers:
foobar2000 2.1.5 Resampler dbpoweramp/SSRC
foo_dsp_resampler 0.8.7+ (SoX)

Please see screenshots

Re: Resampler dbpoweramp/SSRC and RetroArch do not null, why?

Reply #2
There's a tiny subsample offset in the generated waveform with SSRC and Retroarch. Doesn't affect quality but causes difference such as this.

Re: Resampler dbpoweramp/SSRC and RetroArch do not null, why?

Reply #3
Oh, thank you Case!
How this subsample offset happens?
Can you point me to relevant documents about this topic?

Re: Resampler dbpoweramp/SSRC and RetroArch do not null, why?

Reply #4
I can't point you to any literature, sorry. I'm not sure if my terminology is correct. The samples have shifted a bit during processing while the sampling rate was still high, possibly because of some rounding error. Once that shifted signal is downsampled, the offset error gets transferred to the downsampled signal. Since the shift isn't large enough to be represented in full samples in the target sample rate, I called it subsample offset.
Below you'll see screenshots from 96 kHz source file downsampled to 48 kHz. It looks like the 96 kHz signal has shifted by one frame causing the 48 kHz version to have 0.5 frame offset compared to non-shifted downsample.
SSRC: X
SOX: X