[HN Gopher] An Introduction to PipeWire
       ___________________________________________________________________
        
       An Introduction to PipeWire
        
       Author : bpierre
       Score  : 132 points
       Date   : 2022-08-28 16:26 UTC (6 hours ago)
        
 (HTM) web link (bootlin.com)
 (TXT) w3m dump (bootlin.com)
        
       | codethief wrote:
       | My Bluetooth devices regularly disconnect & reconnect, sometimes
       | no longer output anything (until I disconnect/reconnect
       | manually), or won't allow me to switch to certain codecs anymore
       | (until I disconnect/reconnect).
       | 
       | Has anyone had the same issues?
       | 
       | (Using PipeWire + pipewire-media-session)
        
         | d_tr wrote:
         | Not sure at all this will help, but wireplumber is supposed to
         | be the replacement for pipewire-media-session. So this is
         | something easy you could try if your distribution has a package
         | for wireplumber.
        
       | yewenjie wrote:
       | Whenever my laptop stays on for more than like a day, audio
       | quality reduces for my pipewire setup. I have not bbeen able to
       | debug it so far - but restarting the machine makes it go away.
        
         | viraptor wrote:
         | Report it upstream. They were pretty good with walking me
         | through debugging an issue.
        
         | nyanpasu64 wrote:
         | Odd, are you using speakers or headphones or Bluetooth, what
         | does pw-top say before and after quality drops, and is there
         | anything in journalctl --user?
        
         | Laaas wrote:
         | Shitty workaround: `systemctl --user restart pipewire`
        
       | jancsika wrote:
       | > this API has been in use by the pro-audio audience and targets
       | low-latency for audio and MIDI connections _between
       | applications_.
       | 
       | My emphasis there because I love that the author got this right.
       | 
       | It's always been frustrating to help users tangled up in Jack
       | only to find out they're just trying to get a _single
       | application_ to output audio with low-latency. (Their assumption
       | being that Jack is _the_ tool to attain low latency audio input
       | /output in Linux.)
       | 
       | Good vibes around Pipewire and good vibes in an article
       | describing Pipewire are a good sign for an audio server. :)
       | 
       | Edit: clarification, typo
        
       | mikewhy wrote:
       | I was playing Spider-Man with a dual sense and got wondering.
       | That game puts out audio to your speakers, a separate audio
       | stream to the speaker in the controller, and _another_ stream of
       | audio for the haptics. Is this any bit possible with any Linux
       | audio solution?
        
         | jeroenhd wrote:
         | I don't see why that wouldn't be possible with Pipewire. The
         | system will provision your application with the default audio
         | output but through the Pipewire API you can send any audio
         | stream(s) you want to any device(s) you want.
         | 
         | I've played around with patchbay software to manage existing
         | audio streams. I've sent audio to both my headset and streaming
         | software, adding a block of effects inbetween through JACK
         | audio software, and used a similar JACK audio interface to put
         | audio from a voice chat app to the front left and then piped it
         | into my headphones.
         | 
         | I don't know the API for creating audio streams directly but as
         | long as you can introduce enough sources and expose every audio
         | output as a separate sink (i.e. one for your controller) it's
         | all relatively easy.
         | 
         | I doubt game developers will make use of this any time soon,
         | though. Maybe if the success of the Steam Deck brings a new
         | life to Steam Machines?
        
           | mikewhy wrote:
           | Hmm, I suppose that could work, didn't think about targeting
           | the Pipewire api.
           | 
           | I didn't play around with it much, but the controller did
           | appear as a 5.1 (or was it 7.1?) in Linux.
           | 
           | Oh, and I forgot, the controller itself also has a headphone
           | jack. The controller itself can take 3 audio streams, two of
           | which can be used for sound.
        
       | raffraffraff wrote:
       | Still find it odd that I will need to use pipewire-pulseaudio and
       | parec if I want to create a loopback device and null sink so I
       | can select a sound device that doesn't play audio locally, and
       | record audio to send over the network. Unless someone else has
       | done all of this with native PipeWire?
        
         | jcelerier wrote:
         | I use                   pw-loopback -m '[FL FR]' --playback-
         | props='media.class=Audio/Source node.name=my-source
         | 
         | for loopback, is it missing something for your use case?
        
           | raffraffraff wrote:
           | I'll try that. Last time I checked (not that long ago!) the
           | instructions were to use pactl to create null + loopback, and
           | parec to record and pipe to [whatever]. I'll check out pw-
           | loopback!
        
         | Venn1 wrote:
         | I'm waiting on something that will replace PulseAudio module-
         | jack-sink + netjack2.
        
       | jakobdabo wrote:
       | I hope somebody has a solution for a problem that I have and
       | can't find anything online.
       | 
       | I have a simple Pipewire setup. When plugging a regular 3.5mm
       | headphone (/w a mic) it always ends up in maximum capture
       | settings, so if I forget to open `alsamixer` and decrease the mic
       | capture and boost levels to a reasonable level, people behind the
       | other end of Zoom calls suffer.
       | 
       | If I unplug it and plug again, it resets to 100% again. How to
       | fix this?
        
         | heavyset_go wrote:
         | Are you using WirePlumber or pipewire-media-session?
         | WirePlumber seems to remember my volume settings, but that also
         | might be a DE thing possibly.
        
           | jakobdabo wrote:
           | I use WirePlumber (the systemd user service is started), and
           | no DE (only a WM).
        
             | d_tr wrote:
             | Wireplumber stores volume settings in
             | ~/.local/state/wireplumber/. It is not a DE thing. I use
             | i3. I have a separate mic and it remembers the volume.
        
         | stjohnswarts wrote:
         | https://old.reddit.com/r/pipewire/ is fairly active for such
         | questions. I think sometimes even pipewire devs people are on
         | there.
        
       | gerdesj wrote:
       | "One first design choice was to avoid tackling any management
       | logic directly inside PipeWire"
       | 
       | That single statement indicates to me that PW has got it right.
       | Also I've been using it for 18 months now on Arch after a brief
       | to and fro with PA where stuff failed badly for a short while.
       | Now it is nigh on flawless and just works.
       | 
       | This: https://github.com/werman/noise-suppression-for-
       | voice#pipewi... works really well and I can have my window next
       | to a very busy road open and no one can hear it on Teams. Sorry
       | ... Teams! I use Teams actually 8)
        
       | resoluteteeth wrote:
       | I just switched to PipeWire and it's working great. It's
       | fantastic that it can replace both pulseaudio and jack; it seems
       | like a massive improvement in the linux audio situation.
        
         | im_down_w_otp wrote:
         | My only problem so far is that I can't figure out how to
         | correctly define a custom profile for my Tascam Model 12. I
         | created one for ALSA/PulseAudio that used to work perfectly,
         | but it appears that PipeWire has a new config format and
         | mechanism for this kind of thing, and I've been unable to
         | wrangle it into a working result.
         | 
         | My current workaround is to use one of the PipeWire patchbay
         | GUIs to do ad hoc what I'd normally have as baseline configured
         | system setup.
        
       | brunoqc wrote:
       | Also check https://github.com/wwmm/easyeffects and
       | https://github.com/jaakkopasanen/AutoEq.
       | 
       | I wish https://github.com/wwmm/easyeffects/wiki/Community-Presets
       | had more presets.
        
         | [deleted]
        
       | nousermane wrote:
       | Another happy user of PipeWire+Helvum here. Finally, a proper
       | "Virtual Audio Cable" for Linux!
        
         | freeqaz wrote:
         | Link: https://gitlab.freedesktop.org/pipewire/helvum
         | 
         | It's a visual patch bay for Pipewire. I had no idea and I had
         | to look it up.
        
           | MobiusHorizons wrote:
           | It is also featured in the article
        
         | cowtools wrote:
         | I had no idea about this helvum thing- this is great!
        
           | resoluteteeth wrote:
           | This kind of thing was so hard to do with with pulseaudio,
           | lol. I'm so happy that it's easy now with pipewire.
        
         | escalt wrote:
         | People still using PulseAudio can use pagraphcontrol
         | (https://github.com/futpib/pagraphcontrol)
        
           | codethief wrote:
           | I like that UI better than Helvum! Does it also work with
           | PipeWire?
        
         | jcelerier wrote:
         | There's also qpwgraph when you're used to qjackctl
        
       ___________________________________________________________________
       (page generated 2022-08-28 23:00 UTC)