32bit floating point import issue
32bit floating point import issue
It appears when importing 32bit floating point files into any version of Audacity, it cuts off any signal over 0db. This is a pretty major issue for me, and has forced me to use other software for a few projects, even though I find some of Audacity's simpler features much better. Is this a known issue? Any chance on a fix, or possible a setting I have overlooked?
Thanks for any feedback.
Thanks for any feedback.
-
kozikowski
- Forum Staff
- Posts: 69384
- Joined: Thu Aug 02, 2007 5:57 pm
- Operating System: macOS 10.13 High Sierra
Re: 32bit floating point import issue
We must be misunderstanding the question. There are no digital signals over 0dB. Audacity's "zero" is really 0dBFS in the ditgital world. Zero Decibels Full Scale. There is no more up from here.
There are certainly digital signals over analog zero VU and there are tricks to getting between the two.
So please tell us exactly what you're doing. I record from an analog mixing desk into Audacity all the time with great success.
Koz
There are certainly digital signals over analog zero VU and there are tricks to getting between the two.
So please tell us exactly what you're doing. I record from an analog mixing desk into Audacity all the time with great success.
Koz
Re: 32bit floating point import issue
32bit floating point does indeed allow audio above 0, far above 0 in fact. All of the other audio editors I use support this, Wavosaur, another freeware editor does as well. If you want an example, download http://www.wavosaur.com/, and the zip file here http://www.acoustics.net/ir/ir_samp.asp?ir_id=142, import any of those files, and you will clearly see them far beyond 0 (about 60db above, though Wavosaur doesn't support metering beyond 0), and horribly clipped, but normalizing the files will bring all the data above 0 back down to a listenable range. Try the same thing in Audacity, and it will simply remove all of the data.
I started a large project of converting a huge number of impulse responses and planned to use Audacity to join the mono files to stereo, but then I realized it was clipping them improperly.
I started a large project of converting a huge number of impulse responses and planned to use Audacity to join the mono files to stereo, but then I realized it was clipping them improperly.
Re: 32bit floating point import issue
I think that technically 32 bit float can go above 0dB because of exponent biasing, but they shouldn't.
If you play a sound that goes over 0dB it will almost certainly distort. Digital audio is only required to produce audio up to 0dB as this represent "full scale". Audio can not be recorded above full scale, but manipulation of the digital data can produce numbers above what would be 0dB (however doing so reduces the precision).
32bit audio uses a format very much like 24bit (23 bits + sign bit) except that it has an additional 8 bit exponent that gives it floating point precisions, so the actual full scale range is the same as 24 bit, but with greater precision.
With 32 bit float it is possible to represent plus or minus infinity, but for an audio signal this would obviously not be a good idea.
The dynamic range of 32bit float, audio is well beyond the capabilities of sound cards, microphones, or any other audio equipment you may have without trying to go above 0dB.
You have not said why this is an issue. If you have some 32bit float format files that go above 0dB, normalise them to 0dB with your other program before you import them into Audacity.
EDIT:
You posted while I was typing
If you play a sound that goes over 0dB it will almost certainly distort. Digital audio is only required to produce audio up to 0dB as this represent "full scale". Audio can not be recorded above full scale, but manipulation of the digital data can produce numbers above what would be 0dB (however doing so reduces the precision).
32bit audio uses a format very much like 24bit (23 bits + sign bit) except that it has an additional 8 bit exponent that gives it floating point precisions, so the actual full scale range is the same as 24 bit, but with greater precision.
With 32 bit float it is possible to represent plus or minus infinity, but for an audio signal this would obviously not be a good idea.
The dynamic range of 32bit float, audio is well beyond the capabilities of sound cards, microphones, or any other audio equipment you may have without trying to go above 0dB.
You have not said why this is an issue. If you have some 32bit float format files that go above 0dB, normalise them to 0dB with your other program before you import them into Audacity.
EDIT:
You posted while I was typing
If Wavosaur supports these files, use it to normalize them to 0dB. You will not loose any quality above what has already been lost by going over 0dB. Can you do this as a batch process in Wavosaur?I started a large project of converting a huge number of impulse responses and planned to use Audacity to join the mono files to stereo, but then I realized it was clipping them improperly.
9/10 questions are answered in the FREQUENTLY ASKED QUESTIONS (FAQ)
Re: 32bit floating point import issue
I have been using Wavosaur to do just that, so it's not a show stopper by any means, but I do much prefer the basic work flow of Audacity, and would quicker to do everything all in one editor, I think it would be a good thing to be in Audacity, as its standard fare in other editors. As far as batch, that's the place where I run into bigger problems with this project, the files are headerless PCM, so the only real way to batch the files is to first identify them one by one and save them as wav. Regardless, I have been making do, but having to use a few different apps to do it. 
Re: 32bit floating point import issue
Hi Cyrosos,
That's a coincidence, because just last night I discovered the very same thing as you, importing impulse responses into Audacity with the idea of normalising them and editing them, I discovered that any values in a signal greater than 1.0 are set to 1.0 in Audacity. I thought that was the whole idea about floating point was that if you do overload, you don't lose the peaks, however, Audacity chops off any floating point values greater than 1.0 I agree that this should really be changed.
Regards
Albert
That's a coincidence, because just last night I discovered the very same thing as you, importing impulse responses into Audacity with the idea of normalising them and editing them, I discovered that any values in a signal greater than 1.0 are set to 1.0 in Audacity. I thought that was the whole idea about floating point was that if you do overload, you don't lose the peaks, however, Audacity chops off any floating point values greater than 1.0 I agree that this should really be changed.
Regards
Albert
-
kozikowski
- Forum Staff
- Posts: 69384
- Joined: Thu Aug 02, 2007 5:57 pm
- Operating System: macOS 10.13 High Sierra
Re: 32bit floating point import issue
<<<I thought that was the whole idea about floating point was that if you do overload, you don't lose the peaks,>>>
Certainly not. The whole idea is to make the entire rest of the audio response curve enormously more accurate. Somebody posted a demonstration where they reduced a show level by some 40dB or 50 dB and then amplified it back up to normal. In 16 bit, the signal had all kinds of digital errors, grittiness, and distortion, whereas the 32-bit floating signal was all but untouched. Special effects and production below digital zero benefits a great deal from 32-bit floating.
This is literally the first time I've encountered the "over zero" thing. Fine as long as you never need to leave the land of 32-bit. Broadcast gets around this by making the nominal show level -20dBFS. Plenty of room for effects and transients and still have a 60dB noise floor. Actually, noise floor is sixty, what, eight?
Koz
Certainly not. The whole idea is to make the entire rest of the audio response curve enormously more accurate. Somebody posted a demonstration where they reduced a show level by some 40dB or 50 dB and then amplified it back up to normal. In 16 bit, the signal had all kinds of digital errors, grittiness, and distortion, whereas the 32-bit floating signal was all but untouched. Special effects and production below digital zero benefits a great deal from 32-bit floating.
This is literally the first time I've encountered the "over zero" thing. Fine as long as you never need to leave the land of 32-bit. Broadcast gets around this by making the nominal show level -20dBFS. Plenty of room for effects and transients and still have a 60dB noise floor. Actually, noise floor is sixty, what, eight?
Koz
Re: 32bit floating point import issue
Yes you're right kozikowski . but still, 32 bit float can accomodate an overloaded signal, it seems senseless to set any values above 1.0 to 1.0
Re: 32bit floating point import issue
If Audacity did not do that it would create inconsistencies as Nyquist truncates samples to 0dB. You would then have a lot of confusion with "my audio is fine and not clipped, but every time I apply an effect it ends up horribly distorted".
I don't know if there are any other technicals issues concerning this, but it's quite possible that there are.
As koz said, 32bit float offeres enormouse accuracy, but starts to loose this benefit above 0dB, so keeping below full scale give the best accuracy, fidelity, SNR and avoids clipping problems.
I don't know if there are any other technicals issues concerning this, but it's quite possible that there are.
As koz said, 32bit float offeres enormouse accuracy, but starts to loose this benefit above 0dB, so keeping below full scale give the best accuracy, fidelity, SNR and avoids clipping problems.
9/10 questions are answered in the FREQUENTLY ASKED QUESTIONS (FAQ)
Re: 32bit floating point import issue
If there are indeed negatives in audio quality over 0db in 32bit float files, I find it quite strange that Waves engineers have seemingly done it on purpose here, and also Tascam, within their convolution reverb, there must be something more to it. 
Stranger still, is that both examples are impulse responses, along with a possible third IR source from mkoijn9 peaking over 0db.
Stranger still, is that both examples are impulse responses, along with a possible third IR source from mkoijn9 peaking over 0db.