Usually I just complain here but now I have a real #Linux question: Trying to set up to run a DAW on Linux I'm reading a lot of things like JACK, Pipewire, ALSA et cetera - which is what & how does audio on Linux actually work?
-
@jwcph to add a real world use-case here.
i've recently got a pretty goot ThinkPad laptop, installed LinuxMint one it that came with PipeWire.
I do all of my pro audio work on it via PipeWire - SuperCollider programming - including live-coding performances, Ardour recording and editing, DJ-jing with Mixxx, and also some real-time processing on stage performances (mainly Autotuner), OBS streaming, and daily casual web browsing, or playing videos.. I can plug pro USB audio interfaces like Behringer X18 AIR mixer, tiny cheap USB wired in-ear headphones, or connect to Bluetooth speakers at home. It all appears in the
qpwgraph1 app where I can patch anything to anything.So in 99% I'm satisfied with PipeWire. I'm need to test more and learn how to force it very low latency - something I was able to do on the commandline with Jack, and I have a problem with ALSA driver with my integrated soundcard (sometimes it glitches out for few seconds), but that's quite a particular problem to this hardware I think.
@prinlu Thank you so much for this comprehensive & very understandable explanation!
You have nothing to apologize for - I truly appreciate you taking the time 🥰 -
@ambientspace @jwcph @mosgaard @amadeus I'm also documenting my process, too.
The good news is that REAPER runs awesome with PipeWire pretending to be JACK. Better low latency than I get on Windows.
@fortifieduniverse @ambientspace @mosgaard @amadeus Glad to hear this - I'm using Reaper too & definitely not in the mood for switching to anything else

