Home KXStudio > News

KXStudio : News

> Breaking changes in Carla Plugin Host
On 2017-11-21 by falkTX

Hello everyone, I have some bad and good news about Carla.
If you've been following the development on the git repository you likely know what this is about.
There were some major changes done to Carla's code base in the past few days.

The biggest change is the removal of the Juce library.
The reasons for this are well known by some developers, but I'll not write about them here.
After looking around for alternatives, I decided to fork an older GPLv2 compatible version of Juce and strip it down to the really essential parts needed to get Carla to build and run - even if it meant losing some of the features.
The possibility to change to an entirely different C++ framework crossed my mind, but the amount of effort and breaking changes would be too big.
I called the end result 'water'. You can say Carla doesn't need Juce, water is fine ;)
There's only a few classes and files needed for I/O, XML and AudioGraph handling, everything else is gone. \o/

The implications for this change are not big for Linux users, and is even a source of good news for other OpenSource Operating System users like FreeBSD and HaikuOS.
In short, because Juce is no longer there, we have lost support for VST3 and AudioUnit plugins.
Plus VST2 plugins on Windows and MacOS are now handled by Carla's code instead of relying on Juce.
This heavily reduces the amount of compatible plugins handled by Carla, because Juce had a lot of hacks in order to make a lot of commercial plugins run properly.
Also Carla on Windows and MacOS used Juce to handle Audio and MIDI devices, which now has been changed to RtAudio and RtMidi.
RtAudio & RtMidi are not as fully-featured as Juce was (we lose dynamic MIDI ports, for example), but I am glad to have Juce gone from the code-base.
(You can say that parts of it are still there, but my conscience is clear, and Carla remains self-contained which was my main point since v2.0 development started)

The next breaking change relates to the internal plugins used in Carla.
The plugins that already exist as LV2 will stop being exported with the carla.lv2 bundle.
Plus these plugins will soon be removed from the default build.
They quickly bloat the Carla binaries, as they include their artwork. Not to mention increasing the clone and building times.
The plan is to have them disabled by default and moved into a new repository as submodule.
Oh and the "experimental" plugins are going away soon. It was a mistake to make them Carla-specific in the first place, they should be regular audio plugins instead.

Another breaking change is the removal of modgui support.
The code only worked for PyQt4, which is no longer the default for Carla source-based builds.
Plus it required webkit, which brings a big list of dependencies. I would have to port the code to webengine/chromium to make it work with PyQt5... no thanks.

The final breaking change is the introduction of the Experimental option in Carla's settings.
Everything that is not stable at the moment went there as an option, and got disabled by default. This includes:

  • Plugin bridges
  • Wine options
  • Force-stereo mode
  • Canvas eye-candy
  • Canvas with OpenGL

All new in-development / testing features will get introduced as experimental first.
This will speed up the release of 2.0, since not everything needs to be finished for it.
For example, plugin bridges can still be there and not fully implemented, and we still have 2.0-stable out!

That's it! Thanks for reading so far.
In other news, I gave a small presentation about Carla in this year's Sonoj Conference.
You can check it out here:

Carla 2.0-beta6 will be out soon :)