jeffvli / sonixd

A full-featured Subsonic/Jellyfin compatible desktop music player
GNU General Public License v3.0
1.8k stars 74 forks source link

Provide configuration setting to allow chosing non-default audio output device #96

Closed whorfin closed 2 years ago

whorfin commented 2 years ago

Is your feature request related to a problem? Please describe. I have a high-quality audio output DAC which I use for playing music. I'd very much like to be able to point Sonixd to it, while leaving the audio default at "laptop speakers" for everything else. This works nicely with eg Kodi. Since Sonixd is such a lovely player, it would be nice to be able to use it in this way. Using the "navidrome" web client is similarly problematic as current chrome extensions to change audio output per-tab are busted. FWIW this is for a macOS target, but I imagine this would be broadly useful.

Describe the solution you'd like A radio button choice or element-pulldown in Configuration "Player" page would be ideal, allowing selection of the audio output device.

Describe alternatives you've considered Exposure of a relevant media sink entry in the settings json file would also work at least in my application, as I don't intend to change this once set.

jeffvli commented 2 years ago

This is definitely a feature that would be worth looking into and adding. I'll add it to my roadmap!

jeffvli commented 2 years ago

image

Added the selector under the Player config. I've only tested this on Windows as I don't have a macOS device, but I believe this should be globally compatible.

whorfin commented 2 years ago

Hurrah! Building this on an ancient [10.13.6] macOS laptop was a bit of a challenge, and a bunch of stuff was busted - UI icons all showing as squares. But most importantly - this function worked perfectly with my audio interface, so I shall eagerly await release of this next version! I don't know if this is relevant but one thing I did trip over: I accidentally first built and ran from main. Running via yarn start, I had to enter credentials from scratch. After realizing my mistake, I switched to dev branch, rebuilt and reran. Everything seemed totally broken with something like getFolder() failed (or thereabouts). Dashboard - empty, Artists - empty, Folders - empty, etc. Thinking maybe there was some config issues, I did "Reset Defaults" Still busted Poked Disconnect then attempted to reconnect. At this point I saw the new pulldown for Jellyfin vs Subsonic and then the familiar credentials interface. Re-entered, re-connected, and then everything was fine. So maybe no issue and it's just because things are IP, but just FYI perhaps an issue with configuration file upgrades from old to this version (or maybe just because everything is still IP) In any event - thanks again! This new functionality works fantastically.

jeffvli commented 2 years ago

No problem, and thanks for testing!

There are some pretty big changes to the application incorporated in the current dev build due to the Jellyfin server support, so you probably did run into some configuration errors due to an invalid fallback. I'll have to do some testing to make sure the upgrade is as seamless as possible.