My thoughts on Slackware, life and everything

Tag: daw (Page 1 of 4)

DAW question for Slackware 15.1: Pipewire or JACK Audio?

I bought a new laptop to do some more serious work on, and while I was setting up the audio, installing JACK Audio Server and friends, I wondered what would be the proper path forward for a Slackware DAW (Digital Audio Workstation) when Slackware 15.1 is released with all the improvements over the 15.0 stable release.
Should I stick with JACK or look into Pipewire to get rid of the Jack server? Jack can be a bit finicky at times on this new laptop. The audio hardware uses Sound Open Firmware, which is new to me and often I need to restart JACK once or twice via QJackCtl before I actually get sound out of the laptop.

To make an informed decision, let’s first examine what PipeWire actually aims to improve. I confess that because of what I learnt during  my research, the article is a bit biased but hey! Feel free to contribute to the discussion at the bottom of the page!

State of affairs

Linux audio has historically been a layered affair. ALSA talks to the hardware, and one (or more) sound servers sit on top:

  • PulseAudio: handles desktop/consumer audio mixing, Bluetooth, networked audio. As we all know, its drawback is a high latency. It’s definitely not “DAW-friendly”.
  • JACK: the professional audio server. It delivers ultra-low latency and a flexible routing between apps. But it comes with a steep learning curve and is not trivial to manage. It is rather hostile to consumer-grade applications that rely on Pulseaudio, unless you bridge them.
  • PipeWire: built as the solution to all of the above problems, aiming to replace both and also (importantly) acting as a drop-in for each.

This is how the audio stack on Linux looks from the point of past/present and future:


You see where I am going…

 Pros of switching to PipeWire for a DAW

  1. One server to rule them all
    The benefit that I see is the elimination of complexity. We would get rid of having to run two parallel audio servers. In the legacy setup, PulseAudio mostly handles browser audio, Bluetooth, and desktop sounds while JACK is running the DAW. Getting them to cooperate requires that you install a Pulse-JACK bridge (via the pulseaudio-jack package) which is a temperamental setup. PipeWire replaces both of those audio servers with a single daemon that implements all three protocols simultaneously via pipewire-pulse, pipewire-jack, and pipewire-alsa compatibility modules.
  2. JACK applications just work, unmodified
    PipeWire aims to offer capture and playback for both audio (and video, let’s not forget!) with minimal latency and support for PulseAudio, JACK, ALSA and GStreamer-based applications. This means that programs like Ardour, Carla, Hydrogen, Guitarix, and every other piece of software I added to my Slackware DAW project will connect to PipeWire’s JACK compatibility layer without recompilation. The ABI is compatible; programs don’t know they’re talking to PipeWire.
  3. Latency has matured significantly
    Early PipeWire had a reputation for higher latency than native JACK. That criticism is much less valid today. Already long before the 1.x releases, the latency was reduced as low as using just JACK on top of ALSA.  PipeWire supports the same realtime thread priorities and can be tuned with “quantum” (buffer size) settings comparable to JACK’s “period/frames” parameters.
  4. Video routing and screen capture come along for free
    The daemon can be configured to be both an audio server (with PulseAudio and JACK features) and a video capture server. This matters for screen-casting, OBS, webcams, and Wayland portal-based screen sharing. They all go through the same flow that handles your audio.
  5. Flatpak and containerised applications work properly
    Yeah, I use Flatpak. Particularly to have a Signal messaging app on my desktop. Multimedia is an issue there. But PipeWire uses a Polkit-like security model, asking Flatpak or Wayland for permission to record screen or audio, rather than relying on audio/video group membership.
    This is a solution for a genuine pain point with JACK plus PulseAudio in any sandboxed context.
  6. WirePlumber provides intelligent session management
    The PipeWire session manager WirePlumber (which replaced the older pipewire-media-session) automatically handles device routing decisions. This means for instance, you simply plug in a USB audio interface and It Just Works. With JACK you would have had to restart the server or run manual scripts.

