Best sound quality? HELP ME

I have a question about saving my recordings in AUDACITY:
I do it this way:
File - Export Audio… - Save as type: Other uncompressed files - Options… - Header: WAV (Microsoft) - Encoding:

AND NOW MY QUESTION: What should I choose from those encodings to get the BEST sound quality? (NOTICE: I don’t have to care about disk space or compatibility to other programs etc.)

  1. Signed 16 bit PCM
  2. Signed 24 bit PCM
  3. Signed 32 bit PCM |||| Is this good? (I think at least better than 1. and 2., isn’t it?)
  4. Unsigned 8 bit PCM
  5. 32 bit float
  6. 64 bit float |||| Is this the best? 64 is the highest number of those 12 options
  7. U-Law
  8. A-Law
  10. Microsoft ADPCM
  11. GSM 6. 10
  12. 32kbs G721 ADPCM

Are numbers 7., 8., 9., 10., 11., 12. also good oder even better? I haven’t heard of them before…


-(I use Windows 7 Home Premium 32-bit SP1 and Audacity 2.0.6)-

  1. 32 bit float. (because that is what Audacity is using internally, so there are no conversion losses).

thank you very much for your answer.
If I understand you right, e.g. the 64 bit float would be too “good” and has to be converted?
Is there any possibility to change the internally used encoder or where can I see this? (I think I don’t need/want to do that but it interests me)

Thank you for helping me :wink:

64 bit float would be exactly “as good” as 32 bit float, but no better, so you would be doubling the file size for zero benefit.
As an analogy, it’s like having a list of numbers:
1.3, 2.6, 0.7, 9.5…
and writing it as:
1.3000, 2.6000, 0.7000, 9.5000…
(uses more ink and paper, but the values are still exactly the same).

I’m not sure what you mean by “encoder” in this context. Writing PCM files is handled for Audacity by libsndfile (

Thanks for answering and especially for this really good explanation:

1.3, 2.6, 0.7, 9.5…
and writing it as:
1.3000, 2.6000, 0.7000, 9.5000…

As you could see, I’m not very familiar with Audacity or even with sound recording at all. :confused:
I wanted to know whether I can change the 32 bit float (you told me this is what Audacity uses before converting or exporting, am I right??) and I thought that this is called encoder because “32 bit float” is what I found at “Encoding:”.
Summarizing, 32 bit float is the best option and Signed 32 bit PCM is made by libsndfile.

Correct me please if I am wrong at any place.

Thank you.

“Encoding” is the technically correct word in that context, but could easily be confused “encoding and decoding” as used in connection with formats such as MP3, AAC etc.

The “encoding” for PCM format (“WAV”, “AIFF” and “RIFF” all use “PCM encoding”) is an extremely simple system. Files of these types usually have some sort of “header” information, and may include “metadata”, but the actual audio data is really just a list of numerical values. Each numeric value represents one point on the waveform (a “sample”).

Formats such as MP3, AAC, OGG, WMA etc. do much more complex things with the audio data - they “encode” the sample values to create a smaller set of numeric values. Playing back one of these types of files requires that the data is “decoded” to produce (approximately) the audio data that you started with. PCM formats do not require “encoding” / “decoding” in this sense because the numeric values are just stored as a sequence on numbers.

Within Audacity, whether editing or processing, audio is just a bunch on numbers. The “valid” range of sample values is from -1 to +1 (as shown on the vertical scale of an audio track). As you are no doubt aware, computers work in binary, so the range of possible values for audio samples needs to be represented as binary values. For “16 bit integer” binary data, the possible range of binary values is 0000000000000000 to 1111111111111111. In decimal that is a range of -32768 to +32767 (65,536 distinct values). The binary numbers are “normalized” to a range of -1 to +1 by dividing the binary value by 32768.

In contrast, “32 bit float” is a rather more complex form of binary number which can itself represent fractional (“floating point”) values, thus the “valid” range for audio samples of -1 to +1 can be represented directly using 32 bit float numbers, and there are billions of distinct values. 32 bit float values can also represent values outside of the range +/- 1, which is very handy for us because it means that if we accidentally cause values to go outside of the “valid” range, then we can recover from that (by amplifying to a lower level) without damage (only applies to “floating point” data).

What libsndfile does is to handle converting between “raw numbers” and “audio files”. When an audio file of a supported type is read from disk, libsndfile will extract the raw numbers from it. Similarly, when writing an audio file, libsndfile will convert the raw number data into a “file stream” which can then be written to disk.

Any of that useful? Does that give you a better idea of what is going on?