• 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!

Understanding Windows and software EQs

Jose Hidalgo

Addicted to Fun and Learning
Joined
Aug 15, 2020
Messages
961
Likes
1,032
Location
France
Hi guys. This has been puzzling me for a while, but the Internet didn't give me a clear answer. Feel free to correct me if I'm wrong.

Basically there are two ways to output audio from a Windows PC :
  1. Player --> ASIO / KS --> physical output
  2. Player --> Windows mixer --> physical output
The first method is bit-perfect, the second isn't.

Now let's add an EQ to the audio path. There are three ways now :
  1. Player with integrated EQ --> (***) --> physical output
  2. Player --> (***) --> VST Host with EQ VST --> (***) --> physical output
  3. Player --> (***) --> standalone EQ app --> (***) --> physical output
For every way, if all the (***) are "ASIO / KS" then it's bit-perfect. If at least one of the (***) is "Windows mixer" then it isn't.

Now how let's take a popular standalone EQ app such as Equalizer APO.
It's said to not support ASIO / KS input, which leads us to this :
  • Player --> Windows mixer --> Equalizer APO --> ...
This should mean that the sound isn't bit-perfect anymore BEFORE it even reaches Equalizer APO. Which can't be ideal.
(of course the sound isn't bit-perfect anymore AFTER EQ, that's obvious - I'm really saying BEFORE)

Some people have indeed noticed a sound difference, and for that reason, some other people suggest to disable all Windows sound effects and also disable all Windows sound enhancements. That makes sense if your Windows session is devoted to audio (which should be the case if you're serious about audio anyway).

These are the questions I've been asking myself :
  1. Are those two changes enough to make the sound become bit-perfect again BEFORE it reaches the equalizer software ?
  2. Does a standalone EQ app like Equalizer APO still work when all Windows sound enhancements are disabled ?
I don't care about subjectively hearing a difference or not. I'd just like to understand the inner works of all this, precisely.

Thanks. :)
 

hege

Senior Member
Forum Donor
Joined
Dec 25, 2018
Messages
466
Likes
821
Location
Finland
Now how let's take a popular standalone EQ app such as Equalizer APO.
It's said to not support ASIO / KS input, which leads us to this :
  • Player --> Windows mixer --> Equalizer APO --> ...
This should mean that the sound isn't bit-perfect anymore BEFORE it even reaches Equalizer APO. Which can't be ideal.

It stands right there in the name:

"Equalizer APO is a parametric / graphic equalizer for Windows. It is implemented as an Audio Processing Object (APO) for the system effect infrastructure introduced with Windows Vista."

https://docs.microsoft.com/en-us/windows-hardware/drivers/audio/audio-processing-object-architecture

It hooks directly into the Windows audio pipeline, not as some separate after effect. So of course it doesn't work as ASIO/KS by design.

PS. That's why I like it, it works rock solid without any latency, no problems with lipsync with browsers, Youtube etc which doesn't use exclusive audio.
 
Last edited:
OP
Jose Hidalgo

Jose Hidalgo

Addicted to Fun and Learning
Joined
Aug 15, 2020
Messages
961
Likes
1,032
Location
France
Thanks. Yes, that I understand.

What I don't understand is if some Windows settings still allow to keep the sound as "bit-perfect" before it reaches the APO.
Because if that's not possible, then I must confess that I won't understand why EQ APO is so popular among audio enthusiasts (besides the fact that it's free), if by design it can't guarantee bit-perfect input before it even starts EQing the sound...

To better undersand my options, right now I'm using a player (foobar2000) with an integrated convolution plugin. It works well but it's not handy, because every time I want to modify the EQ parameters, I have to create a new impulse response file with Audacity + a VST PEQ. For every sampling frequency.

I wish I could use the same player with an integrated PEQ, but I can't, because my sound is multichannel and there aren't any multichannel PEQ plugins for foobar2000 (I've searched a lot : only stereo ones).

So I'd have to resort to an external software (methods 2 and 3 in my OP).
Method 2 seems unstable for various reasons, which leaves only method 3.

Since everybody's talking about EQ APO, I wanted to understand the reasons of the hype.
But if it by design it can't guarantee bit-perfect input, then...
 

hege

Senior Member
Forum Donor
Joined
Dec 25, 2018
Messages
466
Likes
821
Location
Finland
I think you are way overthinking things based on some very subjective comments about quality. If you want peace of mind by avoiding possible resampling etc, then use the separate player with EQ, I have Jriver since it has great DSP engine. For Youtube etc, I use Equalizer APO with identical settings/convolution/multichannel crossover for sub etc.

Shouldn't be too hard to measure the Equalizer APO performance with loopback, maybe I'll even try for the heck of it.
 

ElNino

Addicted to Fun and Learning
Joined
Sep 26, 2019
Messages
558
Likes
727
I'm also interested in the answer to this question. It would be easy to test with either a loopback comparison or the RME bit test tool if anyone has an RME device.
 
OP
Jose Hidalgo

Jose Hidalgo

Addicted to Fun and Learning
Joined
Aug 15, 2020
Messages
961
Likes
1,032
Location
France
Thanks. Actually like I said I already have a working solution. I don't think I'm overthinking, I just like to understand how things really work. Windows mixer is known to affect sound (and has a pretty bad reputation because of it, as opposed to MacOS or Linux), so I'd like to know if it does indeed affect sound before it enters the APO, and to what extent.

This is all about understanding precisely (we're on ASR, right ?). I'm pretty sure we will hardly be able to hear the difference, but this is not about subjective impressions.

Like ElNino I'd be greatly interested in your loopback feedback, if you have some time to do it. Fingers crossed !
 

hege

Senior Member
Forum Donor
Joined
Dec 25, 2018
Messages
466
Likes
821
Location
Finland
Most of the Windows audio stuff has been beaten to death on many threads, which you can find for example with "CAudioLimiter".

https://www.google.com/search?q=site:audiosciencereview.com+caudiolimiter

Regarding Equalizer APO, I believe it can be hooked at different positions (pre, post) in the APO chain, dunno if it makes any difference. If not resampling, is there even anything other than CAudioLimiter that might change things? Some bit-depth/float conversions etc? I haven't even read all the threads, since it's pure audio nervosa and Youtube is compressed anyway. ;)
 

escape2

Addicted to Fun and Learning
Joined
Mar 8, 2019
Messages
883
Likes
944
Location
USA
Some people have indeed noticed a sound difference, and for that reason, some other people suggest to disable all Windows sound effects and also disable all Windows sound enhancements.
Interestingly enough, when I go into the properties of my DAC (Topping D10) in Windows 10, the "Enhancements" tab is not even there to begin with.

I am still hoping to give EqAPO a try soon because the EQ add-on I'm using in Foobar2000 only applies to Foobar2000, obviously.
 

Sgt. Ear Ache

Major Contributor
Joined
Jun 18, 2019
Messages
1,895
Likes
4,162
Location
Winnipeg Canada
I think ftmp Window's isn't the big issue it's often made out to be. Yeah, Windows has a rep for "affecting sound," but it's not such a huge deal to go into the sound settings and turn off all the processing options. Once that's done, you're likely fine. For my set up I use Foobar with the Mathaudio EQ plugin and Wasapi for music. But when it comes to youtube or other things outside "serious" music listening I'm not worried about bit perfect at all and I don't really need to EQ anything in that regard. The reality is that I often listen to music via bluetooth, or at other times via other means that aren't super high res and bit perfect and honestly, I doubt I could really identify a difference in a blind comparison.
 
OP
Jose Hidalgo

Jose Hidalgo

Addicted to Fun and Learning
Joined
Aug 15, 2020
Messages
961
Likes
1,032
Location
France
If not resampling, is there even anything other than CAudioLimiter that might change things? Some bit-depth/float conversions etc? I
I dunno, and that's precisely the purpose of this topic: expanding our knowledge of that point.

Interestingly enough, when I go into the properties of my DAC (Topping D10) in Windows 10, the "Enhancements" tab is not even there to begin with.
If you have installed ASIO drivers (Topping drivers are ASIO, right ?) I guess it makes sense since ASIO bypasses all that.

I use Foobar with the Mathaudio EQ plugin and Wasapi for music
And I would too... if MathAudio could handle multichannel, which it can't. I know it for sure since I have contected its developer, Sergey, and I have discussed the issue extensively on HA forums. Basically Sergey says that it's foobar's fault, and foobar devs say that it's Sergey's fault (see the linked topic). Honestly I believe foobar devs. But until Sergey decides to do something, I'm stuck.
 

Sgt. Ear Ache

Major Contributor
Joined
Jun 18, 2019
Messages
1,895
Likes
4,162
Location
Winnipeg Canada
Yeah no idea about multichannel EQ options. I'm a 2 channel guy. Personally, I suspect the problems inherent in multi channel are enough to pretty much kill the benefit of EQ anyway but that's probably just my own misconceptions at play...
 
OP
Jose Hidalgo

Jose Hidalgo

Addicted to Fun and Learning
Joined
Aug 15, 2020
Messages
961
Likes
1,032
Location
France
Hi @Sgt. Ear Ache . You may want to click on my last link to see why I need multichannel. It's not "real" multichannel actually, I'm a stereo guy too.
 

Jimbob54

Grand Contributor
Forum Donor
Joined
Oct 25, 2019
Messages
11,112
Likes
14,777
Hi @Sgt. Ear Ache . You may want to click on my last link to see why I need multichannel. It's not "real" multichannel actually, I'm a stereo guy too.
You're not going to like it but Roon would sort your problem. 2 entirely separate playbacks at the same time, each with their own eq.
 

Vasr

Major Contributor
Joined
Jun 27, 2020
Messages
1,409
Likes
1,926
Easier to understand if you separate out the different concepts/systems.

Two definitions of bit-perfect:

1. Strict definition is same bits as in the content file reaching the DAC. Any resampling, truncation or DSP in the middle (EQ, cross-over, effects, etc) will obviously negate that. But you can get this going through Windows sound engine and it is not correlated with what drivers you use. Obviously, EAPO won't satisfy this definition.

Choices to achieve this:
A. Use a direct mode driver in exclusive mode to talk to the destination which you want to process the bits (external or internal). Make sure that the destination supports the bit depth and sampling rate of all the content you have and that the driver you are using does not resample/truncate. Turn off all hardware enhancements in any internal sound cards you may be using (Windows setting won't apply in exclusive mode access) if the direct mode driver ends at the sound card.

B. You can also get bit-perfect going through the Windows software engine in shared mode IF you (a) turn off all enhancements for the device your are going through in Windows setting, (b) specify large speakers so no crossover is used (c) set the sample rate and bit depth to a fixed setting you want and supported by the hardware it is going to and (d) make sure all of your content is of the same bit depth and sample rate (e) do not send multiple audio content at the same time like Windows/App sounds as well as content playing that will require mixing (use different audio out devices if you want to do so). Windows will not do anything to screw up the bits in this scenario.

2. A more practical definition of bit-perfect is that the content reaches the destination without down/up sampling or truncation in bit depth. This is a subset of the first definition and so anything you do for that will also satisfy this definition. But you can do things like EAPO in the middle which will preserve the sample rate and bit depth. EAPO cannot be attached to a Windows device while using it in exclusive mode (because the APO doesn't get access to the bits that way). But you can still get to use EAPO and bit-perfect in this relaxed definition if you follow the guidelines in B above with processing in EAPO.
 

escape2

Addicted to Fun and Learning
Joined
Mar 8, 2019
Messages
883
Likes
944
Location
USA
If you have installed ASIO drivers (Topping drivers are ASIO, right ?) I guess it makes sense since ASIO bypasses all that.
Even if I don't use the DAC in ASIO mode, I still don't see the "Enhancements" tab in Properties.
 
OP
Jose Hidalgo

Jose Hidalgo

Addicted to Fun and Learning
Joined
Aug 15, 2020
Messages
961
Likes
1,032
Location
France
@escape2 : I don't know, it may depend on your Windows version, but it's a bit off-topic here, sorry.

@Jimbo : lol, yes, Roon does it. JRiver does it too. I'll stick with foobar since I can do it already with convolution. Like I said, this topic is rather about understanding the inner works of Windows. I'd like to understand what's going on and why it's so difficult to maintain a bit-perfect stream between two different apps (I'm not saying "within the apps" since any EQ/DSP can alter the stream : I'm saying BETWEEN the apps).

@Vasr : I don't know where you found your second definition, but to me it definitely isn't a definition of bit-perfect, sorry. According to it, all DACs in the market would be bit-perfect when they don't resample. And all lossy audio files (e.g. mp3) would be bit-perfect provided they have the same sample rate and bit depth than the original. That would rather be "samplerate-perfect" and "bitdepth-perfect".

Let's not play with definitions : either something is bit-perfect or it isn't. To me the concept of bit-perfect goes back a long way, to the time where copying a file wasn't necessarily bit-perfect. It was the time where we used floppy disks and software editors put physical protections in the disks themselves (e.g. tiny holes on the media) to prevent bit-perfect copies of their software. At that time the copy software could be fooled and indicate a successful copy, but since it wasn't bit-perfect it wouldn't work. That's from where bit-perfect comes from IMHO. ;)

With that said, my only concern here would be about an audio signal staying strictly the same (bit per bit) between the output of an app (e.g. the player) and the input of another app (e.g. EAPO). It isn't even foobar-related or EAPO-related. Why on Earth would that be so difficult to achieve on Windows ? Somebody please tell me. If nobody knows then fine, just say it. :) Sooner or later somebody has to know eventually.
 
Last edited:
OP
Jose Hidalgo

Jose Hidalgo

Addicted to Fun and Learning
Joined
Aug 15, 2020
Messages
961
Likes
1,032
Location
France
FYI other people have been asking the same questions : https://www.kvraudio.com/forum/viewtopic.php?t=485585

I forgot that there are indeed other EQ apps that use ASIO. Voicemeeter Banana is a good example. It can even work in multichannel mode. But unexplicably its PEQ only has 6 cells max, and most headphone EQ presets require 10 cells. A few weeks ago I requested his developer to increase the number of cells, but I don't think he will.

So yes, EAPO doesn't use ASIO by design, not for technical reasons. Too bad they didn't add it as a setting for some people.

So the question would be : it it possible to achieve that bit-perfect transfer between two apps without ASIO / KS or not, and if yes, what is the best way to achieve it ?

I wonder if some virtual cable software (Virtual Cable, JACK...) could allow two non-ASIO apps to communicate in bit-perfect mode, by allowing an exclusive channel between them. That could solve everything. What do you think ? Maybe that's the solution here.
 
OP
Jose Hidalgo

Jose Hidalgo

Addicted to Fun and Learning
Joined
Aug 15, 2020
Messages
961
Likes
1,032
Location
France
Thanks. I knew sooner or later somebody would give me a MS link, lol. I'll give it a look. :)

I think we're making progress though : like I just wrote, maybe it's possible to use some virtual cable software for bit-perfect communication.
 

hege

Senior Member
Forum Donor
Joined
Dec 25, 2018
Messages
466
Likes
821
Location
Finland
With that said, my only concern here would be about an audio signal staying strictly the same (bit per bit) between the output of an app (e.g. the player) and the input of another app (e.g. EAPO). It isn't even foobar-related or EAPO-related. Why on Earth would that be so difficult to achieve on Windows ? Somebody please tell me. If nobody knows then fine, just say it. :) Sooner or later somebody has to know eventually.

I don't really understand what you are after with your questions, you are just going in circles. There already is a bitperfect method as we know, ASIO. If player outputs ASIO stream, then the receiving app (the ASIO DRIVER really) can read it bitperfect. There is nothing in between that will modify the samples, if such isn't coded in the ASIO driver. The app reading the ASIO stream then does whatever is wanted with the audio data.

What is it that you want more? If either the sender or receiver doesn't support ASIO, then tough luck. Code your own software that supports it. :) Your claim that it's "difficult" on Windows is clearly wrong. Or then you are referring to non-technical issues, such as that the existing software is bad (missing eq, messing with samples etc) and noone did better.
 
Top Bottom