Caveats (Especially for a DAW)

  1. Extreme latency requirements still favour native JACK
    For professional studio scenarios demanding the absolute floor of latency (sub-8ms round trips, preferably below 5ms even, dense plugin chains) the picture is more nuanced. Under JACK, you can isolate cores, prioritize IRQs, and force absolute determinism. Under PipeWire, your latency will jump if anything interrupts real-time threads. PipeWire is getting better, but native JACK under a PREEMPT_RT kernel remains the gold standard for this specific use case.
    For most home studio and ‘prosumer’ DAW setups, you will not notice the difference.
  2. Configuration requires a different mental model
    Well what’s new. I am still not fully comfortable using JACK and QJackCtl’s patchbay metaphor. PipeWire on the other hand uses WirePlumber for policy management. Quantum (buffer size) and sample rate tuning is done differently. There’s yet another learning curve.
  3. Slackware’s ‘pipewire-enable.sh’ script has a precondition you must not ignore
    An important operational point is the check whether JACK is installed and the daemon is running. If that’s the case you should opt in consciously and disable JACK server manually, not have it silently taken over by PipeWire.

Is the JACK Server Still Needed?

The short answer: no, not as a running daemon. But of course there are layers below that answer: what about the runtime dependency on JACK because all those audio applications were compiled against JACK?
When pipewire-jack is installed (my add-on to the pipewire package in Slackware), it provides a drop-in JACK compatibility library. Programs that link against libjack.so will, after PipeWire is enabled, actually be talking to PipeWire under the hood. The jackd process itself does not need to run.
What does that look like:

  • libjack.so is the library that applications link against. It is still needed because it provides the ABI that JACK-aware programs call into. PipeWire provides its own version of this library when pipewire-jack is installed.
  • jackd / jackdbus is the server binary. This is no longer needed as a running process once PipeWire takes over as the audio server.
  • qjackctl is the control GUI for JACK. Fortunately this can be replaced by qpwgraph (from the same author who created qjackctl). Qpwgraph is the PipeWire-native patchbay application, obviously inspired directly by qjackctl.

And therefore the practical implication: if you have JACK installed on your Slackware DAW system alongside PipeWire, you need to ensure the JACK server does not start at login while PipeWire does start. The “pipewire-enable.sh” script in Slackware handles the PipeWire side; you simply should not start the daemon, jackd.

Connecting it all – the patchbay

What are the considerations when moving from qjackctl to qpwgraph?
As I said earlier, the author of qjackctl also wrote qpwgraph and the similarities are obious. Qpwgraph is a Qt-based graph and patchbay for PipeWire, and it saves your wire sets. It is the natural successor to qjackctl as part of a  DAW project that uses PipeWIre. The interface is visually very similar to qjackctl’s patchbay view, but it shows PipeWire’s full graph: the audio ports, MIDI ports, and video streams; all together. The connections that you create are saved by WirePlumber and restored on the next login.
If you still prefer qjackctl, that is not an issue because it can also connect to PipeWire via the JACK emulation layer.Its JACK-specific transport controls and the JACK server start/stop buttons become meaningless however.

What’s in the future for Slackware DAW

Given all of the above, this is what I think:

If you run an amateur home studio or you are a musician whose priority is “everything just works with minimal fuss“, switching from JACK to PipeWire looks like the future. Run ‘pipewire-enable.sh‘ once, install qpwgraph (it’s already in my repository) and use it as your new patchbay.
After you switch to PipeWire, the “Pro Audio” profile in pavucontrol (yes, it is a Pulseaudio tool) used in combination with a PipeWire audio server provides raw, direct access to all available input/output channels on your USB audio interface, bypassing standard stereo mixer restrictions. It is ideal for professional interfaces with multiple inputs/outputs, supporting low-latency and enabling advanced routing for your DAW.

On the other side of the spectrum you have your ultra-low-latency professional use. It’s the use-case for a dedicated professional recording studio, where you would be looking at sub-5ms latency requirements, a PREEMPT_RT kernel, hardware with specific JACK-tuned drivers. In this scenario, the traditional JACK-only configuration remains the preferred setup of your DAW.

The good news is that PipeWire does not break the JACK ecosystem. It absorbs it. If you are comfortable having a JACK-based signal flow (Carla, Ardour, Guitarix chains), you can migrate to PipeWire transparently and your setups will continue working. The most obvious difference being that there is no more need to manually start a JACK server or maintain a bridge to PulseAudio.

