Exported (unchanged) wav files are not binary identically to the original!

Audacity 3.1.3
If I open a wav file (format 44,1 or 48kHz 16 bit) and I export it again to the same format, without editing nothing, the exported file is not binary identical to the original. With binary comparison they looks completely different, except a very small heading part at the begin and at the end of the file.
If I repeat the process in chain, each file is binary different that the others. I guess this has to do with the native conversion to 32 bit float made by Audacity when opening a file.
This is actually something very bad, because when editing wav files, only the changed parts should look different from the original file. All the other bits should remain EXACTLY the same.
This means than editing more times the same file, it degrades its content as it happens when working with lossy formats, compressing and decompressing them every time. Maybe the repeated conversions from 32-16 bit is not harmful like it happens with lossy formats, but it should not happens with any audio editor, when working with wav (or flac) files. Any suggestion to avoid this?

Always save as 32-bit WAV format.

https ://manual.audacityteam.org/man/dither.html#Where the “errors” come from

It’s due to “dither”.
See: https://manual.audacityteam.org/man/dither.html
and: https://github.com/audacity/audacity/issues/2387

Note that the amount of dither noise is around -84 dB RMS and exists mostly above 14kHz, so for a good recording it will be well below the noise floor.

To ensure that an exported file is identical to the audio in Audacity, export as 32-bit float.

There are some odd rules to that.

Audacity converts your normal sound files to super high quality (32-bit floating) so it doesn’t damage them when you apply effects, filters, and corrections. For one example, 32-float doesn’t overload or clip.

It’s not unusual for Audiobook Mastering to overload in the middle of the suite of tools. 32-floating prevents audible damage.

But then it has to get your sound file back to normal during Export. It adds a very tiny dither signal so down-conversion errors don’t add up and become audible.

If you did nothing to the show while it was in Audacity, you can turn dither off and both ends of the process will be identical. The instant you change anything, you need to switch the dither back on, or leave it it 32-float forever.

Koz

I understand the trick to disable the dithering, but if I open a wav 16 bit file, I expect that the software does nothing else than treating it as a 16 bit file without changing anything else.

Audacity doesn’t “remember” the original format. …Maybe that’s a “weakness” but that’s how it works. It does generally keep the original sample rate, but in some cases your Audacity project might contain audio from several different formats.

If I add for example only fade in/out, I don’t see reason why it should touch the samples of the whole file, when I switch the dithering on.

Again, it doesn’t always “remember” everything you’ve done and the dither operation isn’t that “smart”. I suppose you could create a dither file by exporting dithered silence… Then mix it in only during the fade-out.

But Dither isn’t a big deal one way or the other. At 16-bits or better and normal listening conditions you can’t hear dither or the effects of dither anyway. You might hear a difference if you crank-up the volume during the fade-out but if you listen to the whole song with the volume cranked-up that much it will probably be badly distorted and/or you’ll get (hopefully temporary) hearing loss so you still won’t hear a difference. :smiley:

Basically, I find that Audacity should not force you to work with 32bit float, when you don’t need it or don’t require it.

DSP (digital signal processing) “works better” and is “easier” in floating point and for that reason virtually all audio editors & DAWs work in floating-point.

Plus, there are certain operations (such as mixing or boosting the bass) that can sometimes push the levels over 0dB. Floating-point can go over 0dB without clipping so that gives you the chance to reduce the levels and “recover” without un-doing and re-doing everything.

Who has replied directly inside of my message of Mon Jan 31, 2022 5:58 pm ?

Anyway, I understand the need to work with 32bits float when you are mixing tracks, but I am speaking about working on single tracks, already recorded with 16 bits.
Export all files with 32 bits is not a solution if you don’t need it. It doubles the size of files.

I don’t know whether it is easy to implement, but when you select to work at 16 bit, the software should work directly on 16 bit. It should be up to you to decide whether you need 32bit.
I don’t know how Nero Wave Editor works natively, but it changes only the parts that I edit on a file. At least the version that I use.

Ok, then when I am only converting or cutting a track in Audacity I can switch the dithering off. But what does happen if I apply other changes to an existing 16bit file, like fade in/out, without dithering? What are the side effects on quality without dithering? I always speak about single tracks, recorded in 16 bit.

I’ve seen this happen as well. I’m not sure but one possibility is that you got a notification of a reply but that reply was deleted - possibly a spam post deleted by a moderator or something like that.

I don’t think anyone has.

What exactly is “this” that you refer to? Did you see a notification?

That is certainly possible. Spam posts are frequently sent as replies to recent topics, and are swiftly deleted by the forum moderators.

It is “a solution”, though not the “best solution”. The “best solution” does not exist yet.

Another, non-ideal solution:
If you want a bit-perfect 16-bit export of a 16-bit track, then you can temporarily turn off “dither” in Preferences. See: https://manual.audacityteam.org/man/quality_preferences.html
The downside of this is that it is only appropriate if you have not processed the track. If the track is processed in a way that changes sample values, then the exported audio will have quantization noise. Given that Audacity is most commonly used for editing and processing tracks, this solution is rarely appropriate.

The “best solution” would be if Audacity was smart enough to know if the track contained only unmodified 16-bit samples, and automatically skipped applying dither in these rare cases. A developer is working on this, and it looks like it will soon be a new feature.


“Quantization noise”.

I saw a notification for a thread I’d started, or replied to, but there wasn’t anything new and the notification dumped me at the top of the thread. I suppose we could imagine that phpBB would automatically clear notifications for deleted replies but I don’t think it’s something worth worrying about! :slight_smile:

FWIW, I think I was the culprit - last night, I replied to your low frequency noise query on the linux board but realised I’d misread your OP, so deleted. So it wasn’t a spambot on this occasion, just a regular numpty.

:smiley:

I wasn’t sure if users could delete their own posts here, or I would have listed that possibility too