Carla is a fully-featured modular audio plugin host, with support for many audio drivers and plugin formats.
It has some nice features like transport control, automation of parameters via MIDI CC and remote control over OSC.
Carla currently supports LADSPA (including LRDF), DSSI, LV2, VST2, VST3 and AU plugin formats, plus SF2 and SFZ file support.
It uses JACK as the default and preferred audio driver but also supports native drivers like ALSA, DirectSound or CoreAudio.
There are 4 types of engine processing:
Single-client: (JACK driver only)
Same as Multi-client, except that all JACK ports belong to a single master client.
This is needed when a setup doesn’t support multi-client JACK apps, such as LADISH.
Multi-client: (JACK driver only)
Every single plugin is exposed as a new JACK client. Audio and MIDI ports are registered as needed.
Plugins are processed in order, from top to bottom.
Plugins with non-stereo audio channels are not supported, but a forced-stereo option is available for Mono ones.
Modular patchbay mode, just like in JACK Multi-client and many other modular applications.
Every plugin gets its own canvas group and ports allowing you to interconnect plugin audio and MIDI.
Goals and Vision
Carla has the goal of being a simple and quick-to-use libre and open-source modular plugin host.
This means several things:
Be 100% free (free in price while also being free to use, modify and redistribute)
Have its main features be simple to use
Be fast from starting up to running plugins and having sound (assuming the user knows what to do)
While simple in nature, a dumb-down host is not the target.
Rather, it aims to be a simple tool that has advanced features under the hood, toggled by the user as needed.
The basic functionality should be easily accessible and intuitive, while not making it hard for advanced users to do what they want.
Carla’s main functionality should be all about plugins and modularity, with Rack-mode (stereo top-down processing) as a bonus.
In order to achieve this, it should load as many plugin formats as possible and allow inter-connectivity between them.
Plugin bridges are used to load even more plugin formats and types, sometimes even those that are not native to the current platform.
Carla should make it possible for others to use it within their projects.
This is achieved by means of a simple API, plus Carla itself as a plugin.
Remote control (over the network), while not its focus, should be possible.
The backend can be running in one machine, while the frontend is in another.
This is related to the previous point, where Carla should be usable by other projects.
Being able to be remotely controlled allows Carla to run in embedded systems.
Backwards-compatibility is a must.
Carla should never implement a new feature that breaks old projects, nor making new projects unloadable in old versions.
While a project with new features obviously won’t load those in old Carla versions, the “old” supported features have to remain backwards-compatible.
Carla should attempt to correct plugin mistakes whenever possible, so it runs as many of them as possible. A warning is logged in such cases.
The target is to not annoy users that are unable to fix things by themselves (they cannot write code usually).
The logged warnings should be clear enough that 3rd party developers understand what they have to fix after reading them.
Carla should also be a great tool for debugging and developing new plugins.
This is made possible by providing ways to run without audio, aka dummy driver, in order to detect leaks and memory issues.
It also provides a way to test a single plugin and/or its custom UI.
Finally, Carla should be able to be compiled and run in as many formats and platforms as possible.
This means Linux, macOS and Windows as first-class platforms, but also be able to run in BSDs, HaikuOS and any other POSIX-compliant system.
In terms of formats, this means running as Standalone and plugin (LV2 and VST2 minimum), while also providing its own API to easily extend it to more places.
As a final note, it is worth saying that the personal goal of its author is to be able to make full songs within this single tool.
This often involves running other tools inside Carla, but everything is still contained within it and managed by it.
New features and requirements might be added to Carla as a way to achieve this goal.
The first time you run Carla you’ll most likely want to scan for plugins.
You can configure your plugin folders in the settings if needed. When done, use “Add New Plugin” in the toolbar, then press the “Refresh” button.
Because Carla is a somewhat complex application, a single page is not enough to cover it entirely.
(We’re currently writing the rest of the pages so be back soon!)