[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)