Carla plugin host: New sound generator for Linux
A Wonderful Noise
Thanks to the Carla plugin host, you can now integrate plugins in any format into any audio application. Carla also comes with a universal toolkit for modular sound generators.
Linux has several sophisticated applications that give musicians excellent options for recording, editing, and mixing sounds. Numerous autonomous synthesizers and effect devices also are available for generating the corresponding sounds. However for this purpose, many musicians prefer to use software that they can integrate directly into their production environment as a plugin.
One problem that musicians contend with is the five very different formats that plugins for Linux use. Many applications only support two or three of them, and Murphy's Law states that your favorite module is not going to work with your favorite application, because the formats don't match.
Portuguese developer Filipe Coelho (a.k.a. falkTX) has been working on eliminating this issue. His plugin host, called Carla, supports virtually any plugin capable of running on Linux and can be used itself as a plugin in two popular formats, LV2 and VST. A host software of this kind can load plugin modules, display their graphical interfaces, and integrate their processing capabilities into the host environment's data stream.
Since 2009, Coelho has built a reputation with optimizations and extensions in Ubuntu for musicians (see the box "More Tools by Filipe Coelho"). For example, his KXStudio package [1] includes a cleanly implemented, real-time-optimized kernel for Kubuntu. KXStudio also contains a collection of what were originally small configuration tools. By now, it includes full-blown applications that are far more than just minor utilities. Coelho has dubbed one of his more ambitious efforts Carla – and it is no less than a universal toolbox for modular sound generators.
More Tools by Filipe Coelho
The tools that Filipe Coelho offers in addition to Carla are grouped into the Cadence [2] collection (Figure 1). The Cadence package comes with Catia and Caudia, two connection managers for Jack applications, and sound card connections. In combination with the Cadence system window, in which you can configure and control Jack, these tools emulate the functionality of the popular QjackCtl tool. The meters and logs show the actions currently happening on the audio network. The render tool is extremely useful; it lets you record the current audible output signal without any patching. The XY Controller MIDI tool rounds off the toolkit.
Modular Principle
You can load plugins directly in the Carla main window, which looks very much like a typical rack in music electronics. Carla supports all formats available for Linux, including LV2 with the entire current feature set, and both native and Wine-integrated VST modules. The tool behind the rack displays all the audio and MIDI senders and receivers currently active on the system and all connections for the loaded plugins. In Patchbay, you can wire up everything in an intuitive virtual cabling interface.
Carla acts as a modular synthesizer: In other words, musicians can put together complex devices from various modules and save their setups. These can be both complex effects, such as guitar amps, and instruments with their own sound generators that can be played using MIDI keyboards or sequencer programs. If you use a sequencer, you will probably only want to open one program and save one setup, instead of needing to start and configure the synthesizer separately each time you want to generate some sounds.
Some excellent modular synthesizers for Linux existed before Carla, but Carla solves the problem of the pesky additional application: It not only loads all known plugin formats but can also be used as a plugin itself. The settings that you create in the Carla Patchbay plugin of the session can also be used in various DAW programs such as Ardour (Figure 2) or even Bitwig (see the box "Carla – Building Bridges").
In standalone operations, you can save and load your settings in the normal way as a Carla project file with an XML-style text format. However, loading or saving a setup does not work in plugin operation because this kind of activity is the domain of the plugin host. Coelho works around this problem in a very elegant way by allowing the plugin to write parameters and connections to a file by means of an internal export function. This feature was only fully implemented in the Carla version from February 12, 2015. Carla project files can be loaded from the file browser by double-clicking on the current setup on the left in Carla's plugin window (Figure 3).
Carla – Building Bridges
The commercial DAW Bitwig Studio [3] runs really well on Linux; however, it does not support the advanced LV2 format for plugins on Linux. Also, modules available as DLL libraries for Windows (see the box "Carla as a Shield") cannot be used directly in Bitwig, although many of them work perfectly on Linux thanks to Wine. Carla provides a solution here by working as a plugin that is supported by both programs (Figure 4). Carla Rack and Carla Patchbay can be used in all host applications that support native Linux VST modules.
In Bitwig, the native Gtk interfaces of LV2 plugins still cause a few issues. They are very slow to react and occasionally cause the plugin engine in Bitwig to crash (although you can restart it with no trouble). In cases like this, it makes sense to do without the native interfaces and resort to the controls integrated in Carla. They simply list the settings offered by the plugin as simple sliders and switches that look less spectacular and are – in part – less intuitive to use, but work very reliably. In both Ardour and in Bitwig, I was able to control all the plugins tested with the Carla interfaces without any trouble.
Carla as a Shield
Many Linux programs support VSTs in the Windows DLL format, however, virtually none of them do so as stably and completely as Carla. VST DLLs that cause Ardour to crash at launch time work easily in Carla. Even Windows plugins that do cause problems do not tend to bring Carla to its knees.
This means that you can experiment with DLL plugins without compromising the essential stability of audio workstations such as Ardour or Qtractor. Both in DAWs like Ardour and also in Carla, you can define paths to plugin directories.
To do this in Carla, define a new path by selecting Configure Carla | Paths | VST, preferably below your home directory. Next, move all the DLL plugins that you want to experiment with into this path. Make sure that there are no copies of these files in other VST directories, such as ~/.vst
.
Then, launch Carla and select Add Plugin to open the plugin browser. At the top right in this window, you will find the Refresh button (Figure 5). Enable only VST, Windows 32bit, and Windows 64bit in this window. Below Available Tools, you need to check the carla-discovery-win32 and carla-discovery-win64 boxes. Pressing Start finds the DLL plugins in the newly defined directory and removes any entries for other directories automatically registered previously from which you moved your DLL data.
From now on, Ardour and its consorts will no longer find the DLL files in question with their own Windows VST support, thus eliminating any problems associated with it. Despite this, you can still continue using these modules by using the Carla Patchbay plugin in Ardour and loading the DLL modules in Carla.
This is not quite the same as completely reloading the application from a file: Double-clicking a project file imports settings from the saved file to the extent possible in the scope of plugin operation. This gives you more or less the same feature set: All the parameter settings of the internal connections between modules are provided by this method at the push of a button. It is only the connections to the outside world (i.e., to the sound card and external programs) that are ignored because the host application protects them. The double-click loading technique also works in standalone mode.
In both scenarios, you should note that double-clicking a project file – in contrast to a conventional file – imports the settings from the project you clicked into the current file. In an existing setup, the steps thus load the new settings on top of the existing ones. That said, you can use the technique to save and load partial setups for special purposes, such as a master section that you repeatedly use, or a guitar amplifier with a tuner.
If you do not want to use the setup on top of what you already have, but as a new set, first press Remove All at top center in the toolbar to clean up before you click on a new project file.
Everything Is Possible
In addition to third-party plugin support, Carla also comes with a number of its own modules, which you will find by applying the Internal filter in the Add Plugin tool. Some of these plugins are simple tools for convenient operation of the plugin host, including simple example players (still experimental) for audio and MIDI data, a bypass module, and the Notes notepad.
Additionally, you'll find the simple Nekobi bass synth, a couple of well-designed effects with attractive graphical interfaces, and, to top it off, a plugin implementation of the powerful classic ZynAddSubFX synthesizer by Paul Nasca (Figure 6). Carla stores the parameters of the ZynAdd plugin internally, as you would expect from any plugin host. You can also load and save instrument presets that you created with the standalone version of ZynAddSubFX or its fork, Yoshimi.
Carla not only supports a versatile range of plugin formats, it also provides amazingly complete support for their features. For example, in LV2 plugins, it shows potential animations for envelope curves and the like. You can open the native graphical interfaces by clicking on the gear wheel symbol in the rack or from the plugin's context menu. In plugin mode, this feature was not always entirely stable in our lab. If you want to be absolutely certain, then you should use the interfaces generated by Carla itself for setting parameters; you can access these by clicking on the wrench icon (Figure 7).
Beyond this, the integrated interfaces offer another essential feature for virtual musical instruments. Next to each controller, you will find a box in which you can enter the number of a control. These controls exist on MIDI keyboards as rotary controls, switches, or slides. You can even connect MIDI apps for cell phones and tablets, assuming they can work with a Linux-capable network connection such as DS MIDI WiFi. Tools such as ALSA midi-dump show the number of the connected device when you move the controls, and you can then enter the number in Carla. From then on, the corresponding software parameter will actuate the control on your hardware instrument.
Although the rack view makes the plugin interfaces accessible, wiring is handled in the Patchbay behind it. You can see from this part of Carla that Coelho is familiar with the day-to-day problems of the Linux audio world: From the user's point of view, there are no differences here between the various approaches used to create audio components for Linux. Audio and MIDI signals can be patched in series and parallel in the Patchbay independent of their sources (Figure 8). See the "Solid Ground and Pitfalls" box for more details.
Solid Ground and Pitfalls
Carla supports stable use even in sensitive situations like live gigs. As a plugin host, however, it does battle with hundreds of imponderables in the plugins themselves. The good news is that I didn't experience a single problem with sound processing in our lab, and changing parameters via MIDI controllers also worked without any trouble. As a rule of thumb, you should load and use patches from files with Carla in sensitive situations, but do not attempt to process them.
When things went wrong in our lab, the problems were always associated with the plugins' own graphical interfaces, which Carla describes as "Custom UIs." Using the generic interfaces that Carla itself generated was trouble-free to a very great extent. The rotary controls directly in the interfaces can be a bit finicky (Figure 9). However, the buttons on the rack give you a simple but solid alternative to what can be temperamental native interfaces. This also applies to those marked with Edit, the wrench icon in the rack view, and the Edit entry in the context menu of the generic plugin interfaces.
The native interfaces, which are often very attractive and far more intuitive to use, also work very well in many cases. Problems occurred in particular with interfaces that use animations to demonstrate how the plugin works, such as the Calf chorus. Guitarix had one really nasty habit: Although it launched with what were correctly set internal parameters, the interface showed the basic settings every time you launched it. On request, the developer team came up with a fix that resolved the issue.
If you do happen to find a bug in a distribution version of Carla, one solution is to build your own version from the source code. This also applied to the bug that caused the crashes and shutdowns of some Calf plugins – as well as the problem described above with the animations in the chorus module. The developers immediately resolved both issues on request. Filipe Coelho released an official, new version of Carla with the matching bug fixes on February 12, 2015 [4]. Check out the repositories of the major distributions for more details.
Conclusions
Carla supports practically everything capable of generating and processing sound on Linux. In our lab, Carla proved to be absolutely exemplary when it came to stability and totally frugal in its use of system resources. If you work with sound on Linux, Carla is a program you definitely will not want to miss.
Infos
- KXStudio website: http://kxstudio.sourceforge.net/
- Cadence: http://kxstudio.sourceforge.net/Applications:Cadence
- Bitwig Studio: https://www.bitwig.com
- Carla download: http://kxstudio.sourceforge.net/Downloads
Buy this article as PDF
(incl. VAT)
Buy Linux Magazine
Subscribe to our Linux Newsletters
Find Linux and Open Source Jobs
Subscribe to our ADMIN Newsletters
Support Our Work
Linux Magazine content is made possible with support from readers like you. Please consider contributing when you’ve found an article to be beneficial.
News
-
AlmaLinux 10.0 Beta Released
The AlmaLinux OS Foundation has announced the availability of AlmaLinux 10.0 Beta ("Purple Lion") for all supported devices with significant changes.
-
Gnome 47.2 Now Available
Gnome 47.2 is now available for general use but don't expect much in the way of newness, as this is all about improvements and bug fixes.
-
Latest Cinnamon Desktop Releases with a Bold New Look
Just in time for the holidays, the developer of the Cinnamon desktop has shipped a new release to help spice up your eggnog with new features and a new look.
-
Armbian 24.11 Released with Expanded Hardware Support
If you've been waiting for Armbian to support OrangePi 5 Max and Radxa ROCK 5B+, the wait is over.
-
SUSE Renames Several Products for Better Name Recognition
SUSE has been a very powerful player in the European market, but it knows it must branch out to gain serious traction. Will a name change do the trick?
-
ESET Discovers New Linux Malware
WolfsBane is an all-in-one malware that has hit the Linux operating system and includes a dropper, a launcher, and a backdoor.
-
New Linux Kernel Patch Allows Forcing a CPU Mitigation
Even when CPU mitigations can consume precious CPU cycles, it might not be a bad idea to allow users to enable them, even if your machine isn't vulnerable.
-
Red Hat Enterprise Linux 9.5 Released
Notify your friends, loved ones, and colleagues that the latest version of RHEL is available with plenty of enhancements.
-
Linux Sees Massive Performance Increase from a Single Line of Code
With one line of code, Intel was able to increase the performance of the Linux kernel by 4,000 percent.
-
Fedora KDE Approved as an Official Spin
If you prefer the Plasma desktop environment and the Fedora distribution, you're in luck because there's now an official spin that is listed on the same level as the Fedora Workstation edition.