How to return high-quality sound in Windows 7 - bit output, hardware effects (EAX, etc.)
I want to share my experience on the topic of sound in Windows 7.
In fact, everything is not as bad as it seems at first, and I will demonstrate it to you now.
I'll start over.
Here the scheme of the sound subsystem is approximately the following:

In this case, through the DirectSound interface, the software had direct access to the hardware resources of the sound card - mixing, conversion of the sampling frequency, various effects (including 3D positioning) - in general, all that was needed, like for music / movies and games.
Of course, there were problems, in particular with the Windows mixer (inaccurate volume control, forced low-quality oversampling of everything up to 48 kHz), but they were quite easily dispensed with Kernel Streaming (the same stream going past kmixer), and sometimes even using good drivers (for Creative, for example, these only appear in the X-Fi line. On Audigy audio cards, the mixer does not behave quite adequately, but, if desired, it is not difficult to deal with this).
And so, our sound enthusiasts lived, they did not know grief, but then a new OS from Microsoft arrived, which of course had to contain dramatic changes (and it doesn’t matter which way).
Thus, as part of a new concept of hardware abstraction , Windows Vista, among other things, received a completely redesigned audio input / output subsystem. And of course, it was not processed in the best way.
Here's what it took this time:

API - Application Programming Interface
APO - Audio Processing Object
CPT - Cross Process Transport
KST - Kernel Streaming Transport
Now I will explain. The bottom line is this: all programs that are sharpened for output to DirectSound and do not know anything about the new interface are connected to WASAPI in general mode (WASAPI Shared), then the following happens: The
components of WASAPI (using only the resources of the central processor) perform all the necessary (and not very) conversion:
Plus, you need to add the ability to overlay in the process of processing software effects (the algorithms of which are embedded in the drivers of the sound card). For example, for Creative X-Fi sound cards there is a miserable emulation of the CMSS-3D effect.
The quality of all these processors, of course, is not the highest.
Then all this is sent via Kernel Transport to the sound card.
Now let's try to objectively evaluate the advantages and disadvantages of the new system:
+ basic processing capabilities for sound cards that do not know how to process sound “on their own”
+ input support for almost any audio format - multichannel audio with a sampling frequency of up to 192 kHz and a quantization depth of up to 32-bit float
+ increased stability (controversial statement, in principle)
- forced resampling of dubious quality
- mixing channels without environmental effects (or they are very primitive)
- narrowing the dynamic range (especially in 16-bit mode)
- lack of access to hardware DSP, i.e. loss of all its functionality, including EAX effects in games (including on cards where EAX was emulated programmatically, since WASAPI doesn’t even have such a concept)
- clicks, wheezing and other consequences associated with the use of CPU resources.
As you can see, computer music lovers-audiophiles (I hope no one will be offended) and gamers are most unlucky.
People who are not particularly interested in what happens with the sound on the way to the sound card may even get a certain improvement (although, again, they most likely do not care if it works)
And now, how to overcome most of the above problems , for, unfortunately, with the release of Windows 7, so beloved by many, Microsoft did not suit us with any revolution in terms of sound.
1. As I wrote above, most applications for outputting sound in Windows 7 (whether they want it or not) use the WASAPI Shared mode. But there is another mode - WASAPI Exclusive. If you are guided by a block diagram, then everything that lies between the Application Programming Interface and Kernel Streaming Transport is discarded in this mode - roughly speaking, the sound goes directly from the application through the WASAPI interface to the sound card.
But a remark must be made : since the WASAPI mixer is disabled in this mode, and there is still no access to the sound card mixer (because there is no DirectSound), when the application uses the exclusive mode, playing any other source through WASAPI becomes impossible.
But, one way or another, we get bit-by-bit audio output to the sound card.
2. There is another way. If your sound card has a native ASIO driver, you are very lucky. ASIO functions completely separately from WASAPI, so that when listening to music, system sounds will not be muted - the ASIO and WASAPI streams will be mixed by the sound card itself.
Conclusion: if your ASIO driver is not in doubt, use it.
Yes, I almost forgot - ASIO4ALL is undesirable to use - like Kernel Streaming, it is very unstable in this OS (apparently, due to the fact that other sounds coming through WASAPI periodically block Kernel Transport).
Now directly to the point .
Of course, for listening to music I recommend foobar2000with ASIO Output or WASAPI output support plugin - I can’t vouch for anything else. Detailed settings for sound output via foobar2000 are described here .
Lovers AIMP I disappoint - WASAPI Exclusive is not expected even in AIMP3 beta (only the Shared), and ASIO in it until that very lame (not able to put the right amount of output channels, which leads to bad results). Winamp
users can offer ASIO output Plugin plugins or even this: OpenAL Output - by the way, is another way to bypass WASAPI (seen from the block diagram).
With video players, the situation is almost the same. We need to output the sound to the card in its original form. This is especially important if you want to convert multi-channel audio to stereo using hardware effects like CMSS-3D in Creative X-Fi (surround sound in headphones or stereo speakers). To do this, the sound must arrive on the sound card in a multi-channel form. But the trouble is: WASAPI in general mode converts channels to the number specified in the Windows settings. But even if you specify, say 5.1, there, this parameter is synchronized with the settings of the sound card driver, and the DSP will not convert the sound, since the input signal corresponds to the number of channels settings. Those. here the principle is as follows:
And so, here again we need WASAPI Exclusive. I would recommend using Media Player Classic HomeCinema in conjunction with DirectShow ReClock filter (only for 32-bit MPC), which, among other things, can output sound to WASAPI Exclusive.
Yes, the introduction of a new sound subsystem undoubtedly caused indignation among many gamers, including happy owners of high-tech sound cards from Creative.
And so, for those who, perhaps, are not yet in the know: the solution is found - OpenAL. This library has access to everything related to the hardware effects of three-dimensional positioning of sound sources, and so on. Environmental Audio Extension - up to version 5.0.
In addition, that advanced developers of games such as STALKER: Call of Pripyat built their game engines on OpenAL, for other games designed for DirectSound, two programs have been developed that convert DirectSound calls to OpenAL:
And so, here it seems that we have everything that we lacked right after the transition from Windows XP to Windows 7. Of course, not without unnecessary trouble, but what to do - these are the tasks Microsoft gave us.
Thank you for attention.
In fact, everything is not as bad as it seems at first, and I will demonstrate it to you now.
I'll start over.
About sound subsystems
Windows XP
Here the scheme of the sound subsystem is approximately the following:

