Hello!
Let’s talk about 32-bit vs. 64-bit sound processing in VST plugins (not only talk but also I have [3 plugins to perform audio tests]!)
1. 32-bit single precision floating point format (a.k.a. float)
Used in most DAWs. The main format for VST plugins to process (AudioEffect::processReplacing).
Got:
- Sign bit: 1 bit
- Exponent width: 8 bits
- Significand precision: 24 (23 explicitly stored)
The sample values for 0 dbFS are between -1.0 and 1.0. So it’s actually 24 bits per sample.
2. 64-bit double precision floating point format (a.k.a double)
Optional format for VST plugins to process (AudioEffect::processDoubleReplacing starting from VST 2.4). Some DAWs declare if all plugins in chain use 64-bit processing the whole signal chain has 64-bit processing.
Got:
- Sign bit: 1 bit
- Exponent width: 11 bits
- Significand precision: 53 bits (52 explicitly stored)
The sample values for 0 dbFS are between -1.0 and 1.0. So it actually 53 bits per sample.
There’re 2 main questions to use double instead of float:
- How much is performance degradation?
- Is it noticable audio quality enhance?
Read more of this post