What's up with Audio in Windows Vista?
Steve Ball (the GPM for the MediaTech group (of which Windows Audio is a part)) discussed some of these changes in the Windows Audio Channel 9 video, but I'd like to spend a bit more time talking about what we've done.
A lot of what I'm discussing is on the video, but what the heck - I've got a blog, and I need to have some content to fill in the white space, so...
The Windows audio system debuted in Windows 3.1 with the "Multimedia Extensions for Windows", or MME APIs. Originally, only one application at a time could play audio, that was because the original infrastructure didn't have support for tracking or mixing audio streams (this is also why the old audio apps like sndrec32 pop up an error indicating that another device is using the audio hardware when they encounter any error).
When Windows 95 (and NT 3.1) came out, the MME APIs were stretched to 32 bits, but the basic infrastructure didn't change - only one application could play audio at one time.
For Windows 98, we deployed an entirely new audio architecture, based on the Windows Driver Model, or WDM. As a part of that architectural change, we added the ability to mix audio streams - finally you could have multiple applications rendering audio at the same time.
There have been numerous changes to the audio stack over the years, but the core audio architecture has remained the same until Vista.
Over the years, we've realized that there three major problem areas with the existing audio infrastructure:
- The amount of code that runs in the kernel (coupled with buggy device drivers) causes the audio stack to be one of the leading causes of Windows reliability problems.
- It's also become clear that while the audio quality in Windows is just fine for normal users, pro-audio enthusiasts are less than happy with the native audio infrastructure. We've made a bunch of changes to the infrastructure to support pro-audio apps, but those were mostly focused around providing mechanisms for those apps to bypass the audio infrastructure.
- We've also come to realize that the tools for troubleshootingaudio problems aren't the greatest - it's just too hard to figure out what's going on, and the UI (much of which comes from Windows 3.1) is flat-out too old to be useful.
Back in 2002, we decided to make a big bet on Audio for Vista and we committed to fixing all three of the problems listed above.
The first (and biggest) change we made was to move the entire audio stack out of the kernel and into user mode. Pre-Vista, the audio stack lived in a bunch of different kernel mode device drivers, including sysaudio.sys, kmixer.sys, wdmaud.sys, redbook.sys, etc. In Vista and beyond, the only kernel mode drivers for audio are the actual audio drivers (and portcls.sys, the high level audio port driver).
The second major change we made was a totally revamped UI for audio. Sndvol32 and mmsys.cpl were completely rewritten (from scratch) to include new, higher quality visuals, and to focus on the common tasks that users actually need to do. All the old functionality is still there, but for the most part, it's been buried deep below the UI.
The infrastructure items I mentioned above are present in Vista Beta1, unfortunately the UI improvements won't be seen by non Microsoft people until Vista Beta2.
Comments
Anonymous
September 19, 2005
Larry,
Thanks for the sharing the info, good one. I will update my blog later with this info.
I found an interesting issue with Real Player on the BETA1 of vista. Here is what happens:
Lets say I am playing 2-3 songs in the real player, and during the song play, even when I reduce the volume by clicking on the volumn button from the taskbar, and when the player goes to next song, the volumn goes back to default one, which it picks during the load.
I dont see this issue in 2003 or XP, but only happens on Vista.
Any idea ? or any way I can tweak this ? I have a video captured for this, and will post this later once am back to home from officeAnonymous
September 19, 2005
The comment has been removedAnonymous
September 19, 2005
Larry,
On the "pro audio"-side, are there any changes that make it "easier" for applications to bypass things like kmixer and achieve real bit-perfect digital output of digital content?
Presently, there are workarounds required - ASIO, kernel streaming, etc.
Thanks,
MarkAnonymous
September 19, 2005
Mark, I'll be talking about the changes for pro audio in a bit.Anonymous
September 19, 2005
Thanks for explaining this with all of us. My girlfriend is really going to like the possibility to turn down all those noisy Windows Sound, still being able to listen to Music. I hope the technology will make soon make it in a CTP build, unfortnatly it’s missing / turned of in 5219.
It’s also great to discover these days, trough Blogs and channel9 video’s that Microsoft is very ambitious about Vista.Anonymous
September 19, 2005
"UI improvements won't be seen by non Microsoft people until Vista Beta2"...
But you could post some screen shots in your blog, I assume :) :) :)Anonymous
September 19, 2005
The comment has been removedAnonymous
September 19, 2005
I invite you to check out http://www.opensound.com/virtmix.html - Open Sound System (OSS) for UNIX (& Linux) does per-application volume control, per-application vu-metering and ossxmix and /dev/sndstat shows what app is running on which channel. We had these features this back in 2001 :) -
On top of it we have an RIAA-curve equalizer (yes the very same evil RIAA did some interesting research back in the 60s and 70s), fidelity enhance (similar to SRS-WoW) and stereo image enhance. I don't know Vista doesn't give you a system wide equalizer.
BTW, 4Front isn't just a UNIX shop, we do Windows and Mac OSX plugins as well (www.oss3d.com) - hope to exchange ideas with you guys sometime - glad to actually see who the Windows audio guys are!.
I got to say Vista is looking pretty impressive . Good work!
Regards
Dev Mazumdar
4Front Technologies
dev@opensound.comAnonymous
September 19, 2005
Larry,
all this is sooo welcomed, i'm a pro-audio guy, and i was looking for info on Vista audio for years, no one answered my questions. Maybe you will:-)
As i'm reading that you are going to post more info relating these things, the only question of mine is: are there going to be anything like ASIO built in windows? low latency (ultra-low) input-output stuff?
Only one more...i'm REALLY REALLY curious: are there ANY changes to MIDI???? for example better MIDI timing?
thank you guys for your work in this department, windows needed these changes so much!!!
steamyAnonymous
September 19, 2005
The comment has been removedAnonymous
September 19, 2005
Did it occur to anyone at Microsoft that the reason that audio/streaming drivers are so buggy is the complete lack of usable documentation? The audio/streaming documentation in the DDK is without peer in terms of how poor it is. A little bit of effort put into the documentation could have radically cut down on the number of buggy device drivers.Anonymous
September 19, 2005
Don't get me started on the dual CPU/audio crash problems.
MS has received MANY crash reports from my machine for that problem.
grrrrrrrrrrAnonymous
September 19, 2005
Thanks for explaining this with all of us. My girlfriend is really going to like the possibility to turn down all those noisy Windows Sound, still being able to listen to Music. I hope the technology will make soon make it in a CTP build, unfortnatly it’s missing / turned of in 5219.
It’s also great to discover these days, trough Blogs and channel9 video’s that Microsoft is very ambitious about Vista.Anonymous
September 19, 2005
elpiojo, most of the audio infrastructure is there, but the UI that makes it all work isn't :(
It's in the mainline Windows depot currently, so...
Steamy, we're not doing a lot with MIDI in Vista, unfortunately :(
And I'll talk a bit about the low latency stuff later on.Anonymous
September 19, 2005
Just curious, if you rewrote some of your stuff from scratch did you code any of it managed? What are the guidelines (if any) when working within the operating system with regards to using the framework?
Regards
LeeAnonymous
September 19, 2005
Oh, the OSS for Linux is already replaced by the ALSA system.Anonymous
September 20, 2005
Larry,
You said that in pre-Vista versions there are many parts of the audio subsystem still on the Kernel.
However, since XP the MS introduced a new service called Windows Audio. I though it was part of the attempt to move audio core out of the kernel. But as you say it is not. How does this service fits in the current and upcoming audio model?
Thanx in advance,
RaptorAnonymous
September 20, 2005
Larry,
What does the Windows Audio service introduced in XP? I though it purpose was to take audio core code out of kernel.
RaptorAnonymous
September 20, 2005
Does emptying the recycle bin still trigger the computer's motherboard speaker to "beep" if the sound scheme is set to No Sounds? ;-)
I find that very annoying.
If the sound for "Empty Recycle Bin" is set to "None", the built-in motherboard speaker beeps on emptying the recycle bin. If it is set to something else, the attached speakers play the sound. None seems to be "not an option". AFAIK, emptying the recycle bin is the only event that triggers this beep.
Frustrating. I disabled the system device called "beep" on two of my systems, XP Pro and Windows 2000, out of frustration for this long-standing Windows bug! Windows Server 2000 has the same problem.
DavidAnonymous
September 20, 2005
Great news! Thanks for the info, Larry!
And I'm especially happy that many parts of the audio subsystem have moved to USER, because just last week, I had a blue screen in kmixer.sys (brand new DELL computer with Soundblaster Audigy 2). I'm sure this would no longer have occurred in Vista.
Regards
RolandAnonymous
September 20, 2005
Raptor, the Windows Audio service in XP essentially just manages PnP notifications for winmm.dll to allow apps to use winmm without bringing in setupapi.dll.
It does some more than that (related to management of audio global effects), but that's essentially all it does.
David, that's interesting - let me see if it happens.Anonymous
September 22, 2005
If Windows Vista is serious about pro audio, I suggest that you check out the community at http://www.kvraudio.com/ and enlist their expertise.
Also, comparisons will inevitably be made to Mac OSX and things like 'Core Audio', 'MIDI Network driver', 'Audio Units' etc. See http://www.apple.com/macosx/features/coreaudio/Anonymous
September 23, 2005
The comment has been removedAnonymous
September 23, 2005
Patriot, it's a matter of trade-offs. Video was moved to the kernel primarily because User had to do SO many cross-process operations - it's constantly sending messages from one process to another, moving it to the kernel allows a significant improvement in efficiency.
For Audio, back in 1997, we couldn't do mixing of audio streams without being in the kernel, in 2002, the story is quite different.
I suspect that the hit will be less than most people expect.
http.sys was moved to the kernel for a number of reasons - performance was one of them, but having a single HTTP parsing and rendering engine is another huge part of the equation.Anonymous
October 15, 2005
I hope Windows Media Player 11 can play 24 bit audio files. It's long overdue. I'm tired of using Winamp just to playback my DVD-Audio mixdowns.Anonymous
November 29, 2005
Guys,
check out http://www.indievolume.com/ - Windows desktop enchacement, having all functionality Vista is about to have and even more - it allows selection of per-application FX effects, and per-application selection of playback audio devices.
Thanks,
Andriy GerasikaAnonymous
September 01, 2006
The comment has been removedAnonymous
September 17, 2006
Dans le monde de l'enregistrement audio numérique, la latence correspond au temps d’attenteAnonymous
September 29, 2006
PingBack from http://beta.amanzi.co.nz/2006/09/30/vista-feature-focus-volume-mixer/Anonymous
December 29, 2006
PingBack from http://www.pdsys.org/blog/2006/12/30/AudioInVistaBetterForConsumersLessSoForSoundcardCompanies.aspxAnonymous
July 11, 2007
PingBack from http://www.itwriting.com/blog/?p=272Anonymous
August 20, 2007
PingBack from http://blogs.zdnet.com/Bott/?p=288Anonymous
September 20, 2007
PingBack from http://blogs.zdnet.com/Bott/?p=309Anonymous
December 12, 2007
PingBack from http://www.itwriting.com/blog/?p=450Anonymous
December 25, 2007
PingBack from http://forums.techarp.com/general-hardware/23542-why-vista-sounds-better-than-xp-spdif-out.html#post320000Anonymous
March 03, 2008
PingBack from http://www.driverheaven.net/flame-warzone/155482-constant-people-crying-about-vista-please-f-off.html#post1129442Anonymous
April 15, 2008
PingBack from http://www.freakified.net/news/why-linux-will-never-succeed-on-the-desktop/Anonymous
May 06, 2008
PingBack from http://jaew00k.net/blog/?p=5Anonymous
December 31, 2008
PingBack from http://www.hardwarecanucks.com/forum/o-ss/13325-windows-7-beta-6.html#post133167Anonymous
January 22, 2009
PingBack from http://www.hilpers.pl/436547-lphant/2Anonymous
May 31, 2009
PingBack from http://outdoorceilingfansite.info/story.php?id=17791Anonymous
June 17, 2009
PingBack from http://patiosetsite.info/story.php?id=590