Home KXStudio > News
RSS

KXStudio : News

> KXStudio Monthly Report (November 2020)
On 2020-11-30 by falkTX

Hello all, another "monthly" report about the KXStudio project is here.
There has not been once since July and even though there are not many new details to share, I did not want to let another month pass without one.

The main reason for the delay on writing is that my attention has been mostly focused on getting the MOD Dwarf software all ready for release, including new LV2 features on the MOD software stack.
This usually does not affect me working on other open-source stuff, but the race to get everything ready on time drains more energy than usual.
In order to not stress myself out, progress on other fronts has been a bit slower, though stuff like Carla 2.2 final release still happened.
Some of this MOD work involved understanding the LV2 spec better and fixing or making new test plugins, so this will be useful outside the MOD platform too.
(I already learned that the way Carla handles some LV2 features is wrong and started some work towards fixing that)

Last month (October 2020) marks the first release of JACK2 with me as maintainer that provides macOS and Windows binaries.
I have been setting up automated builds for a few open-source projects for a bit of time now, and that is now re-used for JACK2.
There is progress to make this usable for cross-platform plugins, which I was hoping to have a release for by now, but the travis-ci is having some issues against homebrew...
Whenever that works again, I will make the official announcement of that new project.
Later on this will be used for automating the builds of my PyQt projects like Carla and Catia.

On the Cadence project, I began the work for splitting it into smaller, easier to maintain projects.
The idea is to allow Catia (the patchbay-only application) and the small tools to be packaged and maintained separately.
This will allow to have new releases of Catia, Cadence and its tools all separately.
There is only 1 nasty bug to fix in Catia use of JACK2 meta-data before an official release is made, but it is not an easy one, so I am leaving it for later.
Likely no public release on this until next year.

And that is it for now.
Usually I would write about the KXStudio repositories package update list, but there really has not been much happening there at all..
Christmas holidays are not too far off, which will bring some time to try to get a few more things out.
So expect some proper news again after that.


> Carla Plugin Host v2.2 is finally here!
On 2020-10-12 by falkTX

Hello everyone, this is the announcement of the 2.2 version of the Carla Plugin Host.
If you do not know, Carla is a fully-featured cross-platform audio plugin host, which can also run as a plugin.

This release announcement comes quite a few days after it was initially tagged and builds uploaded.
I moved to a different place, everything got a bit delayed with that, and also me getting a small but well-needed break.
Anyway, back to the topic at hand...

Contrary to previous releases, there were not many graphical changes this time, but lots of stuff under the hood.
One very important note for developers is that the "native" API to access carla as plugin (as used by LMMS) is still ABI and API-wise backwards compatible with 2.0, but the ABI and API of Carla as a library is not.
This is because all host functions now have a "handle" prefix, so they can be reused for standalone, plugin and other variants.

Special thanks to everyone that did testing during the release candidate phase, some with very complex setups! (as seen below)
settings

Now with that said, let's go through what's new, first the bigger changes and smaller stuff for last.

settings

Multi-Client + multi-instance improvements

In order to allow multiple instances of Carla to work without conflicts, proper JACK multi-client multi-instance support was implemented.
What this means is that you can have a name prefix for all plugins when in JACK multi-client mode, so that it is easier to understand where a plugin belongs to.

Starting with v2.2, extra Carla instances will get a dedicated JACK client name suffix.
On projects created with v2.2 and above, Carla will know which saved connections belong to which plugins, making it possible to load a session correctly where multiple Carla instances are involved.

As a way to make this easier to manage and control, a new command-line argument was added, "--cnprefix=...".
So now you can have a dedicated Carla instance that has its created JACK clients more globally recognisable.

Also, when Carla runs under NSM, the JACK client name prefix is set automatically (coming from NSM).
This is not enabled when loading pre-2.2 projects though, in order to keep backwards compatibility.


settings

Linux VST3 plugin support

As new VST2 plugins can no longer be officially licensed and VST2 is very, very, very slowing being phased out, it is important to have VST3 support.

So now you can now scan and load Linux VST3 plugins under Carla.
It is no longer limited to macOS and Windows.

Worth noting is that this is not a custom implementation, but leveraging JUCE VST3 host support on Linux.
It recently got supported as part of their JUCE6 update.
There are no plans for a custom implementation at this point.


Small UI/UX improvements all around

settings

The built-in keyboard right-click menu got a bit better.
Everything is presented in a single menu, no more sub-menus are used.

settings

The plugin built-in editor dialog now shows the currently mapped parameter type+value directly.
No more clicking around needed to find out what the parameter is mapped to.

settings

MIDI learn implemented, triggered via parameter mapping menu.
Note that this is per plugin, not global, due to how Carla handles each plugin individually.

