saivert / pwvucontrol

Pipewire Volume Control
GNU General Public License v3.0
262 stars 8 forks source link

Feature request: Feature parity with pavucontrol ( or maybe just a few good features ) #6

Closed Silverdev2482 closed 4 months ago

Silverdev2482 commented 11 months ago

I'm not sure if this is a good idea or all features are necessary but some would be really nice. Here is a list of features that are missing and their subjective importance

saivert commented 10 months ago

Added cards tab so you can change profile.

saivert commented 10 months ago

Just did a huge code reorganization and clean up so hopefully easier for other contributors to navigate the code now.

I'm only working on this in my very limited spare time.

Silverdev2482 commented 10 months ago

I edited the original post to make it a task list. I personally would love the input tab, but is the advanced drop down even worth implementing?

Silverdev2482 commented 10 months ago

On that note do we want complete parity at all? I feel like a decision should be made on this.

saivert commented 10 months ago

Making task lists is all fine and good but I'm aware of what I want/need to implement here. This is still just my personal hobby project and there has been zero pull requests so far.

I would love some help with the actual code bit. I already intend to duplicate all the functionality that pavucontrol has.

Silverdev2482 commented 10 months ago

I wish I could help but I don't know rust. Maybe I could learn? however that would take a while. I don't even know c.

saivert commented 6 months ago

Just added port/route selection to sinks.

saivert commented 6 months ago

Input device tab has been added.

Silverdev2482 commented 6 months ago

Nice to hear, Also I have noticed that pwvu crashes when Deep Rock Galactic is open/opened. However the mic doesn't work in DRG so it might be my Pipewire setup, I will investigate.

On Mon, Apr 29, 2024 at 1:38 PM saivert @.***> wrote:

Input device tab has been added.

— Reply to this email directly, view it on GitHub https://github.com/saivert/pwvucontrol/issues/6#issuecomment-2083404414, or unsubscribe https://github.com/notifications/unsubscribe-auth/AUCYQHJQOBY64UXEXH7BNO3Y72HTZAVCNFSM6AAAAABANNESZKVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDAOBTGQYDINBRGQ . You are receiving this because you authored the thread.Message ID: @.***>

RamKromberg commented 5 months ago

Is over-amplification (beyond 100%) possible with pipewire?

Silverdev2482 commented 5 months ago

Yes it is, you can use wpctl status to get all your inputs, here is mine:

[silverdev2482@Desktop-SD:~]$ wpctl status
PipeWire 'pipewire-0' [1.0.6, silverdev2482@Desktop-SD, cookie:2681101611]
 └─ Clients:
        33. .xdg-desktop-portal-hyprland-wrapped [1.0.6, silverdev2482@Desktop-SD, pid:1805]
        34. WirePlumber                         [1.0.6, silverdev2482@Desktop-SD, pid:1814]
        42. WirePlumber [export]                [1.0.6, silverdev2482@Desktop-SD, pid:1814]
        43. pipewire                            [1.0.6, silverdev2482@Desktop-SD, pid:1852]
        44. waybar                              [1.0.6, silverdev2482@Desktop-SD, pid:1728]
        64. Firefox                             [1.0.6, silverdev2482@Desktop-SD, pid:1717]
        65. .pwvucontrol-wrapped                [1.0.6, silverdev2482@Desktop-SD, pid:2485]
        67. .pwvucontrol-wrapped                [1.0.6, silverdev2482@Desktop-SD, pid:2485]
        70. .pwvucontrol-wrapped                [1.0.6, silverdev2482@Desktop-SD, pid:2485]
        71. .pwvucontrol-wrapped                [1.0.6, silverdev2482@Desktop-SD, pid:2485]
        93. .pwvucontrol-wrapped                [1.0.6, silverdev2482@Desktop-SD, pid:2485]
       106. wpctl                               [1.0.6, silverdev2482@Desktop-SD, pid:9739]

Audio
 ├─ Devices:
 │      46. CMTECK                              [alsa]
 │      47. Baffin HDMI/DP Audio [Radeon RX 550 640SP / RX 560/560X] [alsa]
 │      48. Family 17h (Models 00h-0fh) HD Audio Controller [alsa]
 │  
 ├─ Sinks:
 │  *   51. Family 17h (Models 00h-0fh) HD Audio Controller Analog Stereo [vol: 0.96]
 │  
 ├─ Sources:
 │  *   49. CMTECK                       Mono   [vol: 1.00]
 │      52. Family 17h (Models 00h-0fh) HD Audio Controller Analog Stereo [vol: 1.00]
 │  
 ├─ Filters:
 │  
 └─ Streams:
        69. pwvucontrol-peak-detect                                     
            100. input_FL        < Firefox:output_FL    [paused]
            101. monitor_FL     
            102. input_FR        < Firefox:output_FR    [paused]
            103. monitor_FR     
        73. pwvucontrol-peak-detect                                     
             75. input_FL        < ALC892 Analog:monitor_FL [active]
             76. monitor_FL     
             77. input_FR        < ALC892 Analog:monitor_FR [active]
             78. monitor_FR     
        82. pwvucontrol-peak-detect                                     
             68. input_FL       
             72. input_FR       
             81. monitor_FL     
             86. monitor_FR     
        84. Firefox                                                     
             66. output_FR       > ALC892 Analog:playback_FR    [paused]
             74. output_FL       > ALC892 Analog:playback_FL    [paused]
        92. Firefox                                                     
             95. output_FL       > ALC892 Analog:playback_FL    [paused]
             96. output_FR       > ALC892 Analog:playback_FR    [paused]
        97. pwvucontrol-peak-detect                                     
             88. monitor_FR     
             89. input_FL        < Firefox:output_FL    [paused]
             91. input_FR        < Firefox:output_FR    [paused]
             99. monitor_FL     

