64-bit double precision for the plugin-interface

DSP, Plugin and Host development discussion.
RELATED
PRODUCTS

Post

Cubase 9.5 advertises that it supports '64-bit double precision' for the VST-interface. Please note that i refer to the mathematical number-precision float vs double for the buffers, not 64-bit address-mode.
Fact is that any plugin in any plugin-format can use doubles and calculate with 64-bit internally where it is needed.
I can not see any advantage that a 64-bit buffer for the interface should have, since 32-bit precision seems more than sufficient. 32-bit means that there is a 65536-times higher resolution than an audio-CD (for simplification I am ignoring float vs integer here). A 64-bit buffer means that it has 48 bits more than a CD which has 16-bit. This means a 65546*65536*65536 times higher resolution than an audio-CD.
No D/A converter can reproduce this and in practice no signal-chain is long enough to justify 64-bit here.
In my eyes this is just a marketing thing, wastes memory-bandwidth and does not make sense from the technical side. Do I miss something here?

Post

So you expect the DAW to work with 64bit internally, and then truncates the data to transfer it via the 32bit buffers in the plugin interface to you, such that you can further process it in 64bit internally? Eh?

Btw why I expect a DAW to work in 64Bit: I had a issue with Cubase. Load 100 tracks, leave them empty, play them back - enjoy the summed noise floor :D That somehow changed with one version and I thought they switched to 64bit internal processing then.

Post

Markus Krause wrote: Fri Jun 19, 2020 10:16 am A 64-bit buffer means that it has 48 bits more than a CD which has 16-bit. This means a 65546*65536*65536 times higher resolution than an audio-CD.
This bit arithmetics reminds me how some people calculate percents.

CD does not carry floats, it carries integers. In this case you have to compare this number with number of significant bits in float. For single-precision float it is 23. 24bit masters and CD's is quite a thing now, and this number is exactly what normalized float can represent without distotrion closer to +/-1. If one wants to have 25 bit resolution, he has to go with doubles. The real difference between 16-bit CD's and doubles is 9 (25-16) bits.

Also, it is not correct to compare resolution of a final mastered product and intermediate presentation where for example different noise level at extreme settings may alter the final result significantly.

Post

Vokbuz wrote: Fri Jun 19, 2020 1:13 pm
Markus Krause wrote: Fri Jun 19, 2020 10:16 am A 64-bit buffer means that it has 48 bits more than a CD which has 16-bit. This means a 65546*65536*65536 times higher resolution than an audio-CD.
This bit arithmetics reminds me how some people calculate percents.

CD does not carry floats, it carries integers. In this case you have to compare this number with number of significant bits in float. For single-precision float it is 23. 24bit masters and CD's is quite a thing now, and this number is exactly what normalized float can represent without distotrion closer to +/-1. If one wants to have 25 bit resolution, he has to go with doubles. The real difference between 16-bit CD's and doubles is 9 (25-16) bits.

Also, it is not correct to compare resolution of a final mastered product and intermediate presentation where for example different noise level at extreme settings may alter the final result significantly.
Please don't missquote me. I clearly stated that i assume the simplification that the float = integer for this rough numerical estimation. I also pointed out that a CD is 16 bit integer.
In your example you're assuming that a float is a 24 bit integer only, which isn't true. It does have 8 additional bits for the exponent that you neglect completely.

My point is that an interface with 64 bit precision does offer no audible advantage.
Especially for synthesizers which are generators without an input this format is completely useless.

Can you show me an DA converter with more than 32 bit resolution? There seems to be none :wink:

Post

RobinWood wrote: Fri Jun 19, 2020 11:40 am So you expect the DAW to work with 64bit internally, and then truncates the data to transfer it via the 32bit buffers in the plugin interface to you, such that you can further process it in 64bit internally? Eh?

Btw why I expect a DAW to work in 64Bit: I had a issue with Cubase. Load 100 tracks, leave them empty, play them back - enjoy the summed noise floor :D That somehow changed with one version and I thought they switched to 64bit internal processing then.
Please note that this is a developer forum. You seem to be a user and not be familiar with development.
A '0' will remain a '0' - no matter if you use a float or a double.
Empty tracks shouldn't create a noise floor - no matter if you use 32bit or 64bit processing. If you expericenced this there is something going wrong in Cubase and you should refer to Steinberg for a bugfix. I assume that they add noise to get around 'denormalisation'.

Post

I didn't misquote you, I quoted the most strange part you wrote. I've read your post fully and properly.

The difference between 16-bit CD quality and 64-bit double quality begins at 9 bits and maxes out at 37 (53-16) bits. Talking about 48 bits of difference is oversimplification.

To keep 10 bit values in memory you will use 16 bit variable, since you don't have 10 bit variables. The same thing with float vs double. You don't need full precision of doubles to make sense of using them.

Even if 32-bit is the top limit for DA converter, for precise processing and mixing of this 32-bit signal you need more than 32-bit precision.

