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:

  1. 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.
  2. 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.
  3. 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 office

  • Anonymous
    September 19, 2005
    The comment has been removed

  • Anonymous
    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,
    Mark

  • Anonymous
    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 removed

  • Anonymous
    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.com

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

    steamy

  • Anonymous
    September 19, 2005
    The comment has been removed

  • Anonymous
    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.

    grrrrrrrrrr

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

  • Anonymous
    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,
    Raptor

  • Anonymous
    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.

    Raptor

  • Anonymous
    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.

    David

  • Anonymous
    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
    Roland

  • Anonymous
    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 removed

  • Anonymous
    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 Gerasika

  • Anonymous
    September 01, 2006
    The comment has been removed

  • Anonymous
    September 17, 2006
    Dans le monde de l'enregistrement audio numérique, la latence correspond au temps d’attente

  • Anonymous
    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.aspx

  • Anonymous
    July 11, 2007
    PingBack from http://www.itwriting.com/blog/?p=272

  • Anonymous
    August 20, 2007
    PingBack from http://blogs.zdnet.com/Bott/?p=288

  • Anonymous
    September 20, 2007
    PingBack from http://blogs.zdnet.com/Bott/?p=309

  • Anonymous
    December 12, 2007
    PingBack from http://www.itwriting.com/blog/?p=450

  • Anonymous
    December 25, 2007
    PingBack from http://forums.techarp.com/general-hardware/23542-why-vista-sounds-better-than-xp-spdif-out.html#post320000

  • Anonymous
    March 03, 2008
    PingBack from http://www.driverheaven.net/flame-warzone/155482-constant-people-crying-about-vista-please-f-off.html#post1129442

  • Anonymous
    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=5

  • Anonymous
    December 31, 2008
    PingBack from http://www.hardwarecanucks.com/forum/o-ss/13325-windows-7-beta-6.html#post133167

  • Anonymous
    January 22, 2009
    PingBack from http://www.hilpers.pl/436547-lphant/2

  • Anonymous
    May 31, 2009
    PingBack from http://outdoorceilingfansite.info/story.php?id=17791

  • Anonymous
    June 17, 2009
    PingBack from http://patiosetsite.info/story.php?id=590