Home KXStudio > News
RSS

KXStudio : News

> KXStudio Monthly Report (May 2022)
On 2022-05-31 by falkTX

Hello all, it has been a while since the last time I wrote one of the "monthly" reports, but now back again.
Typically I would write about stuff that was happening behind-the-scenes or to be released soon,
but last couple of months have been mostly releases of stuff that was already in progress and was reported on already, or quick enough releases that could be done in a single month.
Also, there was quite a lot of Cardinal, like a lot of it. :)

Continuing with efforts torwards VST3

VST3 support in DPF is not going as quickly as I hoped, with the last few details being hard to get right.
As a way to learn more about VST3 specifics, and also because I promised to do so, I began doing a host-side implementation for Carla.

While Carla can already do VST3 plugins, it relies on JUCE for it which I am not totally happy with.
Having JUCE built on Carla + Linux just to get VST3 support is something that has always bothered me.
Because Linux does not have the concept of a OS-level event loop, a special way of mixing Qt and JUCE is in place, and feels very dirty.
There are other technical reasons for disliking the approach, but I will skip the details here.

Do note that, alike for VST2, I will keep using VST3 through JUCE for macOS and Windows.
Mostly because I rarely use those systems, so overall it is safer to rely on JUCE for them.
Maybe at some point the Carla VST3 implementation will be good enough to consider enabling the native approach on those systems too, but that can take a while.

Carla related things

Speaking of Carla, I merged the Jean Pierre Cimalando's JSFX plugin support pull request, though still in the process of cleaning things up (in particular non-x64 builds are broken at the moment).
Next release will have the feature enabled, which also propagates to stuff like Ildaeil and its use in Cardinal. :D

Also on Carla, I updated the in-tree JUCE to version 7.
JUCE 7 can now host LV2 plugins too, but for that I will keep Carla's native implementation which is more complete (JUCE does not support CV ports or external UIs, for example).
The update to JUCE also serves to help bring JUCE-based plugins into DISTRHO-Ports and KXStudio packaging, since I reuse the same JUCE version for everything.
My usual set of patches are complete now, and everything was ready to update DISTRHO-Ports main branch to it except it completely breaks Vital[ium] :/

The best approach is likely to have Vitalium be separate from DISTRHO-Ports, but setting that up takes a fair bit of time, so we won't see that so soon.
Perhaps the updated Vital source (whenever that drops..) will have better compatibility with newer JUCE versions, unknown at this point.
In any case, updates to DISTRHO-Ports are blocked at the moment because of this, but there is enough to do on other projects anyway.

Still on Carla, I also updated its in-tree DPF, bringing over the UI code restructure from a while ago.
This is important for the JSFX support, for possibily having their custom GUIs.
I will probably skip them for the first Carla version with JSFX enabled, but it is good to have this in place early so there are less blockers for the implementation.
The update also means being able to refresh the DPF-based internal plugins, which have been ignored for a while.

Sassy Spreadsheet and Scope