Other "quality of life" improvements:
  • Added a 12400x9600 canvas size
  • Added a 2x and 4x canvas image export mode
  • Added a menu action to save current Carla canvas as image in the clipboard
  • Added "Send MIDI notes" option to plugin built-in editor dialog
  • Canvas positions are now always saved and restored, including in the plugin version
  • Canvas positions are kept in sync across multiple Carla JACK instances and even Carla-Control
  • Built-in plugin edit dialog tab state is kept when parameters are reloaded
  • Implemented NSM "optional-gui"
  • Plugin custom GUI Window title changes dynamically when renamed
  • Package macOS plugin version, making Carla-Plugin usable with macOS 10.15

Other notable changes

  • Added new xycontroller plugin
  • Added a "carla-osc-gui" script that starts a Carla instance in the background and connects to it using OSC.
    Closing the GUI does not close the engine, and it can be run again to reconnect later on.
  • Always use maximum amount of channels for VST2 plugins
  • Better handle the case of JACK server stop (or killed)
  • Better implementation of LV2 state path, now saving files in the same directory as the Carla project
  • Changed the way plugins are deleted, so they are now safely deleted only when no longer in use
  • Implement MIDI CC and CV source parameter changes for bridges
  • Improve the (still experimental) JACK-apps-as-plugins implementation, now mapping show/hide gui to NSM commands, sending arbitrary MIDI events and making it work on more systems
  • Increase max value of the internal LFO plugin, so we can get reeeeeeeal slow
  • Raise limit of plugins that can be loaded (512 default, 64 in rack)
  • Tweaks for automatically converting internal Patchbay mode projects in JACK multi-client mode and vice-versa
  • Working HaikuOS build, but no audio support yet

Many other bug-fixes and small under-the-hood improvements (too many to list here).
See the git log for the full list of changes.

Notes for users

When using JACK, the newly added features around the canvas require at least JACK v1.9.13.
This is because Carla relies on JACK meta-data in order to store information about each plugin/client, and meta-data was only added to JACK2 in version 1.9.13.
Alternatively, you can use JACK1 instead of JACK2, which has meta-data support since a long time.
Note that the "extras" KXStudio repository (which provides an updated JACK2) now supports Ubuntu 20.04 along-side 18.04.

The code for scanning plugins had a little rework yet again, making some internal data structures change.
Because of this, a full rescan of your plugins is needed after the update.
This should fix previously missing plugins that happened in v2.1.

The official Linux binary build does not provide native Linux-VST3 support.
Packages from regular Linux distributions do not have this issue.

Downloads

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.


> Carla 2.2 RC2 is here!
On 2020-09-07 by falkTX

Hello everyone, this is an announcement for the next release candidate for Carla v2.2.
Comes after a few issues were reported and fixed, and as an exception a new plugin is added.

The new plugin is actually "XY Controller" from the Cadence project.
It works pretty much the same way, except that received MIDI data will not change the UI elements.
This is because this is a plugin now, not a standalone application anymore. But everything else remains.
As a bonus, the X and Y are now plugin parameters, and work as parameter outputs too, so they can control other stuff in Carla.

Why the plugin was added so suddenly will be explained in detail in a future Cadence release.
But in short, I am splitting Cadence into easier to manage sub-projects.
The "Meter" and "XY Controller" tools are now part of Carla, so they can be removed from Cadence.

Besides the new plugin (which again is an exception, due to Carla v2.2 already being in Release-Candidate state) we only have bug-fixes.
The full list of changes is:

  • Add xycontroller plugin
  • Auto-select text in plugin search entry when focused via shortcut
  • Compress canvas clipboard image saving (as PNG)
  • Disable OSC by default on macOS
  • Fix crash when receiving unexpected VST2 time information
  • Fix current project filename persistence after engine stop
  • Fix deadlock when using VST3 plugins inside Carla as plugin
  • Fix listing LV2 plugins on Windows (2.2 regression)
  • Fix oddities with MIDI learn
  • Fix potential crashes when opening or hiding plugin UIs
  • Fix some plugins not having all their audio ports exposed
  • Fix some plugin UIs not in front of Carla when first shown
  • Fix wine bridge build against winehq-stable and winehq-stable
  • Overall fix to midi pattern plugin
  • Package macOS plugin version, making Carla-Plugin usable with macOS 10.15

Downloads

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.

Final note

Just a reminder that this is a release candidate, and not the final release yet.
There are still a few known issues, but since they are specific to certain workflows, the amount of users affected is limited.
If you find any more of them, please let me know in the github issue tracker, thanks!


> KXStudio Monthly Report (July 2020)
On 2020-07-31 by falkTX

Hello all, another monthly report about the KXStudio project is here.
This actually covers June and July, since there was not much to tell during June.

