Hello again everyone, and surprise, the stable 2.0 version of Carla is coming!
This is the announcement of the first release candidate of Carla 2.0.
Very little features were added, focus went on stability instead.
The 'master' branch on Carla's source code is now for stable content, all new stuff will go to 'develop'.
My intention is to really let Carla on the side for now. If I can do it or not remains to be seen...
The list of changes is a little big, so let's split it by parts.
First, the highlights and major changes.
Highlights and major changes
LinuxSampler removed, replaced by SFZero
Basically I removed the code that interacted internally with LinuxSampler, and replaced it by SFZero.
There are a lot of reasons for this change, but we can resume it to 3 points:
- LinuxSampler API being overcomplicated
- SFZ handling not very reliable
- Licensing issues
Removing LinuxSampler means we lose support for GIG files, also SFZero loads the entire kit in RAM.
But, in return, SFZ files now always load without getting muted or having to do dirty workarounds.
Plus, with this, Carla can keep SFZ support while maintaining its GPLv2 license intact.
Note that SFZero does not support some opcodes, so the playback might sound different.
At a later date, a release will be made that will focus on SFZ support.
Big windows fixes
Carla under Windows has always a been a bit behind, compared to its Linux and macOS support.
Carla can now run as a plugin in Windows, and also the PyQt-based big-meter, midi-pattern and notes plugins.
With this done, Carla as LV2 is now included in the Windows builds.
The export of a single plugin as LV2, though it is an experimental feature, now also works on Windows.
Because Windows does not handle symlinks very well, Carla copies its resources instead.
Scanning plugins will no longer show a console window.
The font engine was changed from native to freetype, which not only fixes the mini-canvas but gives a better presentation too.
Plugin bridges work once again, and now even better as Carla now initializes Windows resources on them (like static pthread and OLE).
The piano-keyboard widget got some attention, now has 4 different highlight colors, 3 input layouts (qwerty, qwertz and azerty) and allows to change the offset when using the PC keyboard to send notes.
Just right-click on a piano-keyboard widget to trigger these options.
The rack looks a bit different now, as the possible "skins" for the plugin slots are now exposed and can be changed at any time.
You can change the background color too. Because why not? :)
The knobs and rack buttons are now more white-theme friendly.
This was needed to get white backgrounds working correctly, so for those of you that prefer Carla in a more bright theme, it will behave better now (why would you do that though?)
Some changes that make sense or are useful enough, and that deserve to be mentioned.
- Allow control output parameters to go out of bounds, thus displaying the correct value
- Automatically restart plugin bridges when plugin is re-activated, using last saved state
- Don't allow to disable jack transport if running in multi-client mode
- Don't close and re-open VST plugin UIs on show/hide
- Don't change any engine settings if it currently running
- Don't list lv2 plugins that are not supported
- Don't make Windows or macOS plugin UIs resizable for now
- Implement loop-mode for audio-file plugin, turn it on by default
- Implement support for buffer size changes in RtAudio JACK driver, and ignore JACK sample rate mismatch
- Implement SF3 support (SF2 files with OGG audio files instead of raw WAV)
- Force fftw thread-safe mode when starting Carla as standalone
- Plugins with more than 2 audio ports can now be loaded in rack mode (the extra ports are just ignored)
- Save and restore BPM with a project
- Save and restore last used BPM, if not loading a project
Besides the ones already mentioned for Windows, we also have:
- Big push to get transport working correctly
- General fixes against dynamic buffer sizes
- Several fixes to UI size and UI bridges under macOS
- Fix all PNGs that triggered libpng warnings
- Fix canvas rubberband being invisible after a canvas refresh
- Fix embedded UI covering window controls under certain hosts (in a Qt5 Linux build)
- Fix switching plugin positions in plugin mode
Notes for developers and packagers
- Base python scripts are no longer installed in dist-packages
- Carla front-end code was moved to its own folder
- FluidSynth version 1.1.7 is now required for soundfont support
- UI bridges can now be started from CLI with just the plugin URI
- New CarlaNativePlugin header and library exported, exposes Carla's Rack and Patchbay internals to 3rd party applications
Currently work-in-progress is a complete REST API of Carla's backend, allowing to have full control of a remote Carla instance.
(and not in a limited fashion like done with Carla-Control / OSC).
Initial code for it is already done, and tested to work.
If this interests you, let me know!
Notes for users
The code for scanning plugins had a little rework, making some internal data structures change.
Because of this, a full rescan of your plugins is needed after the update.
When running Patchbay mode in JACK, changing the buffer size might cause a crash.
This is not a common action to do, so not a priority to fix.
To download Carla binaries or source code, jump on over to the KXStudio downloads section.
If you're using the KXStudio repositories, you can simply install "carla-git" (plus "carla-lv2" and "carla-vst" if you're so inclined).
Bug reports and feature requests are welcome! Jump on over to the Carla's Github project page for those.
With Carla done, next up is DPF handling and KXStudio 18.04 ISO release, while trying to get a new JACK2 release out too.
Note that after these 3 items are done, I plan to take a well-needed break from open-source project maintenance.