Post

I'm not sure what the best DACs have for effective noise floor. I've heard the figure "20 bits" some years ago, but it might have improved.

Regardless, it's definitely somewhat less than 32-bits. Because of how the mantissa and exponents and negative bits in 32-bit floating point work, you get at minimum the equivalent of 25-bit integers (all numbers from -16777216 to 16777216 are represented as-is). Considering that most of the time the signal should be under -6db, and floating point precision increases close to zero, and that the human ear also increases precision in this way, you'd need probably at least 26-bit, 27-bit, 28-bit converters before you even consider that 32-bit floating point is no longer enough precision for your needs. At some point your step size is smaller than the parasitic radio signals your wiring is picking up (we're in the millions-to-one range here). This is all way past what the human ear can hear anyways.

TLDR : 64bit floating point processing exists for marketing reasons, not because it really makes any sense.

Post

Markus Krause wrote: Fri Jun 19, 2020 2:30 pm
RobinWood wrote: Fri Jun 19, 2020 11:40 am [...]
Btw why I expect a DAW to work in 64Bit: I had a issue with Cubase. Load 100 tracks, leave them empty, play them back - enjoy the summed noise floor :D That somehow changed with one version and I thought they switched to 64bit internal processing then.
Please note that this is a developer forum. You seem to be a user and not be familiar with development.
What do you want to say here? Aren't 'normal' users not allowed to participate in developer topics and if so, what qualifies a kvr user to be a developer?
A '0' will remain a '0' - no matter if you use a float or a double.
Empty tracks shouldn't create a noise floor - no matter if you use 32bit or 64bit processing. If you expericenced this there is something going wrong in Cubase and you should refer to Steinberg for a bugfix. I assume that they add noise to get around 'denormalisation'.
I remember that Cubase did add a quiet noise to avoid denormalisation. If they switched to 64-bit processing the noise could get much more quiet. It might also be possible that they didn't dare to make SSE a requirement before (DNZ flag) and the change is coincidence.
MadBrain wrote: Fri Jun 19, 2020 4:05 pm TLDR : 64bit floating point processing exists for marketing reasons, not because it really makes any sense.
This.
I think there were long debates about 32 vs. 64 bit processing on this forum as well as on the JUCE forum.

Post

64-bit floating points have major advantages when the processing chain has a lot of ops happening. The quantization noise is significantly reduced, thereby reducing harmonic distortion and it's byproducts (when that noise is further processed).

Post

I found a very good book with scientific facts about it here:

https://books.google.de/books?id=od1PLz ... rs&f=false


To sum it up:

- A 16-bit DA converter can to up to -96dB. This is not always sufficient and can result in audible artefacts.

- A 24-bit DA converter can do a noise-floor of up to -144 dB in theory and in the best case (normalized output and volume in the mixer set to exactly 1).

- In practice the DA converters have a noise-floor which is much higher, even for high-end hardware. RME writes that the 24-bit DA-converter of the HDSP runs at -122dB (this is somewhat around 21-bit). Creative Labs advertises that the Sound Blaster AE-9 is at -129 dB (more like 22-bit). Measurements in practice show a noise-floor more like -110dB for high-end soundcards. Further hardware in the signal-chain, like amplifiers and speakers add additional noise.

- The round-off errors of a 32-bit float happen between -150 dB in the worst case (25 bit = 24 bit + 1 bit sign) and -192 dB in the best case.

- The maximum dynamic range of the human ear is 120dB.

- From the psycho-acoustic aspect the logarithmic float-format with the 7-bit exponent behaves more like a-law encoding. With a-law you perceive 12 bit sound-quality with only 8 bit. It fits well with the logarithmic perception of the ear. A 32-bit float behaves more like like a '32-bit a-law' signal and not like a '24 bit integer'.


To sum-up the sum-up:

You can't hear a difference. It's for marketing only.

Post

The Intermediate product needs to be higher in accuracy, in order to get that what-ever-the-hell bit depth / samplerate you are outputting it. Ie. you want to have that samplerate high as possible to minimize aliasing <-> same sort of sorcery goes for the bit depth. You can diy confirm this at home by inputting a 16bit and recording / monitoring it at 24 bit, then start amplifying it. The almost bit crusher like artefacts appear quite quickly. Now, since the consumer and pro audio both are (have been some time?) using 32bit DACs the intermediate product needs to be at 64bit (or less could do, but thers not much choise in that is there?) in order to get rid of the above annoyances and have that 32bit output as clean as you can have. The same applies to the chant "16 bit / 44.1khz is enough, 192khz is useless cuz ppl cant hear above 20khz" you need to have that intermediate product higher than that to get the final clean. Otherwise you most defo are going be heart crushed by the quality. Whether any artefacts from a 24bit recording can be heard outputting it at 32bit, well..very little if any according to what Markus posted, kinda on the limits with 120db hearing range, they would still be there however...and that can cause problems.

What the difference would be for a VST to jump from 32bit float to 64bit float, I would not know. I still doubt that going higher on internal processing accuracy would NOT bring any benefits what-so-ever.

Well, anyway is it really just and only for "marketing reasons"? If so, we have reached a limit where sh^*t cant get any better, good for us :)
{"panic_string":"BAD MAGIC! :shrug: (flag set in iBoot panic header), no macOS panic log available"} "Apple did not respond to a request for comment."