In this case, through the DirectSound interface, the software had direct access to the hardware resources of the sound card - mixing, conversion of the sampling frequency, various effects (including 3D positioning) - in general, all that was needed, like for music / movies and games.
Of course, there were problems, in particular with the Windows mixer (inaccurate volume control, forced low-quality oversampling of everything up to 48 kHz), but they were quite easily dispensed with Kernel Streaming (the same stream going past kmixer), and sometimes even using good drivers (for Creative, for example, these only appear in the X-Fi line. On Audigy audio cards, the mixer does not behave quite adequately, but, if desired, it is not difficult to deal with this).
Vista Seven
And so, our sound enthusiasts lived, they did not know grief, but then a new OS from Microsoft arrived, which of course had to contain dramatic changes (and it doesn’t matter which way).
Thus, as part of a new concept of hardware abstraction , Windows Vista, among other things, received a completely redesigned audio input / output subsystem. And of course, it was not processed in the best way.
Here's what it took this time:

API - Application Programming Interface
APO - Audio Processing Object
CPT - Cross Process Transport
KST - Kernel Streaming Transport
Now I will explain. The bottom line is this: all programs that are sharpened for output to DirectSound and do not know anything about the new interface are connected to WASAPI in general mode (WASAPI Shared), then the following happens: The
components of WASAPI (using only the resources of the central processor) perform all the necessary (and not very) conversion:
- Bringing sound streams from different applications to one form (specified in the Windows settings) - i.e. to one number of channels, sampling rate, quantization depth.
- Mixing streams.
Plus, you need to add the ability to overlay in the process of processing software effects (the algorithms of which are embedded in the drivers of the sound card). For example, for Creative X-Fi sound cards there is a miserable emulation of the CMSS-3D effect.
The quality of all these processors, of course, is not the highest.
Then all this is sent via Kernel Transport to the sound card.
Now let's try to objectively evaluate the advantages and disadvantages of the new system:
+ basic processing capabilities for sound cards that do not know how to process sound “on their own”
+ input support for almost any audio format - multichannel audio with a sampling frequency of up to 192 kHz and a quantization depth of up to 32-bit float
+ increased stability (controversial statement, in principle)
- forced resampling of dubious quality
- mixing channels without environmental effects (or they are very primitive)
- narrowing the dynamic range (especially in 16-bit mode)
- lack of access to hardware DSP, i.e. loss of all its functionality, including EAX effects in games (including on cards where EAX was emulated programmatically, since WASAPI doesn’t even have such a concept)
- clicks, wheezing and other consequences associated with the use of CPU resources.
As you can see, computer music lovers-audiophiles (I hope no one will be offended) and gamers are most unlucky.
People who are not particularly interested in what happens with the sound on the way to the sound card may even get a certain improvement (although, again, they most likely do not care if it works)
And now, how to overcome most of the above problems , for, unfortunately, with the release of Windows 7, so beloved by many, Microsoft did not suit us with any revolution in terms of sound.
Music fans: accurate sound output
1. As I wrote above, most applications for outputting sound in Windows 7 (whether they want it or not) use the WASAPI Shared mode. But there is another mode - WASAPI Exclusive. If you are guided by a block diagram, then everything that lies between the Application Programming Interface and Kernel Streaming Transport is discarded in this mode - roughly speaking, the sound goes directly from the application through the WASAPI interface to the sound card.
But a remark must be made : since the WASAPI mixer is disabled in this mode, and there is still no access to the sound card mixer (because there is no DirectSound), when the application uses the exclusive mode, playing any other source through WASAPI becomes impossible.
But, one way or another, we get bit-by-bit audio output to the sound card.
2. There is another way. If your sound card has a native ASIO driver, you are very lucky. ASIO functions completely separately from WASAPI, so that when listening to music, system sounds will not be muted - the ASIO and WASAPI streams will be mixed by the sound card itself.
Conclusion: if your ASIO driver is not in doubt, use it.
Yes, I almost forgot - ASIO4ALL is undesirable to use - like Kernel Streaming, it is very unstable in this OS (apparently, due to the fact that other sounds coming through WASAPI periodically block Kernel Transport).
Now directly to the point .
Of course, for listening to music I recommend foobar2000with ASIO Output or WASAPI output support plugin - I can’t vouch for anything else. Detailed settings for sound output via foobar2000 are described here .
Lovers AIMP I disappoint - WASAPI Exclusive is not expected even in AIMP3 beta (only the Shared), and ASIO in it until that very lame (not able to put the right amount of output channels, which leads to bad results). Winamp
users can offer ASIO output Plugin plugins or even this: OpenAL Output - by the way, is another way to bypass WASAPI (seen from the block diagram).
For moviegoers: about video players
With video players, the situation is almost the same. We need to output the sound to the card in its original form. This is especially important if you want to convert multi-channel audio to stereo using hardware effects like CMSS-3D in Creative X-Fi (surround sound in headphones or stereo speakers). To do this, the sound must arrive on the sound card in a multi-channel form. But the trouble is: WASAPI in general mode converts channels to the number specified in the Windows settings. But even if you specify, say 5.1, there, this parameter is synchronized with the settings of the sound card driver, and the DSP will not convert the sound, since the input signal corresponds to the number of channels settings. Those. here the principle is as follows:
And so, here again we need WASAPI Exclusive. I would recommend using Media Player Classic HomeCinema in conjunction with DirectShow ReClock filter (only for 32-bit MPC), which, among other things, can output sound to WASAPI Exclusive.
Gamers: 3D Positioning, EAX
Yes, the introduction of a new sound subsystem undoubtedly caused indignation among many gamers, including happy owners of high-tech sound cards from Creative.
And so, for those who, perhaps, are not yet in the know: the solution is found - OpenAL. This library has access to everything related to the hardware effects of three-dimensional positioning of sound sources, and so on. Environmental Audio Extension - up to version 5.0.
In addition, that advanced developers of games such as STALKER: Call of Pripyat built their game engines on OpenAL, for other games designed for DirectSound, two programs have been developed that convert DirectSound calls to OpenAL:
- Creative ALchemy (the latter at the time of this writing, version) for the card Audigy and X-Fi from Creative
- and even 3D SoundBack for Realtek HDA cards , which, incidentally, support EAX 2.0 (albeit programmatically)
conclusions
And so, here it seems that we have everything that we lacked right after the transition from Windows XP to Windows 7. Of course, not without unnecessary trouble, but what to do - these are the tasks Microsoft gave us.
Thank you for attention.