-
-
@jwcph @mosgaard I’m documenting my process on this (newish to #Linux in that I’ve used it for 15 years, but am making a push to move everything there this year). There’s a pinned post on my Linux Audio Considerations that you can read.
@amadeus is also documenting his process with a bit more experience.
It might help to know which #DAW and which #Distro you are using as well as if you have an #AudioInterface (which one) and any specific goals or needs.
@ambientspace @mosgaard @amadeus Thank you, I think I found it
I'm using Reaper on Zorin 18 - btw I would also need to get Davinci Resolve up & running if I ever get to switching my other Mac to Linux, I see you have some info there, too 
My audio interface is an M-Audio M-Track DUO & I've got an AKAI MPK Mini IV for MIDI.
My goal is strictly amateur Bedroom Producing, for now anyway

-
@jwcph 2/2
4. Install Helvum or qpwgraph to explore and manage PipeWire’s routing capabilities.
5. Install DAW.
6. Optional: Install plugins — see https://linuxdaw.org/ for native options
7. Optional: Tune your system for low latency and stability with Millisecond
PD: In my experience, MIDI (via USB or your audio interface) usually works without any ado out of the box.
@amadeus Thank you very much
is the order of operations crucial? As in, should I remove Reaper, then re-install it at the proper step? Thanks for the plugin link, too - I'm also trying to get Windows plugins to work with Yabridge; there's a few I don't want to leave behind (and not just because I paid for them) but I will definitely prefer going native where I can.
-
@jwcph 2/2
4. Install Helvum or qpwgraph to explore and manage PipeWire’s routing capabilities.
5. Install DAW.
6. Optional: Install plugins — see https://linuxdaw.org/ for native options
7. Optional: Tune your system for low latency and stability with Millisecond
PD: In my experience, MIDI (via USB or your audio interface) usually works without any ado out of the box.
@amadeus No, sorry, far above my head... I did find out that I have PipeWire running & I got non-Flatpak Reaper to stop throwing an error, but I had to download QJackCtl to launch the JACK server - and I still don't know how to get Reaper to recognize any inputs at all.
Somebody else suggested I try using Flatseal to overcome the sandboxing issue with Flatpak Reaper, in which everything else works - might work, if I can find out what to set/allow/add... not tonight tho -_-
-
@amadeus No, sorry, far above my head... I did find out that I have PipeWire running & I got non-Flatpak Reaper to stop throwing an error, but I had to download QJackCtl to launch the JACK server - and I still don't know how to get Reaper to recognize any inputs at all.
Somebody else suggested I try using Flatseal to overcome the sandboxing issue with Flatpak Reaper, in which everything else works - might work, if I can find out what to set/allow/add... not tonight tho -_-
@amadeus To clarify, I followed your steps but can't find out how to patch anything - my status now is I have a non-FP Reaper which loads the Yabridge stuff but nothing else works & an FP Reaper in which everything seems to work except the Yabridge stuff...
- and now my brain is tired, I'll have to get back to it later.
-
Usually I just complain here but now I have a real #Linux question: Trying to set up to run a DAW on Linux I'm reading a lot of things like JACK, Pipewire, ALSA et cetera - which is what & how does audio on Linux actually work?
What I would like to find out is, what does the system audio chain look like & which ones of all these... apps? whatever they are are versions of the same things & which are drivers & which are necessary/optional

Preferrably in n00b speak, please

@jwcph I am going to introduce a statement that contradicts someone else's statement, but which I believe to be correct: Pipewire replaces (ie. emulates) Alsa as well as Jack and Pulse.
Opinion now: you should run a distro with Pipewire, and use it. It will take some mental labour, possibly.
Very simplified:
Alsa is fantastic, but can only handle one process feeding it audio at a time, so ends up pretty limited.
Pulseaudio was developed to address that, and generally introduce some much-needed features to the Linux desktop. Its major weakness is latency, it's got tons and tons of latency, and that is completely a no-go for musicians and audio professionals and the like, leading to
Jack, which is rather clunky and not easy to use like Pulse, but is "realtime" capable in terms of performance. It is what we audio perverts have been using for our DAWs and stuff for a long long time.
Jack's major hatefuel is that you have to connect up your inputs and outputs of the card as well as every app, using one of a number of patching manager apps (Qjackctl, Carla I think, uhh.. Cadence was/is another) with varying degrees of ease. Likewise all your midi connections. It was fiddly and pretty much a non-seller to any Windows ASIO or Mac [whatever] users.
This is all more or less solved with Pipewire. Along with the Pipewire server (which seems to prefer to run as a user rather than a system process, presumably for security) you need to run what is called a Session Manager (Wireguard the usual and best, so far as I know) which creates a more or less ASIO-like experience for native Pipewire apps, they just work, and also, as others have said, it emulates the previous three systems, while retaining the realtime or near-realtime performance of Jack.
Bottom line, every previous system had its place, but Pipewire is our master now. It takes care of us, precious.
-
@jwcph I am going to introduce a statement that contradicts someone else's statement, but which I believe to be correct: Pipewire replaces (ie. emulates) Alsa as well as Jack and Pulse.
Opinion now: you should run a distro with Pipewire, and use it. It will take some mental labour, possibly.
Very simplified:
Alsa is fantastic, but can only handle one process feeding it audio at a time, so ends up pretty limited.
Pulseaudio was developed to address that, and generally introduce some much-needed features to the Linux desktop. Its major weakness is latency, it's got tons and tons of latency, and that is completely a no-go for musicians and audio professionals and the like, leading to
Jack, which is rather clunky and not easy to use like Pulse, but is "realtime" capable in terms of performance. It is what we audio perverts have been using for our DAWs and stuff for a long long time.
Jack's major hatefuel is that you have to connect up your inputs and outputs of the card as well as every app, using one of a number of patching manager apps (Qjackctl, Carla I think, uhh.. Cadence was/is another) with varying degrees of ease. Likewise all your midi connections. It was fiddly and pretty much a non-seller to any Windows ASIO or Mac [whatever] users.
This is all more or less solved with Pipewire. Along with the Pipewire server (which seems to prefer to run as a user rather than a system process, presumably for security) you need to run what is called a Session Manager (Wireguard the usual and best, so far as I know) which creates a more or less ASIO-like experience for native Pipewire apps, they just work, and also, as others have said, it emulates the previous three systems, while retaining the realtime or near-realtime performance of Jack.
Bottom line, every previous system had its place, but Pipewire is our master now. It takes care of us, precious.
@jpaskaruk Hey, the way you describe it, I'm in
gonna try that Session Manager thing, but I already have a question: My OS of choice (for now), Zorin, apparently comes with PipeWire & Wireplumber, but also runs it as JACK (so pipewire-jack I guess), meaning the device I select inside Reaper is named JACK - is that a good thing, or a bad thing that I have to somehow get rid of...? -
@jpaskaruk Hey, the way you describe it, I'm in
gonna try that Session Manager thing, but I already have a question: My OS of choice (for now), Zorin, apparently comes with PipeWire & Wireplumber, but also runs it as JACK (so pipewire-jack I guess), meaning the device I select inside Reaper is named JACK - is that a good thing, or a bad thing that I have to somehow get rid of...?@jwcph Yah, you can tell your apps it's anything you like, and Jack is generally what you like lol
I'm still struggling with native Pipewire a bit, moving anything I've traditionally used the root account for into user accounts is always a brain twister for me. But you always have the option to just use pipewire-alsa or pipewire-jack or pipewire-pulse, generally.
-
@jwcph Yah, you can tell your apps it's anything you like, and Jack is generally what you like lol
I'm still struggling with native Pipewire a bit, moving anything I've traditionally used the root account for into user accounts is always a brain twister for me. But you always have the option to just use pipewire-alsa or pipewire-jack or pipewire-pulse, generally.
@jpaskaruk You say *I* have the option - but am I going to have to arm-twist the OS? Because I don't think I have the skillz for that...
-
@jpaskaruk You say *I* have the option - but am I going to have to arm-twist the OS? Because I don't think I have the skillz for that...
@jwcph We're into the weeds a bit because I know nothing about Zorin or how attached you are to it.
But put it this way: if Zorin's arms appear to require twisting, if they have not implemented it in a way that is clearly documented (or else 100% works how Pipewire's devs intended, and therefore Pipewire's documentation will apply)... consider a different distro.

You can also DM me with more specific questions if you end up at a wall, I can probably help.
edit: I've been using NixOS the last year (not recommended for noobs, unless you are already a coder) but fundamentally I like Debian. But I am also willing to build from source (less hard than you might think in many cases) as needed to get bleeding edge stuff - Debian's reliability comes at a cost of everything being slightly older than you get from Ubuntu.
-
@jwcph We're into the weeds a bit because I know nothing about Zorin or how attached you are to it.
But put it this way: if Zorin's arms appear to require twisting, if they have not implemented it in a way that is clearly documented (or else 100% works how Pipewire's devs intended, and therefore Pipewire's documentation will apply)... consider a different distro.

You can also DM me with more specific questions if you end up at a wall, I can probably help.
edit: I've been using NixOS the last year (not recommended for noobs, unless you are already a coder) but fundamentally I like Debian. But I am also willing to build from source (less hard than you might think in many cases) as needed to get bleeding edge stuff - Debian's reliability comes at a cost of everything being slightly older than you get from Ubuntu.
@jpaskaruk thing is, I have absolutely no way of vetting these things - I have no choice but to trust that if an OS comes with something prepackaged, it's implemented correctly.
Not deeply attached but I don't want to build my Linux experience around this specific need; next laptop is for something else & I don't want to start from scratch every time...
Thank you either way though

I may take you up on it, my problem does seem rather specific 