So... first, for those that did not notice, there was quite a few linux/opensource-audio releases on July 15, for the Quarterly Release Pact.
The "Quarterly Release Pact" is an informal agreement between developers to do releases of as much software as possible on a common day.
This is a nice way to:

  • Keep the software in the public eye
  • Increase trust, as people see that the software is in development and is cared for
  • Increase motivation of the developers, as seeing a group working (by their releases) is a good way to push them to do something too
  • Engage in a kind of "Swarm Marketing": A small release does not have much impact and won't get featured often by news sites, but a whole group of software releases demands more attention.

I can speak for myself that the release day is a great motivator to push releases.
When such date is near, everything that has reached a certain point where a release is perhaps worth doing (but usually would be hold-off due to not being "perfect enough"), just gets released.
Because to be fair, there is no point on holding off a release for long periods of time.
If something really goes wrong, a quick bug-fix can be done, so why not. It is software, these things happen sometimes..

With that in mind, the DISTRHO-Ports and WineASIO projects got new releases.
I worked (with some help) to move the DISTRHO-Ports build system from the super-old premake3 build system to meson.
While irrelevant for users, it is very important for Linux distribution packagers because premake3 is simply no longer maintained (and thus not even installable in some cases).
The other changes were not really that substantial in my view, but why not release anyway?
As someone who has done a few packages myself, I can understand the pain of those that want to package something but have their work made difficult by this kind of problem.
(If all goes well, DISTRHO-Ports provided plugins will be installable as packages in the next Ubuntu version already!)

DISTRHO-Ports has been reworked in a way so that we can keep the existing plugins untouched, while adding/supporting new plugins made with JUCE6.
The "legacy" plugins will have LV2 and VST2 formats, while new ones will support LV2, VST2 and VST3.
I plan to write a tutorial on how to add a plugin to this project, so that other people than me can contribute.
This will increase the number of ported plugins drastically, as it does not have to wait on me to to do it. (I have a lot on my plate already..)
Once we have a good number of new plugins, or the next release day comes (in 3 months), you can count on yet another release! :)

Regarding The WineASIO, it was ready for release for some time, so I did the release in more of a "why not?" state.
You can read more about this release here, but in short, I am now maintaining the WineASIO project. :)
This is because the previous maintainer wished to step down doing so, and I was already fixing WineASIO for packaging in the KXStudio repositories anyway, which basically involves maintaining it.
It is important to note that it is really only maintaining the code (so that it keeps working on new Wine versions).
So there is not going to be any new features added to it, only bug-fixes.

In other news, Carla 2.2 Release Candidate 1 is out.
It was a bit more rushed than I wished for, with a late release because I had to fight with some macOS incompatibility issues.. but that should not happen too much in the future.
I already have in mind what to focus on for version 2.3, but I really hope that with this 2.2 release I can kinda already leave Carla a bit on the side (which was already supposed to have happened in version 2.1 by the way), because other projects really need my attention right now.
The final Carla 2.2 release is just siting on a timer now in a way.
My target is to make it available for Ubuntu 20.10, so I will fix whatever bugs I can until the time arrives for Ubuntu 20.10 package freeze. (So final release in October 2020)

Unrelated to the release pact now, I am working on automated builds for a few projects, learning along the way how that is usually handled.
This is not that useful for Linux users, because distributions can build and package up stuff quickly; it is more for macOS and Windows users for whom it is much harder to build stuff.
The automated builds will cover plugins (distrho-ports, dpf-plugins and more), Carla and even JACK.
It is not completely ready yet, but very, very close to done. Expect a few announcements regarding this in the coming weeks!

Something I need to mention... I know people have been asking about an ardour package update (in KXStudio repositories).
I will get to it eventually, yes, sorry for the delay.
Ardour is a different kind of build, so I need to find a nice way of handling it. (I want to repackage the official binary, as authors are ok with it)
Previously it was all very manual work, it is better to avoid that this time around.
My focus in the past few weeks has been on Carla and now the automated build setups, so packaging got put aside for now.

And speaking of packages, here is the list of updates and additions in regards to June and July 2020:

  • helio-workstation added
  • new-session-manager added, replaces non-session-manager
  • fluajho updated to 1.6.1
  • lsp-plugins updated to 1.1.24
  • mod-host updated to latest git
  • patroneo updated to 1.6.1
  • sequencer64 updated to 0.96.8
  • vico updated to 1.2.1
  • x42-plugins updated to 20200714
  • zam-plugins updated to 1.13

That is all for now, stay safe and sane out there!


> Carla 2.2 RC1 is here!
On 2020-07-18 by falkTX

Hello again everyone, it is release day! (casually late again, but only 3 days late this time, yay progress!)