Post

You can diy confirm this at home by inputting a 16bit and recording / monitoring it at 24 bit, then start amplifying it.
No you can't. The quality of the 32-bit float format does not suffer from a significant loss in quality when you amplify it. Even with the most extreme mixer settings. It's completely different math. That's why most audio-interfaces use floats and not integers.
Reference: https://en.wikipedia.org/wiki/Floating-point_arithmetic
now, since the consumer and pro audio both are (have been some time?) using 32bit DACs
Please read my above post and try to understand it. The bit-depth with that a DAC is advertised and what it really can do is drastically different.
A true 32-bit DAC would need a noisefloor of -192dB. Such hardware does not exist.
A 24-bit DA converter can do a noise-floor of up to -144 dB in theory.
In practice the DA converters have a noise-floor which is much higher, even for high-end hardware. RME writes that the 24-bit DA-converter of the HDSP runs at -122dB (this is somewhat around 21-bit). Creative Labs advertises that the Sound Blaster AE-9 is at -129 dB (more like 22-bit). Measurements in practice show a noise-floor more like -110dB for high-end soundcards.
What the difference would be for a VST to jump from 32bit float to 64bit float, I would not know. I still doubt that going higher on internal processing accuracy would NOT bring any benefits what-so-ever.
- It does not bring any audible benefits. Also not with extreme mixer settings.
- It wastes RAM
- The additional memory-bandwith wastes CPU
Last edited by Markus Krause on Sun Jun 21, 2020 1:04 pm, edited 1 time in total.

Post

I do agree, that you are 100% right and it is fully marketing. Plus a waste of resources, too. On the other hand, I think 64 bit processing was announced including a bunch of other stuff by Steinberg, like VST3 (higher parameter resolution), that ASIO guard buffer precalculation which makes lower latencies possible, etc.

I think Steinberg is quite known for a bunch of non very logical decisions, e.g. ignoring the fact that you already can do sidechaining with the VST2.4 standard, and making "sidechaining" a unique selling point for VST3. But nevertheless, it always was possible in Cubase to use 2.4 sidechaining already, too.

There are some plugins though which use double precision / 64 bit, e.g. SPCPlugins Arcsyn. Would be interesting to ask those developers, why they decided to switch to 64bit.

Post

To be honest:

We will also support '64 bit double-precision'. It doesn't makes sense at all for synthesizers. But a couple of users will request it, since Steinberg and others also do support it and advertise with it. :?

So this will only be for marketing-reasons

Post

Markus Krause wrote: Sun Jun 21, 2020 12:47 pm
You can diy confirm this at home by inputting a 16bit and recording / monitoring it at 24 bit, then start amplifying it.
No you can't. The quality of the 32-bit float format does not suffer from a significant loss in quality when you amplify it. Even with the most extreme mixer settings. It's completely different math. That's why most audio-interfaces use floats and not integers.
Reference: https://en.wikipedia.org/wiki/Floating-point_arithmetic
now, since the consumer and pro audio both are (have been some time?) using 32bit DACs
Please read my above post and try to understand it. The bit-depth with that a DAC is advertised and what it really can do is drastically different.
A true 32-bit DAC would need a noisefloor of -192dB. Such hardware does not exist.
A 24-bit DA converter can do a noise-floor of up to -144 dB in theory.
In practice the DA converters have a noise-floor which is much higher, even for high-end hardware. RME writes that the 24-bit DA-converter of the HDSP runs at -122dB (this is somewhat around 21-bit). Creative Labs advertises that the Sound Blaster AE-9 is at -129 dB (more like 22-bit). Measurements in practice show a noise-floor more like -110dB for high-end soundcards.
What the difference would be for a VST to jump from 32bit float to 64bit float, I would not know. I still doubt that going higher on internal processing accuracy would NOT bring any benefits what-so-ever.
- It does not bring any audible benefits. Also not with extreme mixer settings.
- It wastes RAM
- The additional memory-bandwith wastes CPU
mhh, must be the coffee grounds in my ears, and my eyes are not what they used to be since I can, hear it and see it on a scope. Or maybe just my brain doing the funk with me. What is it then what I hear input at 16bit, but when switching to 24bit it vanishes? Happens just about when the signal level drops near and below that 16bit range..you do need to amplify it quite some, give you that..
{"panic_string":"BAD MAGIC! :shrug: (flag set in iBoot panic header), no macOS panic log available"} "Apple did not respond to a request for comment."

Post Reply

Return to “DSP and Plugin Development”