A while back I started learning audio production, this was done on an old MacBook Pro (Intel Generation) with Ableton Lite. But when I found out about Bitwig, I realized I could do this on Linux. First time I was using PopOS, but experienced frequent xruns, even when the CPU wasn’t fully utilized. This led me to try a number of things, like setting the appropriate pipewire quantum settings and bitrate, also tried JACK and I thought my laptop was broken, but I tried Project Bluefin (an OS based on Universal Blue, a bootc image), and the problem went away, I still got audio pops and stutters when the CPU was taxed, but that is from when say trying to compile something while the music is playing. I have read that fedora is better than Ubuntu for realtime audio, so it is worth considering if you would like to do the same, but a lot of audio software on linux targets Ubuntu. I haven’t tried using Arch for it, but there are a lot of packages on the AUR (Arch User Repository) including a Bitwig package.
Using WINE to run Windows VST’s
In the DAW (Digital Audio Workstation) world, there are plugins called VST’s, they now have a standard called CLAP too. These plugins can be anything from a virtual instrument, to say a sequencer or MIDI generator. Some companies write VST’s for Linux, but most just target Windows or macOS (macOS being the largest used OS for music production). However, there is the possibility to run Windows based VST’s under WINE (Wine is not an emulator) and bridge them to the DAW using certain utilities, in my case I use Yabridge, which makes it relatively simple. You simply install the software, they have a guide on their GitHub, and then add your VST’s install path using the command yabridgectl add <DIRECTORY>, this then adds the location to Yabridge for indexing, running yabridgectl sync will scan the directory and add the plugins to a directory called yabridge in the ~/.vst folder, which can be added to the DAW’s locations to scan. In my case I use the excellent bottles application to run a WINE instance in flatpak for all my VST’s to be installed to. The advantage to this is that bottles has a native backup/import functionality to back up bottles, so if I reinstall my machine, I can simply import my backed up bottle and be up and running quickly without having to reinstall all my VST’s, of course I always prefer to use a Linux native VST/CLAP as it provides better performance, but the backup/import feature of bottles makes it, so I don’t have to reinstall all the VST’s on a fresh installation. In the case of Linux I have to reinstall manually.
Running Bitwig on a bootc based OS
So in the case of a bootc based image, installation of software is done via flatpak or containers, you do not have the ability to install system packages, unless you run a customized image (which I do), but I like to not clutter the base image with software and stick to the established patterns, but Bitwig ships a debian version of there software, which won’t install on fedora anyway. To allow me to use Bitwig, I use the container pattern, choosing to run it in a distrobox container (Distrobox allows you to run the userland of any linux distro, providing they have an image). There is a script that builds a podman container, then you can create a distrobox from the resulting image, the script is here: https://github.com/xynydev/BitwigBox. This means getting Bitwig running is very simple, note Bitwig support does not support this method of running the software, but I have had no issues, and since podman shares the host kernel, realtime privileges apply to the container too, which is important if trying to use Yabridge, as you will get a notification every time a plugin is loaded if the appropriate memory limit isn’t set.
Using Bottles to manage your VST’s
There is a script that was created, that requires system wine and bottles to be installed, it can be found here: https://github.com/microfortnight/yabridge-bottles-wineloader, setup is simple, it requires that the script be installed to wherever you would like, in my case ~/.local/bin, and the WINELOADER variable to be set (Which points to the script), also yq has to be installed which is used for parsing the bottles yaml file. In my case since I am using distrobox, the WINELOADER variable had to be set when launching Bitwig, to do this, I created a wrapper script that set’s the WINELOADER variable then launches Bitwig. At first, I tried to just edit the desktop file that distrobox export created, but it’s not possible to specify a variable. My Bitwig desktop file was modified to run the wrapper script, which initializes the environment and launches Bitwig. Here is the script if you would like to use it:
export WINELOADER="$HOME/.local/bin/wineloader.sh"
exec bitwig-studio
Example desktop file:
[Desktop Entry]
Version=1.5
Type=Application
Name=Bitwig Studio (on bitwigbox)
GenericName=Digital Audio Workstation (on bitwigbox)
NoDisplay=false
Comment=Modern music production and performance
Icon=com.bitwig.BitwigStudio
DBusActivatable=false
Exec=/home/linuxbrew/.linuxbrew/bin/distrobox-enter -n bitwigbox -- /home/username/BitwigBox/.local/bin/bitwig-launcher.sh
Terminal=false
MimeType=application/bitwig-clip;application/bitwig-device;application/bitwig-package;application/bitwig-preset;application/bitwig-project;application/bitwig-scene;application/bitwig-template;application/bitwig-extension;application/bitwig-remote-controls;application/bitwig-module;application/bitwig-modulator;application/vnd.bitwig.dawproject
Categories=AudioVideo;Music;Audio;Sequencer;Midi;Mixer;Player;Recorder
Keywords=daw;bitwig;audio;midi
StartupNotify=true
StartupWMClass=com.bitwig.BitwigStudio
Linux Audio Initiative
The Linux audio initiative is aimed at encouraging companies to support Linux for their software, the website is here: https://linuxaudio.dev/. Hopefully this will encourage companies to support Linux so it is a first class citizen in the audio world.
Where you can find my music
You can check out my music here.
Join the chat!
Because Disqus requires cookies, this site doesn't automatically load comments. Clicking the accept button below will set a cookie to remember your preference to enable comments for 90 days, after which, you will need to click accept again.