This is the announcement of the first release candidate of Carla 2.2.
Carla is a fully-featured cross-platform audio plugin host, which itself can also run as a plugin.
As done with 2.1, there is no beta release for v2.2 and we are going straight into a release candidate.

Contrary to previous releases, there were not many graphical changes this time, but lots of stuff under the hood.
One very important note for developers is that the "native" API to access carla as plugin (as used by LMMS) is still ABI and API-wise backwards compatible with 2.0, but the ABI and API of Carla as a library is not.
This is because all host functions now have a "handle" prefix, so they can be reused for standalone, plugin and other variants.

Now with that said, let's go through what's new, first the bigger changes and smaller stuff for last.

settings

Multi-Client + multi-instance improvements

In order to allow multiple instances of Carla to work without conflicts, proper JACK multi-client multi-instance support was implemented.
What this means is that you can have a name prefix for all plugins when in JACK multi-client mode, so that it is easier to understand where a plugin belongs to.

Starting with v2.2, extra Carla instances will get a dedicated JACK client name suffix.
On projects created with v2.2 and above, Carla will know which saved connections belong to which plugins, making it possible to load a session correctly where multiple Carla instances are involved.

As a way to make this easier to manage and control, a new command-line argument was added, "--cnprefix=...".
So now you can have a dedicated Carla instance that has its created JACK clients more globally recognisable.

Also, when Carla runs under NSM, the JACK client name prefix is set automatically (coming from NSM).
This is not enabled when loading pre-2.2 projects though, in order to keep backwards compatibility.


settings

Linux VST3 plugin support

As new VST2 plugins can no longer be officially licensed and VST2 is very, very, very slowing being phased out, it is important to have VST3 support.

So now you can now scan and load Linux VST3 plugins under Carla.
It is no longer limited to macOS and Windows.

Worth noting is that this is not a custom implementation, but leveraging JUCE VST3 host support on Linux.
It recently got supported as part of their JUCE6 update.
There are no plans for a custom implementation at this point.


Small UI/UX improvements all around

settings

The built-in keyboard right-click menu got a bit better.
Everything is presented in a single menu, no more sub-menus are used.

settings

The plugin built-in editor dialog now shows the currently mapped parameter type+value directly.
No more clicking around needed to find out what the parameter is mapped to.

settings

MIDI learn implemented, triggered via parameter mapping menu.
Note that this is per plugin, not global, due to how Carla handles each plugin individually.

Other "quality of life" improvements:
  • Added a 12400x9600 canvas size
  • Added a 2x and 4x canvas image export mode
  • Added a menu action to save current Carla canvas as image in the clipboard
  • Added "Send MIDI notes" option to plugin built-in editor dialog
  • Canvas positions are now always saved and restored, including in the plugin version
  • Canvas positions are kept in sync across multiple Carla JACK instances and even Carla-Control
  • Built-in plugin edit dialog tab state is kept when parameters are reloaded
  • Implemented NSM "optional-gui"
  • Plugin custom GUI Window title changes dynamically when renamed

Other notable changes

  • Added a "carla-osc-gui" script that starts a Carla instance in the background and connects to it using OSC.
    Closing the GUI does not close the engine, and it can be run again to reconnect later on.
  • Always use maximum amount of channels for VST2 plugins
  • Better handle the case of JACK server stop (or killed)
  • Better implementation of LV2 state path, now saving files in the same directory as the Carla project
  • Changed the way plugins are deleted, so they are now safely deleted only when no longer in use
  • Implement MIDI CC and CV source parameter changes for bridges
  • Improve the (still experimental) JACK-apps-as-plugins implementation, now mapping show/hide gui to NSM commands, sending arbitrary MIDI events and making it work on more systems
  • Increase max value of the internal LFO plugin, so we can get reeeeeeeal slow
  • Raise limit of plugins that can be loaded (512 default, 64 in rack)
  • Tweaks for automatically converting internal Patchbay mode projects in JACK multi-client mode and vice-versa
  • Working HaikuOS build, but no audio support yet

Many other bug-fixes and small under-the-hood improvements (too many to list here).
See the git log for the full list of changes.

Notes for users

When using JACK, the newly added features around the canvas require at least JACK v1.9.13.
This is because Carla relies on JACK meta-data in order to store information about each plugin/client, and meta-data was only added to JACK2 in version 1.9.13.
Alternatively, you can use JACK1 instead of JACK2, which has meta-data support since a long time.

The code for scanning plugins had a little rework yet again, making some internal data structures change.
Because of this, a full rescan of your plugins is needed after the update.
This should fix previously missing plugins that happened in v2.1.

Downloads

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.

Final note

Just a reminder that this is a release candidate, and not the final release yet.
I did my best to fix all issues that I was able to reproduce, but some can still happen.
Please let me know if find any, thanks!


← PreviousNext →