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?
-
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 