Video
 ├─ Devices:
 │  
 ├─ Sinks:
 │  
 ├─ Sources:
 │  
 ├─ Filters:
 │  
 └─ Streams:

Settings
 └─ Default Configured Devices:
         0. Audio/Sink    alsa_output.pci-0000_29_00.3.analog-stereo
         1. Audio/Source  alsa_input.usb-CMTECK_Co._Ltd._CMTECK_000000000000-00.mono-fallback

From there you can can the volume with: wpctl get-volume ID As far as I know you can't set or get the volume of anything in streams that is nested, eg I can set the volume of node 84 or 92, but not 66 or 74. And you set it with: wpctl set-volume ID VOLUME Volume is a decimal by default, but can be changed to a percent by adding a percent symbol. you also can relatively change volume by suffixing ( not prefixing ) it with a plus or minus

Silverdev2482 commented 5 months ago

pwvucontrol hasn't updated on nixos unstable, and I haven't gotten to patching nixpkgs so no updates on DRG crashing pwvucontrol.

saivert commented 5 months ago

I will create a new catch-all thread for general support so as to not pollute the issue tracker with non-bug / user support related stuff. This is a tracking issue for feature parity with pavucontrol only which has concluded. Closing.

RamKromberg commented 5 months ago

pwvucontrol hasn't updated on nixos unstable, and I haven't gotten to patching nixpkgs so no updates on DRG crashing pwvucontrol.

@Silverdev2482 Actually 0.4.1 was available even on stable since around last week at least: https://github.com/NixOS/nixpkgs/blob/nixos-24.05/pkgs/applications/audio/pwvucontrol/default.nix

Not sure why about "About pwvucontrol" popup says it's 0.1.0 though...

not pollute the issue tracker with non-bug / user support related stuff. This is a tracking issue for feature parity with pavucontrol only which has concluded. Closing.

@saivert To clarify, I was asking since over-amplification is available on pavucontrol (lets you raise the volume slider over 100%) so I wasn't clear why it's missing from pwvucontrol (seeing how the slider only makes it to 100%). Now that I tried using wpctl like @Silverdev2482 suggested and noticed it doesn't work there either, I suspect it's probably a pipewire bug / missing feature (or at least, a very common implementation bug) rather than (just) a pwvucontrol.

Regardless, the unfortunate TL;DR of closing the feature request as is (for me at least) is that if it works in pavucontrol but doesn't work in pwvucontrol, use pavucontrol.

saivert commented 5 months ago

Over-amplification is basically using software mixing to raise the waveform and more often than not cause distortion. I can implement support for it.

It was unfortunate that the original poster didn't include it as a point. I too hastily closed the issue. I would appreciate some help finishing this software as I have very little time for it currently and I'm afraid I have painted myself into a corner architecture wise. There are still too many edge cases that needs fixing. It is primarily a way for me to learn rust, writing some actual software with it instead of just doing code exercises which I find boring. It is available on GitHub in the hope that some might find it useful.

RamKromberg commented 5 months ago

@saivert oh I wasn't criticizing the decision to implement it or not. I was just being grumpy and confused about the premature claim of feature parity combined with the suggestion wpctl should allow it even though it clearly didn't. The two comments actually had me waste half-an-hour on three separate machines (a nixos desktop, a nixos laptop and a debian box) doing iterations of wpctl set-volume 61 150%+ (150%+, 150+%, +150% and various values and sinks) before concluding there's a miscommunication and it's just not a supported feature...

Anyhow, there's nothing wrong about not implementing yet-another low-priority feature request. It just needed to be clarified as a caveat emptor for any would-be user scratching their heads trying to debug why their volume slider isn't going over 100% and that it's not them doing something wrong, that it's not a bug and that it's perfectly fine to just continue using pavucontrol until such a time when someone decides it's worth their time to implement the feature.

Regardless, thanks for pwvucontrol. It's a fine piece of software that I use almost all the time and only reach for pavucontrol on very rare occasions. Take your time and just keep having fun with it. If someone REALLY needs it, they'll write a pull request ;)

saivert commented 4 months ago

@RamKromberg I have added support for over-amplification which is ready to test in main branch right now. You must enable it from the hamburger menu.

This will land in version 0.4.2 (next).

RamKromberg commented 4 months ago

Just built and run it. Over-amplification works in the Playback tab nicely enough though it doesn't seem to have an effect on the devices listed in the Output Devices tab. Comparing with wpctl status is pretty weird: When applying over-amplification to a client in the Playback tab, wpctl status registers it under the sink device which, in pwvucontrol is found under the Devices tab. 🤷

Still, it works.

Otherwise, I've also applied over-amplification to an Input Device which seemed to apply correctly to a source (under wpctl status) but I don't have a mic around to test it.

Anyhow, thanks a bunch!

p.s. Unrelated, it's not new and is almost certainly a bug with my theme but the labels in the Hamburger menu aren't colored right:

screenshot-1718202108

I've tried using env GTK_DEBUG=interactive pwvucontrol to figure out what's what but the picker can't catch the label as it looses focus and Ctrl+Shift+I when the menu is showing is being ignored too.

But again, probably just a buggy theme since I'm over customizing stuff.

saivert commented 4 months ago

@RamKromberg

Over-amplification works for devices as well. image

Output from wpctl:

├─ Sinks:
│  *   79. Built-in Audio Analog Stereo        [vol: 1.22]

And yes you are using a broken theme which doesn't style popovers correctly.

Please file further actual bug reports as a new issue. Questions are asked in Discussions area.

Closing...