(You can have pipewire and native JACK installed at the same time)
On Linux, there's multiple audio systems. alsa, pulseaudio, and JACK. JACK is meant for professional audio. With pipewire, we have another one that can act as all of the above, but internally, everything is on the same level.
With native JACK, we would need to start JACK before launching the game. With pipewire-jack, we wouldn't have to do that, but it often acts strange and it can lead to the game crashing immediately. Finding the cause is usually harder.
Bottom line what I think is: pipewire-jack integrates better, native JACK is more reliable. I'm probably going with native JACK.
Due to the Steam Runtime, JACK usually doesn't work with Steam games. These are ways to make them work with it.
LD_PRELOAD is going to be faster to set up, but you can do either one or both.
I've heard of cases where the audio devices don't connect reliably when using LD_PRELOAD.
The start script takes a bit longer, but is in my opinion more reliable in this situation.
In some cases, one of the approaches doesn't work on a specific distro. I've put warnings there. In this case, obviously use the one that works.
Native JACK it is. LD_PRELOAD or start script is up to your preference.
The rest of these statements will be for pipewire users.
alsa. It's also the one with the worst audio and latency. You might want to look at the next question though.
Native JACK with LD_PRELOAD.
Native JACK with either one of the launch methods.
There's a way to use multiple devices with native JACK, but I haven't looked into it too much.
If you have an audio interface with multiple inputs, you can use either one.
If you don't, I recommend pipewire-jack.
- pipewire-jack: works just fine.
- pipewire + native JACK: On Arch-based, install
pipewire-jack-client
. For Debian, this should be something similar. I haven't found anything for Fedora yet. Start JACK, then runsystemctl --user restart pipewire-pulse.service
. For the neccesary connections to be there from the start, you'd probably have to start JACK on boot.
Just saying, pressing 2 buttons makes this close to possible without giving you headaches. But if you want to...
Not impossible, but additional effort (and ability to write shell scripts) needed. It would be something along the lines of
- Native JACK
- Start script
- edit start script, check if JACK is running and start it if not (you can get the command from the "Messages" window from QjackCtl)
- maybe stop JACK after playing
If you want to do something similar with pipewire-jack, you can do one optimization by adding this line to the start script:
pavucontrol & sleep 2
Long answer:
- LD_PRELOAD and start-script can exist side by side on the same machine and switched easily.
- As far as I can tell, the wineasio files are identical, no matter if you built them having pipewire-jack or native JACK installed, so in theory, you should be able to change between these two and just start the game.