• WANTED: Happy members who like to discuss audio and other topics related to our interest. Desire to learn and share knowledge of science required. There are many reviews of audio hardware and expert members to help answer your questions. Click here to have your audio equipment measured for free!

Is it possible to use EQ and have bitperfect output at the same time?

Keith_W

Major Contributor
Joined
Jun 26, 2016
Messages
2,531
Likes
5,801
Location
Melbourne, Australia
OK, time for a stupid question of my own :)

JRiver claims to perform operations at 64 bit floating point. Does this mean they increase the bit depth of a 16 bit audio file to 64 bits, perform operations on it, then decimate that back down to 16 bit for output to DAC?
 

dc655321

Major Contributor
Joined
Mar 4, 2018
Messages
1,597
Likes
2,235
OK, time for a stupid question of my own :)

JRiver claims to perform operations at 64 bit floating point. Does this mean they increase the bit depth of a 16 bit audio file to 64 bits, perform operations on it, then decimate that back down to 16 bit for output to DAC?

I would say scale rather than decimate, but yes.
More likely to output 24 or 32 bit integers than 16 bit also.
Plus, there could be dither added on the floating point --> integer conversions.
 

sejarzo

Addicted to Fun and Learning
Forum Donor
Joined
Feb 27, 2018
Messages
961
Likes
1,066
OK, time for a stupid question of my own :)

JRiver claims to perform operations at 64 bit floating point. Does this mean they increase the bit depth of a 16 bit audio file to 64 bits, perform operations on it, then decimate that back down to 16 bit for output to DAC?

I use Foobar, which requires that one must specify the bit depth on the same Preferences tab as where one selects the desired output device. My Topping DAC that feeds my headphone amp can accept 32 bit, but the internal audio codec in my desktop can only accept 24 bit data. If I want to listen to something on my desktop speakers and switch over to that device, and don't remember to reset the bit depth, I immediately get this:

1680058731502.png


However, as I understand it, ever since perhaps 2016, JRiver has employed an option to automatically set the output bit depth to the maximum that your DAC allows, if you select the automatic option. Unfortunately I only saw one screen grab and I have no idea where in the menu structure one can select that option.
 

Peterinvan

Active Member
Joined
Dec 10, 2021
Messages
294
Likes
234
Location
Canada

kemmler3D

Major Contributor
Forum Donor
Joined
Aug 25, 2022
Messages
3,022
Likes
5,635
Location
San Francisco

Ken Tajalli

Major Contributor
Forum Donor
Joined
Sep 8, 2021
Messages
1,996
Likes
1,773
Location
London UK
OK, time for a stupid question of my own :)

JRiver claims to perform operations at 64 bit floating point. Does this mean they increase the bit depth of a 16 bit audio file to 64 bits, perform operations on it, then decimate that back down to 16 bit for output to DAC?
I very much believe so.
Doing DSP on 16 bit audio can cause issues. Once you are in a 64 bit environment , you can avoid that. But I think they use 64 bit to better use the CPUs available.
At any rate, we are talking about padding the bit depth, by adding zeros .
 

kemmler3D

Major Contributor
Forum Donor
Joined
Aug 25, 2022
Messages
3,022
Likes
5,635
Location
San Francisco
we are talking about padding the bit depth, by adding zeros .
To be pedantic, that's not exactly how it works since 16-bit audio is typically integer, and 32- or 64-bit is typically floating point, so the conversion is slightly more complex than throwing a few zeros on the end of the value.
 

tmtomh

Major Contributor
Forum Donor
Joined
Aug 14, 2018
Messages
2,636
Likes
7,497
There's no such thing as bit-perfect output when digital EQ has been applied (it's a logical contradiction, as noted above). But to address what I take as the spirit of the OP's question, it's certainly possible to apply digital EQ and end up with a result whose effective bit-depth/noise floor/quantization error matches that of the original signal.

Conversely, analogue EQ of course does not drop any bits since it's out of the digital realm - but again addressing the spirit of the question, analogue EQ tends to increase the noise floor, which is functionally the same thing that reducing bit-depth does. So analogue EQ has essentially the same effect as dropping bits.
 

DVDdoug

Major Contributor
Joined
May 27, 2021
Messages
2,920
Likes
3,834
JRiver claims to perform operations at 64 bit floating point.
Most audio DSP is done in floating point. 32-bit floating-point is more common. Audacity works in 32-bit floating-point and REAPER works in 64-bit floating-point. You can convert losslessly back-and-forth between 24-bit integer and 32-bit floating-point.

It's "easier" as long as you have a floating-point processor. Digital filters (including) EQ use multiple summations and if you sum two 24-bit integers you may need one more bit, etc. Sum more 24-bit values and you need even more bits to hold the result. That's not a problem with floating-point. And if you do something like boost the bass with EQ you can go over 0dB, or integers will clip if you "try" to go over 0dB. Floating point essentially has no upper (or lower) limit* so you can boost over 0dB without clipping and attenuate before the data is converted back to integer and sent to the DAC.



