Whatever happened to Wave Out Mix?

The Intertubes are all atwitter with reports that  Dell and other OEMs colluded with the RIAA to disable the Wave Out Mix option on new laptops.

Wow, what a tempest in a teapot.  I just LOVE watching conspiracy theories as the echo chamber does it’s magic.


And of course it’s almost certainly hogwash (I don’t know for sure, but I do know that some of the rumors are totally stupid).

First off, what is Wave Out Mix?  It’s an option that some audio manufacturers added to their audio hardware (Creative calls it “What U Hear”).  Typically the Wave Out Mix is implemented by connecting the analog output from the DAC (Digital-to-Audio Converter) to a specific input on the ADC (Analog-to-Digital Converter) which is labeled as “Wave Out Mix”.

If you record on the Wave Out Mix input, you will capture the samples that are being played via Wave Out.


In Windows Vista, by default we only enable microphone, line in and digital inputs to the audio hardware (the theory being that users typically only want to be able to listen to those inputs).  If the audio solution offers other inputs, they’re still there but we bury them somewhat. 

You can find those additional inputs in mmsys if you start the sound control panel and go to the “Recording” tab.  If you right click and select “Show Disabled Devices” you can enable those alternate inputs.

In addition, these days many OEMs don’t bother adding the Wave Out Mix support.  It costs slightly more to order chips with Wave Out Mix support than it does to order chips without the functionality, and OEMs are incredibly cost conscious.  The other reason is that for those OEMs that implemented the Wave Out Mix with an analog tap, you can achieve almost the same results with a $2.50 analog cable run between the output and the line in input of the machine.


Part of the reason that I know that this is just a conspiracy theory running rampant is that Windows Vista built the support for the Wave Out Mix input directly into the operating system.  If you pass the AUDCLNT_STREAMFLAGS_LOOPBACK flag to the IAudioClient::Initialize method, then the audio system will initialize the engine in loopback mode.  You can start capturing data off that IAudioClient object and you’ll get the post-mix output for the endpoint. 

The loopback support was designed primarily for use by AEC functionality (which needs to be able to know what samples are being played), but it also allows you to perform essentially the same functionality as the Wave Out Mix hardware used to do.

If you want to play with the loopback functionality, the WinAudio SDK sample application allows you to capture using the loopback functionality.

Comments (18)

  1. Anonymous says:

    I had to look it up: AEC => Acoustic Echo Cancellation

  2. Anonymous says:

    Does WindowsXP have built in support for Wave Out Mix like Vista does?  

  3. Anonymous says:

    "It costs slightly more to order chips with Wave Out Mix support than it does to order chips without the functionality, and OEMs are incredibly cost conscious."

    That’s all well and good, but it doesn’t explain why "upgrading" the driver on my existing Dell audio *removed* the Wave Out Mix slider. I had to dig for an old version of the driver to re-enable it. It certainly cost the driver manufacturer to release a new driver that removed this support. So why bother?

  4. Rafael, no, that’s a vista feature.

    daves561: I described why it was hidden in the article.  In Vista, you can render to and capture from things called "endpoints" which roughly correspond to the input and output jacks on the PC.  

    In Vista we create endpoints for internal connections like Wave Out Mix and CD Input, but we mark them as disabled.  We did this because our research showed that their presence dramatically increased user confusion when asked to perform tasks like selecting an input device.

  5. Anonymous says:

    Just wanted to say I Love your blog, especially your "nifty tricks" stuff.

  6. Anonymous says:

    I dont believe it… its a conspiracy… you’re one of "them" !!!!

    Just kidding.  Great article.  Well done for countering uninformed FUD with a concise technical article.


  7. Anonymous says:


    My computer has a Sound Blaster Audigy card. I have a boot menu that allows me to boot XP 32-bit, XP 64-bit, Vista 32-bit or Vista 64-bit.

    I can record from "What-U-Hear" without issue with either version of Windows XP.But if I enable "What-U-Hear" in either version of Vista, I can only record from line-in, cd or mic. So either Creative has disabled this in their driver or Microsoft has.

    I also have on-board sound Realtek AC97 audio chip. I can record all I want from Wave Out on either version of XP with Realtek’s driver. Vista installed a High-Definition Audio Device driver for this chipset. There is absolutely no way to record from Wave Out with this driver!

    So while I would like to believe that there has been collusion between Microsoft and the recording industry, personal experience tells me otherwise. On the exact same hardware, the exact same computer, Windows XP works, Vista won’t.

  8. Anonymous says:

    From http://msdn.microsoft.com/en-us/library/aa363088(VS.85).aspx


    The audio stream will operate in loopback mode. For more information, see ."

    For more information i should see…what exactly? The SDK docs have been censored? Microsoft and RIAA together?

    The conspiracy is deeper than we thought!

  9. Herb: You’re going to have to talk to Creative about this.  Their driver defines how the What-U-Hear feature works.

    The HDAudio driver will never work with an AC’97 audio solution (they’re different technologies), if you’ve got the Microsoft HDAudio solution on your machine, you’ve got an HDAudio device not an AC’97 device.  To get the Wave Out functionality, you need to contact your OEM or Realtek to get a driver for their hardware.  The inbox driver doesn’t support this functionality.

  10. Anonymous says:

    Thanks for your comments. I’m done talking to Creative. It took them over 6 years to write a driver that would work with two processors. And they were the last vendor to release a needed driver for Vista when I installed it at RTM. I’m shopping for a new solution…

    You were totally correct that I have a Realtek HDAudio device in my computer. And it doesn’t support Wave Out recording in XP either. I have a backup computer that does have an AC97 device and it does support recording from Wave Out.

  11. Herb: Sorry about that.  As I said in the post, a lot of audio manufacturers are pulling this support for a number of reasons, the primary one being cost.

  12. Anonymous says:

    Intertubes…LMAO!!!  I like that.

  13. Anonymous says:

    And people wonder why they say Macs are more user friendly for recording/video. It absolutely kills me that I have a $4k computer and I can’t simply record the audio from a streaming youtube video.

  14. Anonymous says:

    Not to derail these excellent comments or anything, but I have a question…

    Is there any way to determine the component type of a device under Vista?  In the mixerXXX api we could query for MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE if we wanted a Microphone for instance.  How would you find out if the default endpoint was indeed a Microphone using the MMDevice API under Vista?

  15. Joshua: Check out http://msdn.microsoft.com/en-us/library/ms679150(VS.85).aspx – PKEY_AudioEndpoint_FormFactor.  That’s what we use when calculating the mixer API values, it’s has a slightly finer granularity of values than the mixer API has.

  16. Anonymous says:

    Wow, Larry, thanks for the fast response!  One more question: is it possible for an application to change the default input audio endpoint?  I basically have a voice application and I want it to warn if you have something other than a microphone selected as the default input endpoint and offer a little ‘fix’ button that, when clicked, changes the default input endpoint to their microphone.  This works fine under XP with the mixerXxx functions, but I haven’t found a way to make it work with Vista.

    We offer a dropdown box to allow the user to select which device they want to use for input, however, it’s part of a closed-source third-party library and doesn’t seem to cope well with Vista.  Therefore, I’m going to lock it to using the default endpoint and ideally have a way to change the default endpoint.

  17. Joshua, unfortunately we don’t have a way for 3rd parties to change the default audio device, that functionality is a user choice, not an application choice.  As Raymond Chen says: "What if two applications wanted to do that?".

    Do you have a way of asking the 3rd party vendor to allow their clients to set the input device?

    You can launch mmsys.cpl with "control mmsys.cpl,,2" to let the set the default device (it’s not a great solution but it’s a solution).

Skip to main content