Larry Osterman's WebLog

Confessions of an Old Fogey
Blog - Title

What's up with Audio in Windows Vista?

What's up with Audio in Windows Vista?

  • Comments 43

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.

  • Oh, the OSS for Linux is already replaced by the ALSA system.
  • 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
  • Larry,

    What does the Windows Audio service introduced in XP? I though it purpose was to take audio core code out of kernel.

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

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

  • Moving from kernel mode to user mode is quite a big change. One poster already mentioned how MS moved the video stack (back in NT 4) from user mode to kernel mode, to improve performance. I assume moving audio out of the kernel will have a small performance hit, but that it probably isn't much for today's computers.

    Interesting to see components moving out of the kernel, while at the same time, things are still moving into it (e.g. http.sys for IIS).
  • 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.
  • 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.
  • 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
  • PingBack from http://melodiefabriek.nl/2006/09/01/a-stripped-xp-not-vista/
  • Dans le monde de l'enregistrement audio numérique, la latence correspond au temps d’attente
  • PingBack from http://beta.amanzi.co.nz/2006/09/30/vista-feature-focus-volume-mixer/
Page 2 of 3 (43 items) 123