Your ideas

My biased story tried to convince you that a switch from JACK to Pipewire in Slackware DAW may be the right thing to do, but I also write this to convince myself 🙂 I am very much a person of “don’t try to fix what is not broken” but I see the benefits for most of us, Slackware users.

Still, there is a hard choice to be made. Should I recompile all my audio applications in the absense of JACK package to get rid of that dependency altogether? Or should I keep JACK, and keep all packages dependent on its libraries, and leave it up to you, the user, to run “pipewire-enable.sh” and replace qjackctl with qpwgraph? The former is cleaner but the latter gives more options.
Let me know your thoughts in the comments section below!

Eric

Your input requested for DAW Live

It has been a long time since I had a serious look at my audio software set, and the Slackware DAW Live ISO image which is meant to showcase all of that software.

Life interfered and priorities shifted.

Now I am looking at 2025 and the Christmas holiday week which precedes it, and am pondering where to put my energy and time. Considering the lack of clarity about the next stable Slackware release (something which really annoyed me in the few years leading up to Slackware 15.0) and the relative certainty that KDE Plasma 6 is not going to be included in that next release, I am not looking forward to kickstarting my obsolete ktown repository for Plasma 6. It would eat up a lot of my time and I am a happy Plasma 5 user.
So, I decided it would be more productive and rewarding to revive the DAW and audio software project.

I will not focus on a refresher of my Slackware 15 based DAW Live Edition. I want to switch to Slackware -current, realizing full well that this may cause new frustrations along the way when stuff breaks as a result of a Slackware update, but I really want to experiment with Pipewire – for sure as a replacement for Pulseaudio but perhaps also as a replacement for the Jack Audio Toolkit. Who knows.

However, I have not been playing/experimenting with Slackware’s sound system since 2022, the whole Pipewire adventure has passed me by. If I want to rebuild & refresh that large set of software, I need to start with the basics and that is to get a low-latency ‘pro’ sound subsystem off the ground that I can understand and adapt to the needs of a Live Edition.

HELP!

Therefore a request to you, blog regulars, to help me understand how to get rid of Pulseaudo in Slackware and replace it with Pipewire. How does Jack still fit in this configuration? Should it remain the main sound server? Should Pipewire replace it, providing the binary API to Jack-enabled applications? Should the choice to have Pipewire or Jack as the main sound server be something you would want to make after login?

Anything you have already mastered and all the bugs and nasties that you have already eradicated, will save me some precious time and give me more motivation to restart the project during my Christmas break.  Use the comments section below to describe your challenges, your solutions and your resulting setup; or link to pages / pastebins that contain Slackware-specific information.

And somewhat related, since I am not a musician or audio technician: I want to understand better how to connect the audio software to audio hardware: how do you link up a DAW like Ardour to an external USB sound card, a MIDI controller keyboard, hardware synths, microphones etc.
Some synths present themselves as another external USB sound card as well – how do you deal with that when you already route your audio through your FocusRite Scarlett? It boggles the mind when you have to try and make sense of it when you do not have music-making friends in physical proximity.

Eventually I want to have a working studio in my attic and be able to create music, not just create a music production enviroment like Slackware DAW Live.

I would love to read all your feedback and hopefully it will be enough already next weekend to help me startup when my off-week starts 🙂

Cheers, Eric

Liveslak 1.8.0 – more filesystems supported, lots of fixes

Liveslak updates! Quite soon after my August ISO refresh, I used some free moments to implement a request of sorts and fix some longstanding bugs.
Version 1.8.0 of the liveslak scripts is now available, containing these enhancements and fixes.
Links to the liveslak git repository and download locations are at the bottom of this post. Of course, the new functionality and fixes are also present in a fresh batch of Slackware Live ISO images.

