[LAU] Audacity strange behavior

Folderol folderol at ukfsn.org
Tue Nov 11 14:44:01 EST 2008


On Tue, 11 Nov 2008 10:19:14 +1100
Erik de Castro Lopo <mle+la at mega-nerd.com> wrote:

> Folderol wrote:
> 
> > OK, there are four files:
> > 
> > http://www.musically.me.uk/music/Test1.wav
> > http://www.musically.me.uk/music/Test2.wav
> > http://www.musically.me.uk/music/Test3.wav
> > http://www.musically.me.uk/music/Test4.wav
> > 
> > Test1 is a short excerpt from the original recording that I
> > investigated. It is well clear of any clipping margins etc.
> > 
> > Test2-4 are copies made with Audacity's export function, and were made
> > one after the other, within seconds of each other, and without touching
> > anything else in Audacity (or any other application for that matter).
> > 
> > All have exactly the same byte count, and look identical to me in
> > Audacity.
> 
> Visual inspection is not really up the the task :-).
> 
> I've got a little curses hexdump utility that I use for this kind of
> comparison:
> 
>     http://www.mega-nerd.com/erikd/Blog/Tools/hv.html
> 
> which shows something like this for "hv Test[234].wav":
> 
> 00000000:  52 49 46 46 A8 02 49 00  57 41 56 45 66 6D 74 20   RIFF..I. WAVEfmt
>            52 49 46 46 A8 02 49 00  57 41 56 45 66 6D 74 20   RIFF..I. WAVEfmt
>            52 49 46 46 A8 02 49 00  57 41 56 45 66 6D 74 20   RIFF..I. WAVEfmt
> 
> 00000010:  10 00 00 00 01 00 02 00  44 AC 00 00 10 B1 02 00   ........ D.......
>            10 00 00 00 01 00 02 00  44 AC 00 00 10 B1 02 00   ........ D.......
>            10 00 00 00 01 00 02 00  44 AC 00 00 10 B1 02 00   ........ D.......
> 
> 00000020:  04 00 10 00 64 61 74 61  84 02 49 00 00 00 02 00   ....data ..I.....
>            04 00 10 00 64 61 74 61  84 02 49 00 FE FF 02 00   ....data ..I.....
>            04 00 10 00 64 61 74 61  84 02 49 00 01 00 FF FF   ....data ..I.....
> 
> 00000030:  FC FF 05 00 FB FF 02 00  01 00 FE FF 02 00 FE FF   ........ ........
>            FD FF 03 00 FD FF 01 00  02 00 FC FF 05 00 FA FF   ........ ........
>            00 00 00 00 00 00 FF FF  02 00 FE FF 02 00 FD FF   ........ ........
> 
> The differences are small, about 2 least significant bits, which suggests
> that the audio has been dithered.
> 
> My guess is that Audacity has a default internal format of normalized
> floats (ie range [-1.0, 1.0]) and that by default it dithers when saving
> internal floating point data to a 16 bit WAV files.
> 
> In general, when converting from float to 16 bit int, dither should be
> applied. However, one case where it makes sense not to dither is when 
> you load 16 bit integer audio data into a float internal format and then
> save it back to a 16 bit integer format. In other words, the int16_t ->
> float -> int16_t chain should be lossless.
> 
> If you are interested in lossless conversion from integer format to
> integer format, you should try sndfile-convert which (obviously)
> handles all the formats supported by libsndfile. The sndfile-convert
> program by default does all conversions in 32 bit integer format
> (hence int16_t -> int16_t is lossless) and only uses floating 
> point if either the source or destination format is float.
> 
> HTH,
> Erik

Thank you very much for going into this in such detail and so quickly.
I can confirm that using sndfile-convert directly gives completely
identical files.

This is true when going wav -> wav and also wav -> flac -> wav

-- 
Will J Godfrey
http://www.musically.me.uk



More information about the Linux-audio-user mailing list