A little fancy tool caught my attention recently - the sassy spreadsheet.
It was recently open-sourced and with the GUI widgets being familiar (it uses imgui) there were very high chances of it working on Linux.
There were no official Linux builds or ways to build for Linux, but not for long!
So while we can build and run it now, sadly any operation results in a crash :(
I did some investigation but couldn't find why, author also couldn't tell.

That said, because it is based on imgui and I have worked with it and implemented in a few places, I wondered about taking advantage of it..
Can we take the very nice and properly behaving scope and use it somewhere else?
Yes we can. Yay for open-source!

sassy-scope-cardinal

KXStudio Repositories

On Repository related updates, I finally began to update some packages.
This really goes slow compared to previous times, as the newly introduced automated plugin tests fail.
I should have expected that..
It is great that we catch things early, but that also means updates can be blocked because of it.
Sometimes errors are falsely reported, but sometimes actual plugin issues are found too.
Kind of a pain to deal with when things fail, though in the long term it is for the best.

Because it was just too old and even non-working for some users, the use of the external, non-PPA based repository has been removed.
This basically means the the removal of the ardour package from the KXStudio repositories.
My idea for it was to update it to version 7 and find a way to automate the whole split build (amd64, armhf and arm64 packages).
Easier said than done, and there is too much I am doing already, it is hard to justify maintaining an extra repository just for a few packages.
Apologies for taking so long for taking a decision on this, I always hope to be able to do everything and more, but always fall short.
Doing less things is fine too.

Another small removal is the "recommended" meta-packages, which I had setup as a way for users to easily install a few extra useful programs from outside the KXStudio repositories.
Turns out, making a meta-package that can properly depend/install things across many debian versions and variants is hard.
Packages get removed or renamed, and makes a whole mess of optional dependencies that is just best to simply not care about.
And so it is now.

Related to actual package updates, we have these for this month:

  • airwindows-lv2 added (version 1.3)
  • dragonfly-reverb updated to 3.2.6
  • lsp-plugins updated to 1.2.1

 

That is all for now, see you next time!


> Cardinal 22.05 has been released
On 2022-05-15 by falkTX

Hello everyone, yet another release of Cardinal is here.
Cardinal is a free and open-source virtual modular synthesizer plugin.
It is based on the popular VCV Rack but with a focus on being a fully self-contained plugin version.

This is a big update with not just bug-fixes but also new modules and a few behaviour changes too.
Particularly interesting for existing Rack users is the inclusion of the popular Fundamental modules, though in customized fashion.
A new Audio to CV Pitch module also makes a debut, based on DISTRHO PitchTrackingSeries which was a shared effort for pushing the feature into hardware units.

cardinal-fundamental

Changelog

  • Add macos-intel build (smaller in size and better fit for intel-based macs)
  • Add main Cardinal variant for MOD builds
  • Add Audio to CV Pitch Core module
  • Fix buffer size not always correct in the Audio Unit plugin
  • Force UI keyboard focus (delayed focus grab after UI is open)
  • Mute audio output if bypassed
  • Remap Ctrl key + mouse clicks to right-click on macOS to better deal with its silly "one button" UX
  • Store a few more properties as plugin state, including favorites

Added plugins

Updated modules

Module fixes

  • Fix Core Audio2 meters stuck state when both L & R are disconnected
  • Fix Core Blank panel tags
  • Fix Core Host-MIDI-Map flooding console logs in case of error (only print the same error once)
  • Fix Core Host-Time reset trigger for hosts with non-static buffer sizes
  • Fix DrumKit Sequencer memory corruption
  • Fix mscHack PingPong filter cutoff value when loaded without GUI

Extra Notes

For packagers: fftw3f is now an optional dependency, required for "Audio to CV Pitch" module.
The module will built if fftw3f is available during build, otherwise disabled.

The "lv2export" stuff has been reworked and works now, includes 3 test plugins.
This allows to export individual modules as single lv2 plugins, with very minimal binaries and no UI.
For now it is still quite experimental, just to mess around with.
Future releases might enable them by default, still undecided.

Downloads

The source code plus Linux, macOS and Windows binaries can be downloaded at https://github.com/DISTRHO/Cardinal/releases/tag/22.05.
Cardinal is released as LV2, VST2 and VST3 plugin, plus AudioUnit and JACK standalone for certain systems.
The VST3 version is still considered experimental, prefer to use LV2 or VST2 if possible at this time.


> Correction: Changes in KXStudio repositories
On 2022-04-25 by falkTX

This is a quick correction to yesterday's post regarding changes in the KXStudio repositories.
I mentioned that the minimum required version was Debian 12 / Bookworm.
This is incorrect, the minimum is actually Debian 11 / Bullseye.

Apologies for the lapse, have a good day! :)


> Changes in KXStudio repositories
On 2022-04-24 by falkTX

For the impatient ones, the too-long-didn't-read short summary is:

  • Minimum required version to use the KXStudio repositories is now 20.04 / Focal or Debian 11 / Bullseye
  • i386 / 32bit systems are no longer supported
  • "Extras" repository has been marked as deprecated and should no longer be used

Updating base version to 20.04 / focal

As Ubuntu 22.04 was just announced, I began to do work on the KXStudio repositories once again.
They were using Ubuntu 18.04 as base for all builds, which is getting old now and only has 1 more year of support.
That last part is important - when 18.04 goes end-of-line, no new Launchpad PPA builds are possible.
And since the KXStudio project relies on those for its packages, I need to update the base version from time to time in order to be able to keep building things.

If you need to ask why using PPAs and not something else, there just isn't another service that can do all that is required (that I know of).
OpenSUSE's Open Build System is similar, but it cannot handle the inter-dependency of the different sub-repositories.
For example, a "toolchain" repo is used on all builds but not exported to the user, so it is safe to update things like cmake and meson only for the repository builds without breaking the user's system/packages.

The extreme alternative would be to move to ArchLinux and their new Unofficial Pro-Audio Package Repository, and while tempting, I think a lot of users would be disappointed and sad with that call.
And hosting the entire build setup myself is not going to happen, I do not have the capacity or funds for such a thing.

But back to the topic at hand, moving up on the base version for KXStudio package builds means the user-facing minimum version also goes up.

