Unifying Audio with Pipewire

ALSA. Jack. PulseAudio. MIDI. Musescore. Jamulus.

My musical interactions with Linux are not the most complex in the world, but they ain’t trivial. The complexity of the Linux audio landscape has been a stumbling block so far. Pipewire has just gotten me past that.

The title of this article implies that you need to do something other than install Pipewire. So far, this is not true. On my system, at least, it Just works.

sudo yum install pipewire pipewire-libjack pipewire-alsa pipewire-plugin-jack pipewire-pulseaudio

reboot. Pipewire has replaced pulse, and there is no need to stop pulse to run jack and get MIDI to work.

Pipewire and all my audio apps wired up

The above screen shot from QJackCtl‘s Graph view shows everything wired up. There are two MIDI input Devices connected via USB: EWI-USB and My Casio Electric piano. These are connected via MIDI to the FLUID Synth app (running behind QSynth).

By default, QSynth outputs it sound to the built in audio device. This works fine. However, I want it to go to Jamulus, so I hear with the Latency delay, and I know how in-sync I am with other players. To get this to work, you can see what I did on the lower QSynth box; the green connectors are now also connected to the Jamulus app. In order to hear only the sound through Jamulus, I can delete the left/right connectors to the Build-In Audio.

I can play audio from Musescore at the same time.

I can play something via Firefox at the same time.

I can do this all at once.

I finally feel like I have control of the audio subsystem on my Fedora machines. It is a pretty good feeling.

4 thoughts on “Unifying Audio with Pipewire

  1. Thanks for your feedback, what about latency of Jamulus using pipewire vs Jack (old way like F33) ?

  2. Thanks for your post !

    What about latency with Jamulus (Pipewire / aka new) vs legacy Jack/Jamulus ?
    Are you using a RT kernel (from copr linuxmao) ?

    Regards,
    Jérôme.

  3. It seems about the same, but I don’t have a solid apples-to-apples comparison. Pipewire is definietly solid for Jamuluis so far, so at least it is not a regression. And it is easier to set up, so I’m gonna call it a win.

    I need to do a side by side shoot out with the Mac.

  4. So, I needed to modify the Jack configuration options the same way as I did back in December: https://adam.younglogic.com/2020/12/jamulus-latency-fedora/ And that has gotten the latency down to something reasonable, but not really where I want it.
    Jamulus shows the overall round trip in ms. The server I am hitting has a ping time of 14 ms. The round trip was 112 ms before I tuned the Jack options (set Frames/Periso to 256 and Periods/Buffer to 3) and that got the latency down to 40ms. From Red to Yellow, almost green. I’d like to get that down more. I need to learn better how to tune for latency.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.