“I read your definition of ‘Floating Point’ in the WFTD archives, but I’m still not getting it, and manufacturers keep marketing their effects boxes based on this. Please help me decide what to buy by at least helping me understand the terms they’re throwing at me.”
For this question we went to Sweetwater Sales Engineer Nika Aldrich. Your inSync editor has heard him explain this to his customers before and thought that explanation would be of help here.
First, let’s talk about a base 10 numbering system. There are several ways to express a number, but if I want to express the number 12345678 (8 total “bits” or “digits”), a “fixed point” way of expressing this would be just like that: 12345678. The decimal here is “fixed” at the end of the “word“. If you want to express the number 12345.678, the decimal will get rounded off because it cannot be expressed in a “fixed point” system (unless it specifically allows for a number of places after the decimal at the expense of places before the decimal — you can’t have both). The result in this case would be 00012346.
Another way to express numbers in base 10 is through scientific notation. This is where a “mantissa”, or the numeric values themselves, are multiplied times 10 raised to an exponent. In this way of expressing numbers, 12345678 is expressed as 1.2345678 x 10^8. The advantage of using scientific notation here is that we can express very large numbers through many fewer actual digits. A common number in chemistry is 6,022,000,000,000,000,000,000,000, which can be written as 6.022 x 10^23.
Fast forward now to binary and floating point. In floating point math the word is divided into an integer and a mantissa. The mantissa may be 24 bits and the integer could be 8 bits. This allows the number in the mantissa to get “shifted” or “scaled” to the left or the right depending on the value of the integer. For the sake of explanation, let’s talk about 4 bits. With four bits I can count up to the number 16. This ranges from 0000 to 1111 in binary. But if I work with 6 bit floating point where four bits is the mantissa and two bits is the integer, I can count much higher. I can count up to 16, but I can then shift it up to three places to the left. See below:
——————————-
Integer: 00
Mantissa: 1111
Binary Value: 0001111
Numeric Value: 15
——————————-
Integer: 01
Mantissa: 1111
Binary Value: 0011110
Numeric Value: 30
——————————-
Integer: 10
Mantissa: 1111
Binary Value: 0111100
Numeric Value: 60
——————————-
Integer: 11
Mantissa: 1111
Binary Value: 0111100
Numeric Value: 120
——————————-
Integer: 11
Mantissa: 0001
Binary Value: 0001000
Numeric Value: 8
——————————-
Integer: 00
Mantissa: 1000
Binary Value: 0001000
Numeric Value: 8
——————————-
Now the actual implementation of this is not quite this simple, but you can see that I can count much higher with floating point math than I can with fixed point (even with the same number of total bits), but my accuracy doesn’t necessarily improve at the mantissa. In other words, it’s kind of like only being able to count to 99, but being able to represent 990, 9900, .0099, etc, even though you can only count up to 99.
The advantage from the processing side is that manufacturers can deal with much larger (and smaller) numbers which can help them maintain the integrity of audio data throughout the chain, even through drastic gain changes that would adversely affect the signal if it was only fixed point.
The bottom line for YOUR question is that it is easier to do “better” math with floating point processors, but this one feature does not necessarily yield better results! The algorithm they’re doing and their implementation of it with whatever type of processor they’re using is “exponentially” more important! In the end your ears will still have to judge what sounds good or not.