Skip to main content

Topic: SoX DSP discussion (Read 4126 times) previous topic - next topic

0 Members and 1 Guest are viewing this topic.
  • Anakunda
  • [*][*][*][*][*]
SoX DSP discussion
I'd like to see a similar wrapper for DSP processing (piped input/output). Especially this would be useful for external resamplers in conversion profiles...
possible?

  • mudlord
  • [*][*][*][*][*]
  • Developer (Donating)
SoX DSP discussion
Reply #1
If you are referring to SoX, there is already a SoX based resampler....

  • Anakunda
  • [*][*][*][*][*]
SoX DSP discussion
Reply #2
If you are referring to SoX, there is already a SoX based resampler....


yes I'm referencing to SoX but I think the foobar's SoX resampler lacks dithering method. Or am I wrong?

  • Peter
  • [*][*][*][*][*]
  • Administrator
SoX DSP discussion
Reply #3
foobar2000 DSPs operate on 32bit floating-point data; doing any dithering in DSPs is outright harmful.
Dithering should happen at the end of the pipeline which is exactly what foobar2000's dithering feature does.
  • Last Edit: 09 November, 2012, 04:32:46 AM by Peter

  • Anakunda
  • [*][*][*][*][*]
SoX DSP discussion
Reply #4
So the foobar's SoX resampler with foobar's internal dithering is supposed to produce same or better final output than using SoX externally?

  • Peter
  • [*][*][*][*][*]
  • Administrator
SoX DSP discussion
Reply #5
If you care so much about output quality, why don't you get a 24-bit soundcard and never need dithering again? If you need dithering in first place, I presume you don't have one yet. I see you're talking about conversion, OK.

Using foobar2000's internal dithering at least ensures you get your output dithered to the correct bit depth. Whether there are any advantages to using external dithering, you're free to find out for yourself; at least it's completely pointless (and harmful) if you're converting to a lossy format or lossless higher than 16-bit.
  • Last Edit: 09 November, 2012, 07:44:45 AM by Peter

  • Anakunda
  • [*][*][*][*][*]
SoX DSP discussion
Reply #6
Okay, I'd have 2 more questions:
If I convert the source to lossy format, does bit depth matter? (If so, is it better to convert from 24bit or 16bit source? and moreover is dithering in effect when no bit depth conversion is made?)
And finally, what are optimum values for Passband, aliasing allowed/disallowed and phase response when downsampling to 96kHz and leaving the original bit depth?

  • Case
  • [*][*][*][*][*]
  • Developer (Donating)
SoX DSP discussion
Reply #7
Dithering is controlled by the option it has in the Converter, source vs target bitdepth does not matter there. You can't control source bit depth as that is a feature of your source files. You can tell the component what bit depth encoders accept. If you use the built-in profiles they are already set to correct and optimal values. All lossy codecs I know of support at least 24 bit input files so dithering with them is not required. The quantization error noise is way under the noise floor of any equipment or human hearing. If you convert to 16 bit lossless files from higher bit depth source files, from lossy files or perform DSP operations, dithering is beneficial in theory. Though I don't think there have been any ABX cases where this has been audible with normal music. Only with very quiet samples. I'd skip the dithering as I can't hear improvement with it and it ruins digital silence.
SoX resampler component has optimal settings selected by default. Just select target samplerate and Best quality from the dropdown.

  • Anakunda
  • [*][*][*][*][*]
SoX DSP discussion
Reply #8
SoX resampler component has optimal settings selected by default. Just select target samplerate and Best quality from the dropdown.


Thank you so much.

  • Anakunda
  • [*][*][*][*][*]
SoX DSP discussion
Reply #9
SoX resampler component has optimal settings selected by default. Just select target samplerate and Best quality from the dropdown.


Please explain. This states that default setting (HQ Passband 95%) is optimum, by other opinions it's 99% (the maximum value).
Which is right? I assume I don't want aliasing.