So as of today the minimum required version to use the KXStudio repositories is 20.04 / Focal or Debian 11 / Bullseye.
Newly installed systems can no longer use the old variant of the KXStudio repositories.
The old 18.04-base packages are not going to be updated anymore.

Issues with i386 builds

On 20.04 onwards, Ubuntu has disabled i386 PPA builds for all packages except those that are part of 20.04 release.
The move to 20.04 as repository base is already taking place and I did quite a few tests to try and workaround the build limitation, but from what I can tell it is just not possible.
This means the KXStudio repositories will no longer provide i386 packages.

Everything else will keep working, including armhf and arm64 packages.
Hopefully there are ways to still build a few 32bit things like wineasio and carla wine bridges, but those will be 64bit packages just with 32bit libraries.
I did not actually test for this yet, more news on it soon.

Deprecated repositories

The lack of i386 package builds makes it impossible to build system libraries as was the case for the "Extras" repository.
Without such packages it becomes pointless, so the "Extras" repository has been marked as deprecated and should no longer be used.

Somewhat related, the KXStudio "Music" sub-repository served no real use in the end.
And since now seems to be the time for cleanup and breakage, this one was marked as deprecated too.

Such deprecations make apt very unhappy, and it will begin complaining something like this:

E: Repository 'http://ppa.launchpad.net/kxstudio-debian/music/ubuntu bionic InRelease' changed its 'Label' value from 'Music' to 'Deprecated'
N: This must be accepted explicitly before updates for this repository can be applied. See apt-secure(8) manpage for details.

Just cleanup the apt list cache and the errors go away, like this:

 sudo rm -f /var/lib/apt/lists/*

If you were using the "Extras" repository and now have issues because JACK can not be installed or updated, you will need to revert it to the version from your official distribution repositories.
Run this to fix it, replacing "focal" by the linux distribution version label that applies to your case:

 sudo apt-get update
 sudo apt-get install libjack-jackd2-0/focal libjack-jackd2-0:i386/focal jackd2/focal

Final notes

I realize this will make a few people sad, if the i386 builds were something you were relying on.
It pains me too, as this kinda encourages throwing away old usable hardware that cannot do 64bit.
Moving away from Debian base is not something I want to do at this point, but keeping 18.04 as base is not sustainable, as builds for it will soon stop working.
And doing full custom repositories is a massive endeavour, something I don't have the time and resources (or patience) for.
In the end, I am grateful to still be able to push new builds.

Speaking of new builds, those will still take a bit to appear, as I have decided to do things a bit better this time.
Using Ubuntu 20.04 as base allows to update the "debian format" to 13 which simplifies the builds, all packages are being converted one by one.
Also, I am uploading all debian source details on a public git repo, as a backup/precaution measure and also to more easily allow others to see how packages in the KXStudio repositories are done.
I do not really expect contributions that way, but more transparency is always nice.

Based on previous work done for continous-testing in Carla and DPF, I want to setup similar runtime tests for all plugins before they get pushed into the repositories.
Compared to just a few years ago, testing plugins is now much easier, with Carla having a dedicated command-line test mode, LV2 validation tools becoming better and even lv2lint that performs runtime tests.

I still want to finalize a few things in Cardinal before going full-force on the repositories, but that side is almost done now, so very soon my attention can go back to packaging.
Good times ahead!


> Carla 2.4.3 has been released
On 2022-04-15 by falkTX

This is a small bugfix release for the Carla v2.4 series.

carla

Carla is an audio plugin host, with support for many audio drivers and plugin formats.
It has some nice features like automation of parameters via MIDI CC (and send output back as MIDI too) and full OSC control.

Fixes

  • Fix build for Alpine Linux and BSD
  • Fix integration with internal Qt toolbar visibility state
  • Fix plugin search (regression from 2.4.2)
  • Fix several Windows UTF-16 issues

Build related changes

  • Add -fno-gnu-unique to default build flags
  • Implement VERBOSE make flag
  • Make build compatible with LTO, now enabled on official macOS/Windows binaries
  • Replace CARLA_EXPORT macro with separate API / PLUGIN export options
  • Set new X-NSM-Exec desktop file property

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".
Bug reports and feature requests are welcome! Jump on over to the Carla's Github project page for those.

Notes for users

This was already the case for v2.2 and v2.3 but it is worth reiterating:
When using JACK2, the canvas - plugin integrations requires at least JACK2 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.

Also there are still no official Linux binary builds for v2.4.3.
Carla v2.4.3 is provided in the KXStudio repositories and in many official Linux distribution repositories anyway.


← PreviousNext →