The State Of Linux Music Production

Been messing about with my old MIDI keyboard again, after a long while putting it aside. It now complains about a “low battery” warning, but I think that only affects the onboard sound settings, which I’m not particularly fussed about. I got a USB-MIDI interface a few years back, and I can use that with the keyboard to drive sound sources on my main machine. But things have changed in the Linux music world since the last time I tried this (at least on Debian). JACK and PulseAudio have both been replaced by this new thing, PipeWire, which is supposed to handle video, audio and MIDI routing through a common architecture. So I no longer have to start up jackd when I want to switch to music-production mode (in fact, trying to run jackd under PipeWire will screw up your audio something awful). Instead, patching between sources and sinks is done via WirePlumber, for which a convenient GUI frontend is available in the form of qpwgraph. All the main PipeWire-related processes are managed as user-level services via systemd. One thing hasn’t changed, and that is the incompatibility between ALSA MIDI ports and JACK MIDI ports: that USB-MIDI interface only appears to the system as ports of the ALSA kind, whereas JACK-aware apps want to accept MIDI data via ports of the JACK kind. So I still have to start up the old “a2jmidid” program to provide a bridge between these two. qpwgraph shows all these different kinds of entities, each labelled with its type: “ALSA”, “PW” (PipeWire) or “JACK”. The latter two can be connected directly to one another, while ALSA ports can only be connected to ALSA ports. The colour-coding--purple for ALSA MIDI ports, red for JACK/PipeWire MIDI, green for JACK/PipeWire audio--is a hint that you can only connect matching colours. Some JACK-aware apps still have trouble running under PipeWire; for these, there is the “pw-jack” tool, which substitutes the JACK dynamic libraries with ones that hook directly into PipeWire before launching the specified app. E.g. I had to run a2jmidid with pw-jack a2jmidid Also, the command pw-jack zynaddsubfx -O jack tells ZynAddSubFX to run with its JACK interface active, and I can route events from my keyboard to it via the intermediary nodes automatically created by a2jmidid. Don’t forget to hook up its audio output terminals to the box representing my speakers, and voilà, I can make sound.
participants (1)
-
Lawrence D'Oliveiro