New features of liveslak 1.8.0

  • LUKS encrypted containers for your homedirectory and for persistence are now supporting many more filesystems, not just ext2/4 but also btrfs, f2fs, jfs or xfs. The lack of f2fs support was mentioned by a visitor of this blog and I thought that was useful feedback.
    The accompanying scripts iso2usb.sh and isocomp.sh now support this filesystem choice via a new ‘-F‘ switch.
    Note that the Linux partition of a USB Live thumbdrive remains ext4 formatted, because liveslak uses extlinux to boot on a BIOS computer.
  • The upslak.sh script can now extend the size of the  LUKS encrypted container files on your USB thumbdrive, in case you run out of storage there.
  • I fixed the pxeserver script and expanded its functionality:
    • PXE boot of a UEFI computer finally works.
      Note that this may not work for you out of the box, because there are two implementations in dnsmasq to support UEFI PXE boot… and sometimes, one will work and the other won’t. So, you may have to open the /usr/local/sbin/pxeserver script in an editor and look for the section where a number of ‘dhcp-match‘ and ‘dhcp-boot‘ lines is commented out. If you remove the comment characters from these 8 lines and instead, add a comment character ‘#’ in front of the ‘dhcp-match‘ and ‘pxe-service‘ lines a bit higher up, your UEFI computer might actually succeed in booting over the network.
    • NAT firewalling can be optionally enabled in case PXE clients wouldn’t have Internet access otherwise.
  • I fixed the hang during shutdown/reboot when liveslak is a PXE client.
  • I fixed UEFI boot using GRUB when the live ISO had been ‘dd’-ed or ‘cp’-ed directly to a USB thumbdrive. You would end at the GRUB prompt instead of booting into the OS.
    It took me quite a while because this bug was introduced in Feb 2019 (!), and I never found the time to investigate. Eventually looking into it during a weekend of solitude caused an epiphany.
  • I added support for a dark theme in KDE Plasma based ISOs, with the LEAN ISO as an example (that one also gets a new login/desktop background image taken from my photo collection with every ISO refresh).
  • Lots of other small fixes and enhancements, read the Git log for more information.

Booting from an on-disk ISO file

Liveslak supports Ventoy, a multi-boot manager for removable media like USB thumbdrives which lets you boot any ISO image you store on the disk, selecting from a GRUB menu it creates on the fly.
Because liveslak  implements the “Ventoy-compatible” guideline, any Slackware Live ISO works out of the box on Ventoy. Support for encrypted persistence and homedirectory containers on a Ventoy disk is offered by the ISO companion script ‘isocomp.sh‘.
You can find the details in the git commit message.

Install Slackware using a liveslak ISO

A quick reminder that you can use a liveslak ISO to install Slackware to your hard drive from its official package repository (using a network installation from a HTTP, FTP, NFS or Samba server).
You can also install the actual content of the Live ISO to your harddisk if you like. In this case all “live aspects” will be skipped during the copy, so that you will in fact end up with a completely regular Slackware on your harddisk.
The program to run these installations is available on all liveslak ISOs and is called ‘setup2hd‘. It is derived from the ‘setup‘ program of a Slackware install media, but has some nice enhancements: it launches cfdisk/cgdisk for you to partition your disks, lets you create a regular user, and allows you to configure a basic firewall.
Best of all, you can run setup2hd in an X-terminal and let the installer chomp through the packages while you browse the internet, watch a video or perform any other kind of leisurely activities on your Live OS.

And by the way: booting Slackware Live is the only way (using setup2hd) to install the official Slackware distro from a network server across a wireless connection. The official Slackware installer only supports wired network connections.

Get liveslak ISOs

The various variants of Slackware Live Edition can be found in the “latest” subdirectory at https://download.liveslak.org/ or its US mirror https://us.liveslak.org/ . A fast UK mirror is provided by Darren Austin at https://slackware.uk/liveslak/ .
You’ll be able to download ISO Live images of 32bit and 64bit Slackware proper, also of the small XFCE variant for (both architectures), and then CINNAMON, DAW, LEAN and MATE ISOs that only come in 64bits.
Big thanks to Willy Sudiarto Raharjo (willysr) for maintaining the Mate and Cinnamon Slackware package repositories.
Also have a look in the “bonus” subdirectory! There you’ll find Nvidia graphics and Broadcom wireless binary drivers, Wine 8 and multilib modules to add if you use the persistent version of liveslak.

All ISOs containing a 64bit Live Slackware have support for SecureBoot.

Get liveslak sources

The liveslak project is hosted in git. Its browsable cgit interface is here: https://git.liveslak.org/liveslak/