* I don't remember the exact numbers but 32-bit floating-point can go lower than -1000dB and higher than +1000dB.
 

Keith_W

Major Contributor
Joined
Jun 26, 2016
Messages
2,531
Likes
5,801
Location
Melbourne, Australia
Thank you for all your answers. OK, next question. What is floating point, and what is the difference between non-floating point (sinking point?). Is it a CPU efficiency issue, or does it somehow affect audio quality? Maybe allows more complex operations?
 

MaxwellsEq

Major Contributor
Joined
Aug 18, 2020
Messages
1,628
Likes
2,427
Thank you for all your answers. OK, next question. What is floating point, and what is the difference between non-floating point (sinking point?). Is it a CPU efficiency issue, or does it somehow affect audio quality? Maybe allows more complex operations?
It's good old school mathematics: integers are things like 73, 112, 4; floating point is something like 87.223, 1222.2, 5.0. When programming you usually have to specify whether something is an integer or a floating point. E.g. in C you have "int" and "float".

With Integers, if I divide 7 by 2, I can only have 3 or 4 as an integer answer. With a float, I can have 3.5. So generally floating point allows finer scales when dividing (which is often what happens with eq-ing audio in the digital domain).
 

kemmler3D

Major Contributor
Forum Donor
Joined
Aug 25, 2022
Messages
3,022
Likes
5,635
Location
San Francisco
What is floating point, and what is the difference between non-floating point (sinking point?). Is it a CPU efficiency issue, or does it somehow affect audio quality? Maybe allows more complex operations?
"Floating point" means that the decimal can move around.

When you have a fixed number of bits per number, that means you only have so many digits to use, to represent a given value.

So to use a miniature example, with 4 digits you can go from 9999 down to 0001, or 999.9 down to 000.1

However, with floating point, you can move the decimal freely, it could go from 9999 down to .0001 - so we just increased the ratio between the highest and lowest value by several orders of magnitude by allowing the point to float. (these examples are in decimal and IRL they're in binary, but you get the idea.)

It's not so much a CPU efficiency issue as a sound quality issue. @DVDdoug pretty much explained it already, but think about what this means for an audio signal. The ratio between the highest and lowest numbers you can represent is also known as dynamic range in the audio world, so floating point has a clear advantage there. And because it can accurately represent both very large and very small values, you can do a lot more to the audio while adding almost zero noise.

With 16-bits you can't really add a -100dB signal to a -1dB signal. At most, it will add a bit of noise. With 32-bit floating point you can, and still come out with the right answer. This is why it's so important for DSP.
 
Last edited:

somebodyelse

Major Contributor
Joined
Dec 5, 2018
Messages
3,682
Likes
2,962
Whether it's an efficiency issue depends on the hardware. If you're talking modern CPUs they will have a floating point unit - dedicated hardware for doing floating point calculations - so there won't be much of a speed penalty, and even if there were you probably have more than enough processing power anyway. If you're using much more limited hardware, say the microcontroller that's being a USB receiver in a DAC, then you may only have native integer processing available. Floating point calculations can still be done, but more slowly than integer, so you may have to pick between say more PEQs or fewer but higher quality.
 

androidbrick

Member
Reviewer
Joined
Dec 11, 2020
Messages
8
Likes
13
What do you think the headphone EQ plugin is doing to the bits? Leaving them unchanged? If so, how does it apply EQ?
EQ works in bit-perfect (exclusive) mode, I tested it. Played local MQA files sent to my MQA SMSL DAC and I did get MQA on the screen, not PCM, so it works.
 

antcollinet

Master Contributor
Joined
Sep 4, 2021
Messages
7,413
Likes
12,295
Location
UK/Cheshire
EQ works in bit-perfect (exclusive) mode, I tested it. Played local MQA files sent to my MQA SMSL DAC and I did get MQA on the screen, not PCM, so it works.
If it is not changing the sound in some way it is not doing EQ. It can't change the sound without changing the bits.

If it is able to do the DSP within the MQA domain I don't know.
 

androidbrick

Member
Reviewer
Joined
Dec 11, 2020
Messages
8
Likes
13
If it is not changing the sound in some way it is not doing EQ. It can't change the sound without changing the bits.

If it is able to do the DSP within the MQA domain I don't know.
The sound changes on the fly (real-time), but maybe it's because DAC's chip is capable of hardware decoding.
 

sejarzo

Addicted to Fun and Learning
Forum Donor
Joined
Feb 27, 2018
Messages
961
Likes
1,066
The sound changes on the fly (real-time), but maybe it's because DAC's chip is capable of hardware decoding.


That's because MathAudio does its processing on your computer, ahead of the point where Foobar uses WASAPI Exclusive to transmit the data to the DAC. It's only that last step that is "bit-perfect."

I'm no expert in how the signature that an MQA-capable DAC sees is encoded into the data, and I agree it seems odd that performing DSP on such a data stream wouldn't definitely corrupt it because what I have seen written about MQA playback seems to consistently recommend ASIO to be doubly certain that nothing corrupts the data.
 
Last edited:
Top Bottom