51

Googling for solutions to this problem seems to lead to third party solutions like this, sometimes with scripting like this. I'm no stranger to either, but It seems crazy to me that there isn't a better solution.

I'm on Windows 10. I use HDMI audio to my monitor from my AMD video card, and I use a set of headphones plugged into the back of my motherboard. I use both often, but right now I need to tediously switch the default playback device to switch between them (sometimes, for reasons I don't yet know how to replicate, I even need to fully disable the device currently making sounds.


This is what I see in the volume mixer after starting my computer up with AMD HDMI as the default, and opening Chrome to watch a video:

AMD HDMI is playing System Sounds and Chrome's audio.

When I switch to the Speakers device

About to select Speakers device.

I see that it is not assigned any applications, and I see no way to reassign applications:

Speakers device is lonely.

I can usually hammer all of the applications over to the Speakers device by switching the default playback device, and usually vice versa. But that sometimes that only switches some applications, and sometimes it doesn't do anything. But that's besides the point...

How can I assign an application to a specific audio playback device? The Volume Mixer looks like the right place, but it doesn't seem to do it unless I'm missing something.

kdbanman
  • 1,946
  • 3
  • 14
  • 17
  • 6
    Like many others, I'm coming from Google. I'd just like to make an additional question: __Why on earth__ would Windows recognize per-application audio output and __yet__ does not allow us to change? It would be far better just not provide this feature at all and let us pick a single device for all output. It's so frustrating. – Henrique Jung Nov 20 '17 at 21:31
  • @HenriqueJung basically because is not a windows task to do so. What you change in windows is actually default audio device but application can select any audio device it likes. Some apps can handle this change and switch device when user switches default device but many may not. It's quit easier for OS to change volume of the app than force it to switch audio context. In many cases it may be even not posible. For ex. how to handle DTS sound on devices that dose not support it etc. That why windows left decision on which sound device should be played music to an application. – Logman May 31 '18 at 13:04
  • I wish this question wasn't closed without a single answer mentioning that Windows 10 does let you configure output, and input, audio per application. I also wonder why the hell Google always send me the duplicate instead of the original answer (well, observation bias -- I don't know there are duplicates when I'm sent to the original, but it still bothers me!). – Daniel C. Sobral Sep 10 '18 at 16:59

3 Answers3

58

Found a free (GPL) alternate and thought I would throw it out there for anyone else stumbling in from google... before anyone throws away $20 to CheVolume or installs their adware-containing trial software (at least according to my AV scan on version 0.5.0.0, downloaded directly from their site).

found something called Audio Router on reddit / github / alternative.to

https://github.com/audiorouterdev/audio-router

I'm on Win 7 SP1 x64. I've only been playing with it for about 2 minutes but it's correctly playing my Firefox (YouTube) audio through the TV and my game (SR3) audio via my headset with minimal effort. I think I might have a winner.

Will report back if I run into any problems.

bad_coder
  • 643
  • 1
  • 7
  • 16
spiritpyre
  • 941
  • 10
  • 10
  • This looks like the ideal solution. Do report back if you find issues. – kdbanman Jun 10 '16 at 03:56
  • 5
    This seems to crash windows 10 apps. – Brain2000 Aug 07 '16 at 18:48
  • I was able to achieve this using Windows only. Set your default device to headphones and you're good to go. – alcfeoh Nov 22 '16 at 19:27
  • 1
    It's amazing Windows doesn't have this. Forced to switch to Windows 10 in my new job after using Linux for 8 years and the sound control has been driving me insane it's so poor compared to Linux alternatives. – twigg Jun 22 '17 at 09:20
  • Also see this crashing some apps in Windows 10. NVidia ShadowPlay for one. Also cannot duplicate/reroute PUBG to a different audio playback device (e.g. Virtual Audio Cable). – Roy Nov 01 '17 at 16:44
  • Windows 10 tested working on the Fall creators update. Happily routing Chrome audio to speakers, Discord to headset – David Colwell Nov 08 '17 at 01:07
12

Go to "Playback devices" and disable the type of output you want to unassign from the app. The application will automatically switch to the next available sound output, and you can then re-enable disabled output device.

