driver protocol called "ASIO" which can dramatically reduce sound latencies. If you don't feel like reading the whole article, scroll down to the bottom, I summed everything up for you :)
It's been a long time since I discovered the "_snd_mixahead" command in CS 1.6 and began recommending to my friends that they add "_snd_mixahead .05" to their autoexec.cfg. In 1.6 _snd_mixahead has a default value of .1 which means 100ms. So with the default value of .1, the playback of *all* sounds is delayed by 100ms! Setting _snd_mixahead to .05 reduces that delay to 50ms. Just about all sound cards can handle .05 without any problems, but go any lower and you'll quickly run into sound crackling and past a certain point all sounds will be delayed by a huge amount like 1 full second. So .05 seems to be the way to go.
In CS:GO we've got a similar command "snd_mixahead" with the same default value of .1 or 100ms. Again I recommend setting snd_mixahead to .05 in your autoexec. Any lower and you might get crackling or really delayed sound playback.
So with snd_mixahead .05 we're able to get our sound latency down from 100ms to 50ms. Not bad, but is there a way to get lower than 50ms? Shouldn't there be a way to get down to 0ms or something very close to that?
So in comes "ASIO" (Audio Stream Input/Output). ASIO is a sound card driver protocol that provides a low latency high fidelity interface between software applications and sound card hardware.
I learned about ASIO when I was plugging my guitar into my sound card for the purpose of recording. By default, audio recording is done with Microsoft's "DirectSound", and by default there is a significant playback delay, just like the 100ms delay in CS. I found that I could tweak the DirectSound buffering settings to bring the delay down, but I could still only achieve maybe 35-65ms.
Even at 30 or 35ms, trying to play my guitar through my sound card was a terrible experience. I strum a note and some time later I hear the note I played. This was a major roadblock to playing my guitar through my sound card. I needed much lower latency than DirectSound could give me.
So I discovered "ASIO" (Audio Stream Input/Output - http://en.wikipedia.org/wiki/Audio_Stream_Input/Output)
With ASIO I was quickly able to achieve *2ms* latency which was nearly perfect for playing guitar. Whereas 30ms produced a noticeable delay between strumming a note and hearing the sound, a 2ms delay was virtually unnoticeable!
From Wikipedia: "ASIO bypasses the normal audio path from a user application through layers of intermediary Windows operating system software so that an application connects directly to the sound card hardware. Each layer that is bypassed means a reduction in latency (the delay between an application sending audio information and it being reproduced by the sound card, or input signals from the sound card being available to the application)"
The only trouble is that ASIO must be supported directly by a program that wishes to reap the benefits of ASIO. In my case my guitar recording application (GuitarRig) does support ASIO and so I was able to achieve very low latencies. In the case of Counterstrike however there is presently no support for ASIO and so we're stuck with DirectSound.
Neither CS 1.6, CS:S, or CS:GO has ASIO support, but now that we know about the benefits of ASIO, it seems like a no-brainer that CS should support ASIO.
If CS supported ASIO, we could set snd_mixahead to ~.002! and all of the sounds we hear in the game would play back virtually instantly, with only a ~2ms delay, instead of the 100ms delay we're accustomed to!
ASIO support in CS would also mean that we could greatly reduce the latency of our microphone input, so when we talk on the mic the sound is captured and transmitted almost instantly, with only a ~2ms delay.
So the question is how do we effectively communicate to Valve that we want ASIO support in CS:GO, and then how do we motivate the guys at Valve to actually implement ASIO support in CS:GO?
First of all I think we can all agree that ASIO support in CS would be great. Because audio is so fundamental to the game, a dramatic improvement in audio latency would really mean a dramatic improvement in gameplay at a fundamental level.
So Valve, nod your head with us that dramatically reducing audio latencies using ASIO would be awesome for the game, especially for competitive play where every millisecond counts!
Next, I have yet to find a game that implements ASIO, and so Valve that should be another motivator for you guys! CS:GO could be the first game to implement ASIO!
Next, implementing ASIO shouldn't be very difficult. First you need to create an account on the Steinberg site (http://www.steinberg.net/en/company/developer.html) and download the ASIO SDK. Here is an example of how to implement ASIO in .NET (http://www.codeproject.com/Articles/24536/Low-Latency-Audio-using-ASIO-Drivers-in-NET)
Next, ASIO is very well supported on the vast majority of sound cards, and there is even a program called ASIO4ALL (http://www.asio4all.com/) which is an independent driver for Windows that brings ASIO support to just about all consumer-grade sound cards and integrated audio chipsets.
Finally, Counterstrike is a highly competitive game and latency has always been the enemy of all CS players. We've always been so focused on graphics latency and network latency and we really overlook or neglect sound latency. ASIO presents itself as a clear opportunity to make a dramatic improvement in sound latency, and so now that we know what we can do with ASIO, now that we know we can go from 100ms latencies to ~2ms latencies, it's our job now to buckle down and implement ASIO into CS:GO, or rather it's your job, Valve!
I know that Valve has worked much more closely with the competitive community on CS:GO, and I know that Valve is still very interested in working on and improving the game. Unfortunately I don't have a direct line of communication to any of the guys at Valve, but my hope is that by posting this article here on hltv.org someone who knows someone might read it and pass it along until it reaches someone at Valve.
So that's it! ASIO = dramatically reduced sound latency from 100ms to ~2ms! Get to it Valve!
Here's a quick recap of what we've gathered so far
(tldr for those that didn't feel like reading the whole article)
1)CS 1.6, CS:S, and CS:GO have an snd_mixahead which defaults to .1 or 100ms - which means by default *all sounds* are played back with a 100ms delay.
2)We can tweak the value of snd_mixahead to reduce the sound playback latency. A value of .05 works on just about all sound cards and means 50ms latency instead of the default 100ms.
3)ASIO allows an application to communicate directly with the soundcard to achieve very low latencies for both sound output and sound input. Latencies around ~2ms are achievable.
4)A program must directly support ASIO, and presently neither CS 1.6, CS:S, or CS:GO does.
5)ASIO support could be implemented into CS and would provide a dramatic improvement in audio latency, both for output sound (gunfire, footsteps, etc.) and for input sound (microphone).