 Hey, I'm Anfa. I'm an electronic music producer and sound designer, so I only use open-source software and Linux. Two months ago, I've switched from jack and pulse audio to pipe wire. Until yesterday, I've been using that for all my work. I've done free live streams with that setup. I've recorded a few videos. So why did I switch back to jack and pulse audio yesterday? Let me tell you. If you've been watching my videos regularly, you've saw the video where I hastily installed pipe wire without reading any manuals or wikis and I've just tried to get through that kind on my own and I did that as an adventure. I wanted to see how hard can it be if you don't read the Arch Linux wiki and turns out it's not that hard. After recording that video, I've done a live stream and that live stream went pretty okay. That was the first one in the series of three I've done using pipe wire. The second one I had more issues because for the first like week or a couple days things were working rather okay. But then Ardor started crashing all the time without any visible reason. I would just run it and sometimes it would crash when I load a plugin or select a track or add a track. Sometimes it would crash right after I just opened the session and just did nothing and it would just crash suddenly. So that meant it's pretty much unusable. I had to do something about it. I was asking around and I got some awesome help on my community chat from people who had more experience with pipe wire and I was able to kind of resolve the issue. Turns out pipe wire is using different buffer size, which is called quant for every application and audio interface and it changes that dynamically based on the system load. I guess that's to optimize latency and CPU usage and it's doing some smart things in the background changing the latency. Unfortunately, Jack applications don't like that. They probably shouldn't have any issues because well Jack allows to change the latency or the buffer size while the server is running and it doesn't require you to shut everything down and start it over. But with Ardor, 8 times out of 10 when I change the latency, I'm speaking when using Jack. Well, sorry, I got a massive sneeze. So even when I was using Jack, 8 times out of 10 when I changed latency from Ardor itself, which means I disconnect from Jack back end, I change the latency and I reconnect to the Jack back end, 8 times out of 10 Ardor would crash. Similarly, if I just use the jack underscore buff size command in the terminal while Jack was running to change the buffer size, again, 8 times out of 10 Ardor would crash. So it's clear that Ardor cannot gracefully handle changing of the buffer size, at least very rarely it can. So pipe wire changing that all the time unfortunately means that Ardor is going to crash a lot. But there is a way to solve that. Pipe wire comes with a set of default configuration files and they are like in ETC pipe wire or one file for some reason is a user share pipe wire something. It seems it totally depends on the Linux distribution you're running. Different packages put these configuration files in different places. On Arch Linux they are all in user share pipe wire. And what you can do is copy these files and put them into your user's home directory slash .config slash pipe wire. And then if you paste these files there, pipe wire is going to use these instead of the default ones. And in these files there is a file called jack.con and there you can set the buffer size for Jack applications and enable locking of the quantum or quant so that it's not going to be changed. So I did that. And that seemed to have fixed the problem with Ardor crashing. By the way it wasn't just Ardor, Karla was crashing as well. Non-mixer was completely unusable and it would just crash constantly. I believe the first live stream right after I switched to pipe wire I managed to do with non-mixer as still because that was part of my software setup. But what I've had to do is right modify my software setup script so that it checks if non-mixer crashed or Karla crashed and then restarted them both so they re-establish all the audio connections. And I think that crash has happened a few times during that live stream. So I kind of like, I was kind of able to work around the issue. Even so, not really. So after that live stream I have revised my software setup and I have got rid of non-mixer altogether because OBS has a mixer in itself so I don't really need another mixer. So I've revamped my setup. I've also redone all of the audio processing part in Karla for the microphone inputs. And I've embedded all of that in a Karla patch bay plugin so that I have all of that encapsulated in a single package. This way, like all my processing that is required for live streaming and recording videos is all encapsulated in one node in Karla, which is called ANFA-Studio. And this cleans up the audio routing immensely and if I'm going to patch something live or show you what's going on then there's going to be much less clutter because it's all encapsulated in that. But then I realized that Karla can still be crashing sometimes. Well, maybe not that much. Karla was more or less stable. Mix was not working at all with pipe wire, like I wasn't able to make it stable. It was just, I think it was just crashing all the time or something else but I had to, because I was previously running Mix as a standalone application and it was just set up to connect to specific audio ports. But this was unreliable and it like frequently I would just have to manually reassign that every times and that's just a bummer because what I want is like I want to just run one script, wait a few seconds and be done with that and be ready to stream or record a video and not mess around with everything just set it up manually. Like I want to automate that. I ended up embedding Mix as a Jack application inside of my Karla setup so that Jack is run there. What is actually happening under the hood is Karla is running a temporary Jack server and making Mix use that Jack server and Karla is like intercepting inputs and outputs to that Jack server so that I can, anyway, I was able to make this system reliable. What I don't have to manually reassign connections to Mix every time and that's important because that's a huge headache and when something goes wrong, every single thing like that when you have to manually make sure it's okay or it's not just going to work that adds to the stress of streaming and just wastes your time and your audiences as well. So I want to minimize that. Yeah, so that was all going well. The second live stream I think it went pretty well. I don't remember. I need to check that again. But the third one, it was a few days ago. And before that live stream, I started having really, really big issues with Ardor. Ardor would start to crash randomly again and I was unable to figure out why. I was changing the pipe wire configuration to make sure that the buffer sizes are not changing dynamically and they weren't but Ardor was still crashing a lot. Moreover, I was unable to export anything from Ardor. When I started the export process, it would show the progress bar and the export dialog but it would never do anything. It would never progress. It was just stuck. The only thing I could do is stop the export. So a quick workaround for me was to just start JackCapture which is a program to record JackPorts and by default JackCapture records everything that is being played back for your system outputs. So I just started JackCapture and played my project from Ardor but that was prone to X runs because it wasn't in freewheeling mode. I think what happened is something broke about the freewheeling driver in pipe wire. It was no longer present. There was only dummy driver. And that's where I decided to switch back to Jack. I somehow managed to get things working more or less and Ardor crashed only three times during the stream but after that I decided no, pipe wire is not ready yet. It kind of works. Sometimes it works. It solves some issues but unfortunately it created some other issues. I reported all the problems to Ardor developers that I had with Ardor specifically and to pipe wire developers so that these issues can be fixed but for now for production I have to roll back to Jack and pull sodium. So that's it. That's my two months experiences with pipe wire. I hope this was helpful. Thanks for watching. I also would like to thank all the people who are supporting my work financially because that's what enables me to keep making videos. So if you the reviewer would like to join these people and support me as well you can go to patreon.com slash ANFA or liberapay.com slash ANFA and there you can support me with a monthly donation. Every little bit counts even if it's just one dollar. If you're planning on doing serious production maybe don't switch to pipe wire yet and I've been warning you about that because that was a little bit of an experiment. Things aren't fully stable yet but I'm optimistic for the future. I'll go and keep using Jack and pull sodium unless you're feeling lucky.