Wes Sayeed
  • 13,662
  • 6
  • 41
  • 76
  • 2
    And how do I assign an app back to that disabled output device? My question is about putting different apps on different playback devices. – kdbanman Aug 15 '16 at 21:05
  • Welcome to Super User! This is really a comment and **not** an answer to the original question. To critique or request clarification from an author, leave a comment below their post - you can always comment on your own posts, and once you have sufficient [reputation](https://superuser.com/help/whats-reputation) you will be able to [comment on any post](https://superuser.com/help/privileges/comment). Please read [Why do I need 50 reputation to comment? What can I do instead?](https://meta.stackexchange.com/a/214174) – DavidPostill Aug 16 '16 at 07:28
  • Alternately disabling the device you don't want to use would be tedious indeed. If, however, as happened with me on Win7, some apps started using a device they weren't supposed to and I never use, this is just the ticket. – CodeLurker Dec 11 '17 at 22:01
2

I'm sorry, but Windows just does not have a concept of an application-specific sound output device. Many apps just use whatever the default is. Some (the more elaborate "multimedia" apps) include an option menu that let you pick a device from a list, and most of them will let you save that as a default, but the app has to be coded to provide that option.

I like the scripting option. You start a program via a script that changes the default to whatever you want it to be for that program, then after the program is good and running, it sets the default back to whatever you want most programs to use. PowerShell can do this too.

Jamie Hanrahan
  • 23,140
  • 6
  • 63
  • 92
  • 9
    "*Windows just does not have a concept of an application-specific sound output device.*". But it happens quite often that my headphones are assigned one application and my speakers are assigned another. I just don't know how to control it. I'm willing to believe it's just a bug, but it is definitely windows assigning apps to separate playback devices. – kdbanman Sep 06 '15 at 14:04
  • I've worked on multimedia drivers and apps. I am unaware of any place to put "this is the default device for app X" except in the app's own settings. But, some apps _are_ coded to look for certain _types_ of devices first, or to use e.g. the highest-quality device, rather than the default. Windows has a separate setting for "default communications device" and e.g. Skype will use that device by default, as opposed to the "ordinary" default device. Failing that, comm programs may look for a device with a mic input (the HDMI sound device, for example, does not have one) and use that. Etc. – Jamie Hanrahan Sep 06 '15 at 20:23
  • I understand what you mean about I/O device types. That app settings config you're talking about - is it part of the .NET `System.*` API? Maybe the `Environment.*` API? Or is it lower level in the Win32 API? If I read those docs I'll have a much better understanding of what's going on, so I'd really appreciate a link or some keywords :-) – kdbanman Sep 06 '15 at 23:55
  • Scripts switching default device would not work in many cases since many applications will follow the switch immediately or upon certain action. CheVolume does work for a fraction of applications, but not nearly as much as you'd like and sometimes fails on those as well. It seems that this is an OS-level function that is just missing - why require the same feature to be implemented in all applications separately? – Jacek Gorgoń Feb 26 '16 at 22:41
  • @JamieHanrahan How? Is everyone in on some conspiracy to leave out easy solutions? There was a similar issue with google not supporting transparent proxy setting... Can you enlighten me as to why the pipe concept is too much to ask for? – Milind R Oct 16 '16 at 13:30
  • All I can tell you for certain is that it's not a technical impossibility. I imagine that Microsoft just doesn't think it's a widespread enough issue for them to build a solution into the OS. – Jamie Hanrahan Oct 17 '16 at 06:41
  • Windows 10 is perfectly happy to let you assign different input and output devices per application. – Daniel C. Sobral Sep 10 '18 at 16:56
  • @DanielC.Sobral That feature was added with the Spring 2018 update but it was not present in 2015 or 2016. Thanks for the useful update. Here's how to do it: https://www.howtogeek.com/352787/how-to-set-per-app-sound-outputs-in-windows-10/ – Jamie Hanrahan Sep 10 '18 at 18:13
  • @JamieHanrahan Interesting. The first time I wanted, which was last week, it was available, so I never considered the possibility it wasn't present before! – Daniel C. Sobral Sep 14 '18 at 17:52