In Windows XP I could, for instance, play music on my speakers then have a game play on my headset via this clunky method:

  1. Set default sound output to speakers
  2. Run music player
  3. Set default sound output to headset
  4. Run game

A 'feature' of XP's audio workings was that once a program launched and grabbed some audio output, it would always use that if it was multi-output naive (most programs), while some others (e.g. Skype) could list and pick particular devices. However, in Windows 7, whenever the default output changes, every program using 'default device' dynamically changes via stream switching.

My rationale for this is that it allows me to easily change the volume of my music with the speaker knob on my desk while playing a full-screen game. If iTunes or Zune Media Player can capture keys or whatever to control volume (I don't care if ABC Media Player can), that would be helpful to know as well.


I don't understand why people think Virtual Audio Cable will help to solve this problem. As far as I can see, it has no way of capturing output from a specific application and routing it to a given output device. It can make a new virtual output device and then that output can be routed to any input device, so that e.g. you could set a VAC as the default output and then direct that to the input of a recording program, but you can NOT (as far as I can tell after an hour of reading the docs) tell it to route the output from iTunes to your speakers and from Halo to your headset. Where is that idea coming from? Am I missing something in the docs?

Windows Media player does allow one to set the playback device separate from the default playback device... Organize, Options, Devices, Speakers (double click, or select and Properties), then Select the audio device. If you set it to Default Audio Device, it will track your default setting in windows. To use another device, just select that device.

So, using that setup, you can set your Windows Media Player to play music or a movie on the speakers, and your game will play on the default device, which you would set to be the headset.

I would really like to find a way to do this with programs that don't have a setting like Windows Media Player. E.g. Spotify can only go to the default device.

  • 1
    I so agree! To turn on a bluetooth headset for web-based music I need to close all 100 browser tabs and restart it all. I just can't believe this.
    – moodboom
    Feb 24 '14 at 15:05
  • possible on linux
    – Kiwy
    Sep 2 '15 at 12:55

Windows 7 automatically transitions open applications to match the default audio device so you don't have to restart your programs to make the change take effect...which is why you're having this problem. but you already figured that out probably.

I'd suggest your headphone's output default so all games use it by default. Then you go into your music player's audio output and change it to be your speaker's output in the program preferences. I've done this with onboard (motherboard) sound and a sound card with VLC media player. Unfortunately I've never done it for any other programs but it's typically an advanced setting/preference, google should help if you query "change audio output for for XYZ".

The reason you're setting the headphones to default is because game's audio options for changing outputs will probably be more limited than music programs. And if you play many games you'll have to change each game versus just one music program.

  • 2
    Windows 7 (or at least Windows 8.1) does NOT automatically transition open applications to match the default audio device. I turn on my bluetooth headset, and any Firefox audio will continue to use the speakers, until I close out Firefox entirely and restart it. Driving me crazy. :-( Wow, M$ says this crap is "by design", stunned.
    – moodboom
    Feb 24 '14 at 14:56
  • 1
    @moodboom: This is incorrect. Your link talks about Vista. Furthermore, your link only talks about setting the default endpoint. Not actually abotu stream switching open applications to the default endpoint. Windows 7 onwards automatically switches the audio stream to the default endpoint if the application has opted to simply use the default endpoint (instead of explicitly specifying an end-point). Firefox probably does not use MF/DShow for audio playback and thus does not receive any stream switching events. That is entirely Firefox's design - not Windows. Jun 5 '14 at 0:27
  • 2
    Bala: Steam, and Skyrim do the same. Since Firefox, Steam, and Skyrim are the only Applications I care about on Windows, I couldn’t care less what API they should use, only that apparently nobody does it. “Nobody uses it” is a design flaw by Microsoft. Jul 2 '14 at 8:32
  • This bug in firefox: bugzilla.mozilla.org/show_bug.cgi?id=698079
    – dez93_2000
    Aug 28 '14 at 13:14

Virtual Audio Cable (30$) allows you to transfer audio (wave) streams between applications and/or devices.

It creates a set of virtual audio devices named "Virtual Cables", each of them consists of a pair of the waveform input/output devices. Any application can send audio stream to an output side of a cable, and any other application can receive this stream from an input side. All transfers are made digitally, providing NO sound quality loss (a bitperfect streaming).

For iTunes global hotkey: iTunes Global Hotkeys or hktunes

(foobar2000 have native global hotkey and output device choice :p)


For Zuneware there is an application someone wrote called ZuneKeys. I've never used it, so your mileage may vary.


If you use mplayer then you can select the audio device using the mplayer -ao dsound:device=2 anymedia.mp3 command line switch - in my case this would play on the headphones as opposed to internal speakers.

In Windows Media Player you can set the default device in Options->Devices->Speakers->Properties but it did not work for me.

Not the answer you're looking for? Browse other questions tagged or ask your own question.