Skip to content

feat(audio): merge native ALSA playback devices into the exclusive selector#166

Open
mikelexp wants to merge 3 commits into
lullabyX:masterfrom
mikelexp:access-alsa-devices
Open

feat(audio): merge native ALSA playback devices into the exclusive selector#166
mikelexp wants to merge 3 commits into
lullabyX:masterfrom
mikelexp:access-alsa-devices

Conversation

@mikelexp

Copy link
Copy Markdown

Hi! This adds native ALSA playback-device enumeration on Linux and merges it with the existing GStreamer device list, so SONE can show real hardware PCM outputs even when PipeWire/WirePlumber does not expose them.

I added this because I wanted to use a FiiO Q1 MK2 as a direct ALSA device outside the PipeWire graph. With that setup, I can select it in Exclusive mode and get bit-perfect playback without PipeWire’s resampling or mixing path affecting the signal chain.

The implementation uses AI assistance, since I don’t code in Rust myself, but I tested it locally and it behaves correctly for my setup (ArchLinux/CachyOS). I know you’ll review the code carefully anyway, so I’m happy to defer to your judgment on anything I may have missed.

A few details on the behavior:

  • It keeps the existing GStreamer-discovered devices for compatibility.
  • It adds native ALSA playback PCMs, including devices that PipeWire hides.
  • It preserves manual override support.
  • It deduplicates and sorts the merged selector list.

Also, congratulations on SONE. I really love your software. It’s easily the best Tidal experience I’ve found on Linux.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant