That pipe wire can often meet or beat pro-audio JACK for latency is so elegant & nice. Defeating that compromise of PulseAudio seems like the crowning achievement to me; there's not a lot of other faults or defects I felt with PulseAudio, and I say this as someone who has had sound servers with half a dozen audio cards (mostly USB) I've run off a system, as someone who has streamed PulseAudio from one system to another.
The technical sophistication of PipeWire is almost purely made possible by Linux improving, by the availability of DMA-BUFs for shared memory inter-process work. This wasn't possible when PulseAudio (nee Polyp) was being created; the kernel couldn't do that then.
On top of this modern base, pipewire has done a fantastic job generalizing it's architecture. It's also designed to pipe video. It could conceivably be used to pipe input events, or other arbitrary streams too. This is a cool upgrade that I hope we see more leaning into over time; I hope PipeWire someday becomes so pervasively used for so many reasons that it is even more known, tapped, used, & loved that dbus, the current inter-process nexus of FreeDesktop.
> The technical sophistication of PipeWire is almost purely made possible by Linux improving
I'm not sure about that. I guess improvements in ALSA have contributed. But PipeWire was created by none other than the guy who rearchitected GStreamer's foundations after GStreamer had been brittle and prone to crashing for years. I don't think that there was a better person in the Linux ecosystem to do it. It's the second system effect without featuritis, like when some of the Unix people created Plan 9.
Personally, I was not happy with PulseAudio, and I'm very happy with PipeWire. Great, great stuff.
I say that as both a user and somebody who created a prototype for a sound system for an embedded platform on top of PulseAudio that was, AFAICT, abandoned because it just couldn't deliver some things. PipeWire was on the radar at the time but too much in its infancy to use back then. That stopped being the case years ago.
I love this paean, and I am delighted to assimilate this gleeful happy memetics into my own. But I think the hate sucks & can get lost. Maybe it's not hate, but I'm just so done, so fed up with intolerance and/or nattering against Lennart Poettering, and it all comes off as ridiculous to me. Whatever the qualms: Pulseaudio and systemd have been such vast giant leaps over where we were before. Most of the voices are just against. That is, they don't saying what else we ought have done, they dont speculate constructively. They're winges (thank you Ben Collins for re-introducing me to that word). It would be such a bleaker worse world without pulseaudio and without systemd. (I'm sorry to hear your product ran into such difficulty though!)
I absolutely am happy to hand a massive trophy to Wim Taymans for building a truly elegant API architecture. But I repeat again: the core of PipeWire would not have been possible without the better Linux we have today. PipeWire competes with JACK because of https://docs.pipewire.org/page_dma_buf.html . That's basically a fact.
Pipewire is a refinement of the idea, many of these lessons are hard won by pulseaudio itself, being used for years.
Linux audio before pulseaudio was just a lot worse, for many people pulseaudio meant not having to think about how audio worked any more.
Pulseaudio saved my bacon just the other day with virtualization - since the server runs on OSX I could pipe all the audio devices from an OSX host to a Linux guest.
I’ve had nothing but issues with PulseAudio, leading me to disable it and use plain ALSA (with dmix) on basically every Linux system I’ve used. I’m excited that it’s being replaced, but I no longer use desktop Linux very often.
I hope the pro audio side gets a bit more love. I've installed PW for the first time on my Ubuntu 22.04 (through https://pipewire-debian.github.io/pipewire-debian/) and so far have been experiencing high CPU usage on Bitwig Studio v5.0.11 when trying to send audio from and to my Native Instruments Komplete Audio 6, and I have no idea what the culprit might be.
I'm going to try a bunch of stuff and hopefully be able to take advantage of this wonderful technology (that has already come _so_ far!)
I should probably document my troubleshooting ventures. Does anyone know a nice hosted blog that supports Markdown / CommonMark and RSS syndication? Is Substack a good option?
I'm running Arch (not that it should matter) with the newest Bitwig without problems. I'm using a Behringer interface though. Additionally I have a Roland synth acting as another sound card. This also works with Pipewire/Bitwig at the same time as the main interface. I couldn't get it running with JACK before.
I'd start with checking all sinks/sources to make sure you're not resampling by accident. But even that shouldn't be causing high CPU by itself. There's pw-top/pw-profiler to help you.
Thanks for the pw-profiler recommendation, wasn't aware of that one.
I believe the Pro Audio profile [0] (which I'm using) doesn't resample by default.
Using pw-top, I noticed that something was causing xruns [1] (see ERR column) though I was unsure what that was. Since the Pro Audio profile uses the IRQ mechanism, I looked at interrupts [2] but couldn't spot anything unusual. There is however irq/16-mmc0 process which is at times causing significant (>50%) CPU usage, so I think I need to unload the sdcard module and see if that fixes anything.
First however I think I'll try a newer kernel (linux-lowlatency-hwe-22.04, which according to apt search is on 6.2.0.1017.17~22.04.14 as opposed to the current 5.15.0-89-lowlatency that ships with Ubuntu 22.04)
When reading posts like these, I sometimes I feel very lucky having a MacOS M1 setup that does what it's supposed to and which works almost seamlessly with external hardware. Best of luck to your venture.
I think that's skipping some context though. Don't know about the previous poster, but I'm using pipewire for things that MacOS just can't do, at latencies which MacOS can't pull off, with codecs that MacOS can't support. So although I spent an hour or so on the setup / resolving issues, that's still 100% better.
Yeah, the basic things just work on MacOS. But try to do fancy audio routing, low latency processing and other things and you're left with spending hundreds of dollars on apps that give you half a hacky solution.
I'm sure PipeWire is technically more advanced, but as someone that just wants to make music using a DAW by tracking external synthesizers, a _bit_ higher latency doesn't kill, especially if the DAW can compensate for said latencies.
It's nice to hear that PipeWire supports more codecs, but here WAV, FLAC and MP3 are more than sufficient for my needs (and the needs of 99% of producers out there)
At the end of the day when I'm inspired I simply want to make music instead of mucking around with config and troubleshooting. It might be that the Linux audio landscape will offer this at some point, but I don't see that happening any time soon.
> Yeah, the basic things just work on MacOS. But try to do fancy audio routing, low latency processing and other things and you're left with spending hundreds of dollars on apps that give you half a hacky solution.
This; and that also includes running macOS version a release, two or three behind, because the newer ones break your setup.
> This; and that also includes running macOS version a release, two or three behind, because the newer ones break your setup.
That's true, and it's a widely known wisdom, but in my case my Mac isn't even connected to the network: I'm using it just as an appliance solely dedicated for audio / video editing and production.
I also hope the "pro" audio side gets more love. I'm not an audio pro, but I do play music.
Long story short, I tried pipewire for a year, it was a wasted year. Realtime audio never worked, it was a mess of configurations that didn't fix anything. Went back to Jack, everything worked.
Was sad that I could have spent more time making music instead of messing with "the newest, greatest, and best" in the Linux world.
I ran into a bunch of issues with it on a headless userless system. Unfortunately, like pulse, it's deeply integrated with dbus/policykit/xdg stuff. Wireplumber was looking for XDG_HOME_DIR and breaking when it couldn't find one, dbus issues when doing things from root services, Jack clients couldn't connect, etc.
I'm prepared to like it better than pulse, and alsa has its warts, but I'm not 100% convinced yet.