A set of the liveslak scripts can also be downloaded from http://www.slackware.com/~alien/liveslak/ or https://slackware.nl/people/alien/liveslak/

Have fun! Eric

August’23 refresh of Slackware Live ISO collection

Last weekend I pushed version 1.7.0.1 of liveslak code to my git repository and used it to generate a fresh batch of Slackware Live ISO images.

Main change between 1.7.0 and 1.7.0.1 is fixing the broken Ventoy support on UEFI computers. Slackware Live ISO works out of the box on Ventoy again. The documentation will help you setup persistence for the live ISO on a Ventoy disk.

Get liveslak ISOs

The various variants of Slackware Live Edition can be found in the “latest” subdirectory at https://download.liveslak.org/ or its US mirror https://us.liveslak.org/ . A fast UK mirror is provided by Darren Austin at https://slackware.uk/liveslak/ .
You’ll be able to download ISO Live images of 32bit and 64bit Slackware proper, also of the small XFCE variant for (both architectures), and then CINNAMON, DAW, LEAN and MATE ISOs that only come in 64bits.
The DAW ISO is based on Slackware 15.0 (including all patches to date) to offer a sense of stability, whereas all the other ISOs are based on Slackware-current update “Fri Aug 18 18:37:33 UTC 2023“.

All ISOs containing a 64bit Slackware have support for SecureBoot.

Also have a look in the “bonus” subdirectory! There’s Nvidia binary graphics driver, Broadcom STA wirelesss driver, Wine 8 and multilib modules to add if you use the persistent version of liveslak.

Get liveslak sources

The liveslak project is hosted in git. Its browsable cgit interface is here: https://git.liveslak.org/liveslak/

A set of the liveslak scripts can also be downloaded from http://www.slackware.com/~alien/liveslak/ or https://slackware.nl/people/alien/liveslak/

Have fun! Eric

Surge XT synthesizer added to my Slackware DAW software collection

The Surge XT synthesizer was recently mentioned in the comments section of another post, and I thought, why not add it to my DAW collection?
So, here it is 😉

Surge XT is a virtual synthesizer originally released as “Surge” into open source by creator Claes Johanson in September 2018. Since then, it is maintained by a group of volunteers. The most recent release of Surge XT is just a month old and this version 1.2.3 is the one I packaged for you, ready for Slackware 15.0 and -current and in 32bit as well as 64bit flavors. Find it via slakfinder.

If you have my “daw_base” package installed (and you should if you intend to use any of my DAW packages!) the package adds itself into the “Slackware DAW” menu in Multimedia (unless if you use the standard Kicker menu of Plasma5 which does not adhere to Linux interface standards, Surge XT will just install itself straight into the Multimedia menu).
Surge XT can be used as a LV2, VST3 or CLAP plug-in instrument in a host program like Ardour. If you want a quick intro into the synth, check out this Music Radar page.

Let’s share a screenshot of its main interface:

Followed by its “about” window:

This package was not trivial to create. Especially adding the LV2 plugin support was not easy. Surge source releases starting with 1.3.0 will have LV2 plugin support out of the box. For the 1.2.3 release I had to add a fork of the JUCE source code which adds that support. This functionality is folded back into a newer version of JUCE which is not yet used by Surge 1.2.x.
I don’t know if I did the packaging 100% correct, so let me know where you stumble. You can try the Flatpak version to compare if you are already an experienced user of Surge, which would help me with potential improvements 😉 I have an article on adding Flatpak support to Slackware.
And to be honest, I have no clue yet how to use Surge, so by all means try it out and tell me your story. Ideally, also share some of the music you created using this synth!

A quick reminder about this old “pro tip” for easy upgrade/installation:
If you use slackpkg together with the slackpkg+ extension, you can download a DAW template here: http://www.slackware.com/~alien/tools/templates/daw.template containing a full list of all my DAW packages. Copy this template file into “/etc/slackpkg/templates/” and use the command “slackpkg update; slackpkg install-template daw; slackpkg upgrade-all” to get all those new packages installed effortlessly, and obtain all the upgrades as well.
And if you installed my daw_base package, this template will already be available in “/etc/slackpkg/templates/”!

Enjoy, Eric

« Older posts

© 2026 Alien Pastures

Theme by Anders NorenUp ↑