Source-Changes-D archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: audio2



On May 23, Valery Ushakov wrote:
> This feels inverted.  The mathematically correct operation required
> here is symmetric division (that rounds towards zero). 

Rounding towards zero is absolutely the wrong thing to do for audio,
because it introduces a discontinuity, which in turn causes
unnecessary distortion of the audio.

For example, if your original signal is a linear ramp

  ... -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5 ...

and you divide it by two rounding towards zero, you get

  ... -2, -2, -1, -1, 0, 0, 0, 1, 1, 2, 2 ...

where every value is repeated twice, except that the value zero occurs
three times, so the ramp is no longer linear - it now has a visible
and audible kink in the middle.  And this kink is in the worst
possible place of the amplitude scale, at zero where it will affect
even the weakest signals, distorting every zero crossing.

The proper way to do audio scaling is using dither, but failing that,
at least the values should be consistently rounded either up or down,
which will at worst introduce a small DC offset which you can't hear,
but no crossover distortion.
-- 
Andreas Gustafsson, gson%gson.org@localhost


Home | Main Index | Thread Index | Old Index