Select-all + Export Selected produces different .wav file
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Audacity |
Unknown
|
Unknown
|
|||
audacity (Ubuntu) |
Won't Fix
|
Undecided
|
Unassigned |
Bug Description
Binary package hint: audacity
Exporting the entirety of a .wav file produces a .wav file with different contents.
This is surprising. The "Original" file was actually produced by a previous export from Audacity,
so I'm assuming there is nothing special about the format, at least nothing which Audacity does not understand.
$ audacity Original.wav
Control-A (select all of waveform)
File->Export Selection to ExportedFromAud
File->Exit
$ cmp Original.wav ExportedFromAud
ExportedFromAud
(I will attach demo files)
ProblemType: Bug
DistroRelease: Ubuntu 10.04
Package: audacity 1.3.12-2
ProcVersionSign
Uname: Linux 2.6.32-23-generic x86_64
AlsaCards:
0 [Intel ]: HDA-Intel - HDA Intel
1 [HDMI ]: HDA-Intel - HDA ATI HDMI
Architecture: amd64
Date: Thu Jul 22 16:44:12 2010
InstallationMedia: Ubuntu 10.04 LTS "Lucid Lynx" - Release amd64 (20100429)
ProcEnviron:
PATH=(custom, user)
LANG=en_US.UTF-8
SHELL=/bin/bash
SourcePackage: audacity
Changed in audacity (Ubuntu): | |
status: | New → Triaged |
Changed in audacity: | |
status: | Unknown → Confirmed |
Changed in audacity: | |
status: | Confirmed → Unknown |
Steve: audacityteam. org/forum/ viewtopic. php?f=12& t=9429 and it appears
There has been an enquiry on the help forum
http://
that 16bit uncompressed files have dithering applied on import into
Audacity (when dithering is selected in preferences for high quality
conversion). Surely that should not be the case unless the imported
audio is being resampled to a lower bit depth.
If the default sample rate is set to 16 bit, and a 16 bit audio file is
imported, then unless dither is switched off it can be seen that
Audacity changes the sample values on import.
Someone raised a similar issue on this list recently regarding dither
being applied when a track is inverted.
Martyn:
One for the 'back burner' as far as 2.0 is concerned.
Just found this in my inbox, sorry for the 6 month delay in
responding! For the record:
The dither is being applied on export (I can see that by exporting a
generated 'true' silence and then looking at the wav file in a binary
viewer). And no, that shouldn't be the case when a 16-bit internal
representation is exported to a 16-bit file.
From looking at the code, I broke this back on 17th Sept 2006 in
revision 1.57 of Mix.cpp when I introduced all mixing in floats.
The workaround of setting the dither pref to 'None' is good, the loss
of the use of CopySamplesNoDither isn't (which did it automatically if
formats matched). The subsequent gain of being able to apply -ve dB
gain to a clipped mix is good however (I think this is a result of
that change).
The solution is not as simple as just reverting to using
CopySamplesNoDither if the input and output formats are the same,
since we'd have to re-introduce sensible clipping. Also, does float
have as many bits of integer resolution as 24-bit int? On all
platforms? If so we could keep the mixing at float and just clip and
output in CopySamplesNoDither (rarely used).
We have 'a' user who has gone on to a different app, and a sensible
workaround. And the problem is inaudible to most (all?) of our users.
But I'm not happy that I broke that and it does need addressing at
some point.
Richard:
> One for the 'back burner' as far as 2.0 is concerned.
+1
> Also, does float have as many bits of integer resolution as 24-bit int?
A 32-bit or larger float does.
> On all platforms?
On all IEEE 754 compliant hardware, which means almost anything except a Cray
supercomputer. I'm fairly certain that's anything Audacity runs on, given we
don't have any 16-bit platforms.
> If so we could keep the mixing at float and just clip and
> output in CopySamplesNoDither (rarely used).
Richard