[GH-ISSUE #54] Testers / maintainers of Linux and Windows platform needed #45

Open
opened 2026-02-28 14:30:12 +03:00 by kerem · 25 comments
Owner

Originally created by @jpochyla on GitHub (May 27, 2021).
Original GitHub issue: https://github.com/jpochyla/psst/issues/54

Although Psst code is mostly multi-platform, I use only Mac OS as my daily driver and develop on Mac, and I don't really have the time that other platforms deserve. So, would you like to own and maintain the platform-specific parts of Psst for Windows or Linux? Volunteers wanted!

Originally created by @jpochyla on GitHub (May 27, 2021). Original GitHub issue: https://github.com/jpochyla/psst/issues/54 Although Psst code is mostly multi-platform, I use only Mac OS as my daily driver and develop on Mac, and I don't really have the time that other platforms deserve. So, would you like to own and maintain the platform-specific parts of Psst for Windows or Linux? Volunteers wanted!
Author
Owner

@ghost commented on GitHub (May 27, 2021):

@jpochyla I'd be happy to function as a tester for Linux :D

<!-- gh-comment-id:849867028 --> @ghost commented on GitHub (May 27, 2021): @jpochyla I'd be happy to function as a tester for Linux :D
Author
Owner

@shiftgeist commented on GitHub (May 28, 2021):

I can offer to test under Windows and secondarily under Linux.

<!-- gh-comment-id:850518840 --> @shiftgeist commented on GitHub (May 28, 2021): I can offer to test under Windows and secondarily under Linux.
Author
Owner

@Kethku commented on GitHub (Jul 14, 2021):

I'm interested in learning more about druid and such in my own projects. I'm not sure I can fully own the windows platform, but I wouldn't mind being pinged to help test or debug some issues

<!-- gh-comment-id:879645050 --> @Kethku commented on GitHub (Jul 14, 2021): I'm interested in learning more about druid and such in my own projects. I'm not sure I can fully own the windows platform, but I wouldn't mind being pinged to help test or debug some issues
Author
Owner

@binyamin commented on GitHub (Aug 8, 2021):

@jpochyla I would be happy to help test on linux. I assume your intent is to verify that new/changed functionality works as intended. Can you periodically post a list of changes, so we know what to look at? Ideally, it would be something people could comment on. Or, just ping me periodically to review PRs,

<!-- gh-comment-id:894867450 --> @binyamin commented on GitHub (Aug 8, 2021): @jpochyla I would be happy to help test on linux. I assume your intent is to verify that new/changed functionality works as intended. Can you periodically post a list of changes, so we know what to look at? Ideally, it would be something people could comment on. Or, just ping me periodically to review PRs,
Author
Owner

@cttipton commented on GitHub (Aug 17, 2021):

I'd also be happy to help with testing on both platforms, linux more readily. Subbed issue, but happy to be pinged directly as well.

<!-- gh-comment-id:900041064 --> @cttipton commented on GitHub (Aug 17, 2021): I'd also be happy to help with testing on both platforms, linux more readily. Subbed issue, but happy to be pinged directly as well.
Author
Owner

@emielvanseveren commented on GitHub (Aug 17, 2021):

@jpochyla, I'd like to contribute, but I'm somewhat of a rust beginner. Do you have any good first issues?
Pref in core not gui related.

<!-- gh-comment-id:900217460 --> @emielvanseveren commented on GitHub (Aug 17, 2021): @jpochyla, I'd like to contribute, but I'm somewhat of a rust beginner. Do you have any good first issues? Pref in core not gui related.
Author
Owner

@chayim commented on GitHub (Aug 17, 2021):

I've been running it all day on Arch ever since the HN post today - I found psst in the AUR. Happy to Linux test.

<!-- gh-comment-id:900233164 --> @chayim commented on GitHub (Aug 17, 2021): I've been running it all day on Arch ever since the HN post today - I found psst in the AUR. Happy to Linux test.
Author
Owner

@miloshadzic commented on GitHub (Aug 17, 2021):

I can help test / triage on windows

<!-- gh-comment-id:900404534 --> @miloshadzic commented on GitHub (Aug 17, 2021): I can help test / triage on windows
Author
Owner

@pythonhacker commented on GitHub (Aug 17, 2021):

I am a kind of power user who loves to build stuff. I use Antix, a minimal derivative of Debian and managed to build psst today after some minor hiccups - like had to build pango from source etc and ended up buying a spotify premium subscription to get the login to work (undocumented ?)

Love the program! I am a medium level Rust developer and would be happy to help build/maintain on Debian and its variants.

<!-- gh-comment-id:900566797 --> @pythonhacker commented on GitHub (Aug 17, 2021): I am a kind of power user who loves to build stuff. I use Antix, a minimal derivative of Debian and managed to build psst today after some minor hiccups - like had to build pango from source etc and ended up buying a spotify premium subscription to get the login to work (undocumented ?) Love the program! I am a medium level Rust developer and would be happy to help build/maintain on Debian and its variants.
Author
Owner

@jpochyla commented on GitHub (Aug 22, 2021):

Thank you all! ❤️ I definitely plan to compile a list of changes, we probably should start doing periodic releases.

One Linux question: how important is a direct PulseAudio support? Is it good enough with alsa? We're using miniaudio now, and although it works very well, I'd like to get rid of it for something Rust-based, probably cpal -- but it doesn't support PA and probably never will 🙄

<!-- gh-comment-id:903257797 --> @jpochyla commented on GitHub (Aug 22, 2021): Thank you all! ❤️ I definitely plan to compile a list of changes, we probably should start doing periodic releases. One Linux question: how important is a direct PulseAudio support? Is it good enough with alsa? We're using miniaudio now, and although it works very well, I'd like to get rid of it for something Rust-based, probably cpal -- but it doesn't support PA and probably never will 🙄
Author
Owner

@maxaudron commented on GitHub (Aug 25, 2021):

@jpochyla alsa is a low level interface and has a bunch of restrictions, like only ever allowing one application to bind to an audio device, so it's not really suitable for desktop usage.

Pulseaudio is more or less the requirement here and the defacto standard. Where pulseaudio acts as the one application on the device and multitracks all the other applications. There are bridges to allow alsa apps to speak to pulse but this is usually left to the user to figure out, and usually doesn't work very well.

There's also pipewire, the new kid on the block, which you can also speak to natively, but pipewire also provides a shim for pulseaudio applications to work with so it doesn't have to be explicitly supported.

<!-- gh-comment-id:905852851 --> @maxaudron commented on GitHub (Aug 25, 2021): @jpochyla alsa is a low level interface and has a bunch of restrictions, like only ever allowing one application to bind to an audio device, so it's not really suitable for desktop usage. Pulseaudio is more or less the requirement here and the defacto standard. Where pulseaudio acts as the one application on the device and multitracks all the other applications. There are bridges to allow alsa apps to speak to pulse but this is usually left to the user to figure out, and usually doesn't work very well. There's also pipewire, the new kid on the block, which you can also speak to natively, but pipewire also provides a shim for pulseaudio applications to work with so it doesn't have to be explicitly supported.
Author
Owner

@H-M-H commented on GitHub (Sep 1, 2021):

FYI: I had some problems with playback on pipewire as well (most of the time psst just refused to
play anything). So I decided to replace miniaudio with cpal and it turned out to be surprisingly
easy. See github.com/H-M-H/psst@22195cb162. Playback is working fine for me now.

<!-- gh-comment-id:910178007 --> @H-M-H commented on GitHub (Sep 1, 2021): FYI: I had some problems with playback on pipewire as well (most of the time psst just refused to play anything). So I decided to replace miniaudio with cpal and it turned out to be surprisingly easy. See https://github.com/H-M-H/psst/commit/22195cb16222180d408174d4ceccf69855f9a8d1. Playback is working fine for me now.
Author
Owner

@jpochyla commented on GitHub (Sep 1, 2021):

@H-M-H Thanks for the exploration, glad to hear! miniaudio supports more backends then cpal, we could make this configurable, probably also with a preferred output device option. Do you know what backend miniaudio was using in your setup? For cpal it's alsa, I guess.

Edit: also, cpal is not really enough, we would also need some resampling (at least on Windows).

<!-- gh-comment-id:910414811 --> @jpochyla commented on GitHub (Sep 1, 2021): @H-M-H Thanks for the exploration, glad to hear! `miniaudio` supports more backends then `cpal`, we could make this configurable, probably also with a preferred output device option. Do you know what backend miniaudio was using in your setup? For cpal it's alsa, I guess. Edit: also, cpal is not really enough, we would also need some resampling (at least on Windows).
Author
Owner

@H-M-H commented on GitHub (Sep 1, 2021):

I have checked the backend and miniaudio was using Backend::PulseAudio. I also tried Backend::Alsa but miniaudio just doesn't seem to want to work with pipewire. And yes cpal uses Alsa.

we could make this configurable

So you would like to keep miniaudio instead of replacing it with cpal for now and cpal should be optional?

also, cpal is not really enough, we would also need some resampling (at least on Windows).

Huh, where does the resampling happen? It doesn't look like it's required?

<!-- gh-comment-id:910512411 --> @H-M-H commented on GitHub (Sep 1, 2021): I have checked the backend and `miniaudio` was using `Backend::PulseAudio`. I also tried `Backend::Alsa` but `miniaudio` just doesn't seem to want to work with pipewire. And yes `cpal` uses Alsa. > we could make this configurable So you would like to keep `miniaudio` instead of replacing it with `cpal` for now and `cpal` should be optional? > also, cpal is not really enough, we would also need some resampling (at least on Windows). Huh, where does the resampling happen? It doesn't look like it's required?
Author
Owner

@jpochyla commented on GitHub (Sep 1, 2021):

I also tried Backend::Alsa but miniaudio just doesn't seem to want to work with pipewire.

Uhh that's unfortunate, I was hoping that the alsa backend would work better.

Huh, where does the resampling happen? It doesn't look like it's required?

It seems that Windows don't automatically resample.

<!-- gh-comment-id:910595919 --> @jpochyla commented on GitHub (Sep 1, 2021): > I also tried Backend::Alsa but miniaudio just doesn't seem to want to work with pipewire. Uhh that's unfortunate, I was hoping that the alsa backend would work better. > Huh, where does the resampling happen? It doesn't look like it's required? It seems that [Windows don't automatically resample](https://github.com/RustAudio/cpal/issues/593).
Author
Owner

@H-M-H commented on GitHub (Sep 1, 2021):

It seems that Windows don't automatically resample.

I guess that means I'd need to throw dasp into the mix as well. Are there other obstacles to consider? One thing I am not sure about is whether f32 is everywhere supported as sample format, this may need conversion as well.

<!-- gh-comment-id:910620101 --> @H-M-H commented on GitHub (Sep 1, 2021): > It seems that Windows don't automatically resample. I guess that means I'd need to throw [dasp](https://github.com/rustaudio/dasp) into the mix as well. Are there other obstacles to consider? One thing I am not sure about is whether `f32` is everywhere supported as sample format, this may need conversion as well.
Author
Owner

@H-M-H commented on GitHub (Sep 2, 2021):

Alright, I gave dasp a try. To be honest it was kinda painful to implement as the channel layout as well as sample format need to be known at compile time. However, it appears to be working now, perhaps someone on Windows can try if this works: github.com/H-M-H/psst@3f39825266

<!-- gh-comment-id:911054589 --> @H-M-H commented on GitHub (Sep 2, 2021): Alright, I gave `dasp` a try. To be honest it was kinda painful to implement as the channel layout as well as sample format need to be known at compile time. However, it appears to be working now, perhaps someone on Windows can try if this works: https://github.com/H-M-H/psst/commit/3f398252663e6bd9c173546d299ce44cde01d724
Author
Owner

@H-M-H commented on GitHub (Sep 2, 2021):

I did some more research and it seems rodio is the way to go as it provides an interface on a higher level and uses cpal internally. Fortunately it wasn't to hard to implement either: github.com/H-M-H/psst@0de081d71b and it should do resampling etc. internally. I'd love to see someone testing this on other platforms than linux.

<!-- gh-comment-id:911653735 --> @H-M-H commented on GitHub (Sep 2, 2021): I did some more research and it seems rodio is the way to go as it provides an interface on a higher level and uses cpal internally. Fortunately it wasn't to hard to implement either: https://github.com/H-M-H/psst/commit/0de081d71b603071ad3ea534bcadf7f7a3a5f417 and it should do resampling etc. internally. I'd love to see someone testing this on other platforms than linux.
Author
Owner

@jpochyla commented on GitHub (Sep 2, 2021):

@H-M-H Personally I would like to avoid Rodio, and work on lower level, possibly with dasp or rubato. Rodio takes a lot of CPU and the resampling quality is low.

<!-- gh-comment-id:911679183 --> @jpochyla commented on GitHub (Sep 2, 2021): @H-M-H Personally I would like to avoid Rodio, and work on lower level, possibly with dasp or rubato. Rodio takes a lot of CPU and the resampling quality is low.
Author
Owner

@H-M-H commented on GitHub (Sep 2, 2021):

Hmm, I see. To me it looks like rodio is just doing linear interpolation for resampling: https://github.com/RustAudio/rodio/blob/master/src/conversions/sample_rate.rs That's also what I am doing on my cpal branch with dasp. I initially tried Sinc interpolation but that was kinda slow / had my CPU at > 40%.

Also I can't confirm rodio taking a lot of CPU. Both psst with cpal without any resampling as well as with rodio are at about 4% CPU.

Edit: cpal without resampling is as to be expected a slight bit faster/more efficient though.

<!-- gh-comment-id:911697117 --> @H-M-H commented on GitHub (Sep 2, 2021): Hmm, I see. To me it looks like rodio is just doing linear interpolation for resampling: https://github.com/RustAudio/rodio/blob/master/src/conversions/sample_rate.rs That's also what I am doing on my cpal branch with dasp. I initially tried Sinc interpolation but that was kinda slow / had my CPU at > 40%. Also I can't confirm rodio taking a lot of CPU. Both psst with cpal without any resampling as well as with rodio are at about 4% CPU. Edit: cpal without resampling is as to be expected a slight bit faster/more efficient though.
Author
Owner

@miloshadzic commented on GitHub (Sep 2, 2021):

I also tried Backend::Alsa but miniaudio just doesn't seem to want to work with pipewire.

Uhh that's unfortunate, I was hoping that the alsa backend would work better.

Huh, where does the resampling happen? It doesn't look like it's required?

It seems that Windows don't automatically resample.

I haven't looked into this, but AFAIK using WASAPI on windows would resample, no?

<!-- gh-comment-id:911698615 --> @miloshadzic commented on GitHub (Sep 2, 2021): > > > > I also tried Backend::Alsa but miniaudio just doesn't seem to want to work with pipewire. > > Uhh that's unfortunate, I was hoping that the alsa backend would work better. > > > Huh, where does the resampling happen? It doesn't look like it's required? > > It seems that [Windows don't automatically resample](https://github.com/RustAudio/cpal/issues/593). I haven't looked into this, but AFAIK using WASAPI on windows would resample, no?
Author
Owner

@binyamin commented on GitHub (Sep 2, 2021):

@jpochyla @H-M-H I feel like these sorts of technical, problem-solving conversations should have a dedicated issue/discussion. We don't want to cram all linux (and windows) talk into a single issue.

<!-- gh-comment-id:911813983 --> @binyamin commented on GitHub (Sep 2, 2021): @jpochyla @H-M-H I feel like these sorts of technical, problem-solving conversations should have a dedicated issue/discussion. We don't want to cram all linux (and windows) talk into a single issue.
Author
Owner

@H-M-H commented on GitHub (Sep 2, 2021):

Agreed, I created a discussion here: https://github.com/jpochyla/psst/discussions/167

<!-- gh-comment-id:911887408 --> @H-M-H commented on GitHub (Sep 2, 2021): Agreed, I created a discussion here: https://github.com/jpochyla/psst/discussions/167
Author
Owner

@Kimorine commented on GitHub (Mar 28, 2022):

totally interested in windows test

<!-- gh-comment-id:1080745991 --> @Kimorine commented on GitHub (Mar 28, 2022): totally interested in windows test
Author
Owner

@immangat commented on GitHub (Nov 29, 2024):

I'm a heavy Spotify user and would love to contribute to this project! Let me know how I can help. Saw this project on hacker news.

<!-- gh-comment-id:2507121543 --> @immangat commented on GitHub (Nov 29, 2024): I'm a heavy Spotify user and would love to contribute to this project! Let me know how I can help. Saw this project on hacker news.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/psst#45
No description provided.