Home KXStudio > News
RSS

KXStudio : News

> Carla 2.4.4 and 2.5.0 released
On 2022-07-16 by falkTX

Hello again everyone, it is 2 Carla releases on the same day!

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.

The reason for 2 releases is so there is an update to the 2.4.x series, being shipped in some Linux distributions that do not update packages to new versions.
Hopefully the bugfix is possible to push-through for such cases.
The 2.4.4 version does not have prebuilt binaries, it is meant only for those building from source.
For the 2.5.0 version, we have a couple new things.

JSFX

JSFX (those nice little FX from REAPER) make an appearance, contributed by Jean Pierre Cimalando.
Alike LV2 handling on Carla, you do not need to manually scan for these, Carla will automatically find them if you have some paths set.
If you have run REAPER before, you most likely will have a bunch of new plugins available to use right away.
Note that custom UIs for those are not supported yet, to be implemented later.

SDL engine driver

A new engine driver makes an appearance, for SDL (both v1 and v2) which is handy when building for systems where neither JACK or RtAudio works.
The main targets for this driver are HaikuOS and Web-Assembly, the latter one which has already been verified to work.
I am sure there will still be more tweaks needed, but at least audio should now work on HaikuOS too. I will investigate more in depth later.

Updated core modules

And finally, built-in DPF and JUCE have been updated to their latest versions.
This required changing some deep internal code to match the updated APIs, so it cannot be pushed as bugfix.

Changelog

That is mostly it for now, there are a few other minor changes and fixes too, changelog follows below.

  • Add JSFX plugin support
  • Add SDL engine driver
  • Adapt engine code to allow single-threaded web-assembly builds
  • Fix macOS installer to run without rosetta2
  • Do not use -fno-gnu-unique on BSD
  • Fix inaccurate MIDI CC rounding
  • Fix one more python3.10 compatibility issue
  • Fix one more Windows UTF-16 issue
  • Support mod:volts as LV2 unit
  • Update dependency list in INSTALL.md
  • Use full driver settings dialog if opened via menu and engine is not running
  • Update built-in DPF
  • Update built-in JUCE to 7.0.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".
Bug reports and feature requests are welcome! Jump on over to the Carla's Github project page for those.


> Cardinal 22.07 released
On 2022-07-16 by falkTX

Greetings everyone, we have another release of Cardinal, mostly with bugfixes and a new surprise feature.
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.

The main changes on this release are related to keyboard input focus and VST3 fixes.
For the keyboard input issue (basically in some hosts it was/is impossible to type in anything) I created a meta-issue to track all other issues, with a table for each DAW, OS and plugin varant being tested.
This helped me understand the situation better, which is pretty much:

  • Linux/X11 support is hit or miss, depends on how well the DAW supports Linux, those that give proper attention to Linux generally work fine
  • macOS support is almost a non-issue, every DAW works except REAPER that does not give focus automatically to the UI but we can easily work around it
  • Windows is a mess

While I was in the process of testing for Windows, I broke my desktop PC, actual broken hardware.. oops :/
So that got cut short, but I still added in a way that supposedly works better.
Previously the UI would try to give itself focus shortly after appearing on screen, obviously this didn't work as lots of users still reported not being able to type anything.
Now the UI will try to get keyboard input focus on every mouse press, which yes it is a bit ugly but let's see if that works.

More attention was given to the VST3 version, specially testing in many new DAWs.
It is very frustrating with VST3 as pretty much all DAWs initialize the plugin and UI in a different way. For example:

  • Cubase creates an Edit Controller instance using the "FUnknown" uid type (only Steinberg DAWs do this, everyone else uses the proper Component/Controller uid types)
  • Some DAWs (Ableton and Steinberg stuff at least) refuse to load plugins with separate Component and Edit Controller, even though this is an official VST3 feature
  • Some DAWs require a valid initial size before attaching the UI (resulting in 0x0 UI size if not provided), while others don't care
  • The way to have access to the "Host Context" varies between hosts, with Cardinal (using DPF) now having 5 places where it can possibly come from

I was meant to have a release of DPF-Plugins today alongside Cardinal, but due to finding so many VST3 related issues I decided to postpone it.

On the Browser

One of the big highlights of this release, which may come as a surprise if you are not following the project too closely, is the whole of Cardinal running directly in a Web Browser.
Yes it is a thing, and yes it works. You can try it at cardinal.kx.studio.
(Requires web-assembly support with SIMD, WebMIDI only works in Chrome-based browsers)

cardinal

This was mostly meant as a research effort from my side to see how feasible it would be to run DPF-based plugins on the browser, using emscripten to compile things into web-assembly.
By my own surprise, the initial tests proved quite sucessful so I ended up going all the way in.

It is still not complete, for example clipboard support is missing, and I noticed a few crashes, so it should still be considered experimental.
Most of the crashes comes from Rack code and modules never having supported a 32bit build, which is the web-assembly target.
Still, as Cardinal already had some work done for Linux and Windows 32bit support, most things just work as-is in the end.

It is awesome, and perhaps ridiculous too, that this is even a thing that can exist and work so well.
Starting with 22.07, wasm (web-assembly) builds are going to be part of the release binaries, and in the nightly/action builds too.

Note that I purposefully did not use the new AudioWorklet APIs, as that requires special server setup.
Everything is single-threaded but in turn it all works by simply hosting the files as-is.
If you want to build it yourself, just setup emscripten and use

make USE_GLES2=true

No source code modifications are necessary.
Build has only been successfully made within a Linux host.

Changelog

  • Adjust view menu similar to VCV Rack 2.1.2
  • Allow building using OpenGL ES2 (with USE_GLES=true build flag, disables glBars module)
  • Do not install JACK standalone on Windows by default
  • Fix example patches not working as templates
  • Fix file dialogs not working in macos-intel builds
  • Fix missing opus as supported extension in audio file module
  • Fix missing time information in AU version (regression in 22.06)
  • Fix VST3 keyboard input through host keycodes
  • Fix VST3 not loading under Cubase
  • Fix VST3 UI not appearing under Studio One
  • Give keyboard focus to UI on each mouse click
  • Make X11 clipboard handling more robust
  • Update all modules that use file browser dialogs
  • Update internal Cardinal async file dialog API to add default filename
  • Update to Rack 2.1.2

Downloads

The source code plus Linux, macOS and Windows binaries can be downloaded at https://github.com/DISTRHO/Cardinal/releases/tag/22.07.
Cardinal is released as LV2, VST2 and VST3 plugin, plus AudioUnit and JACK standalone for certain systems.


> Cardinal 22.06 released
On 2022-06-29 by falkTX

Hello everyone, yet another release of Cardinal is here, with a few new modules and a bunch of bugfixes.
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.

cardinal

Module changes

  • Add AS modules
  • Add forsitan modulare
  • Add Myth modules
  • Add Host Parameters Map core module
  • Add Sassy Scope core module
  • Implement custom plugin GUIs for internal Ildaeil plugins
  • Implement JSFX plugin support in Ildaeil
  • Make Host Parameters smoothing optional
  • Fix Fundamental flipped noise outputs
  • Fix Fundamental wavetable garbage reads
  • Fix Host Time trigger (tolerate max 2 frames of deviation, dont trigger on tick == 0)
  • Fix Lilac export file dialog
  • Update voxglitch

Cardinal core changes

  • Fix FX and Synth VST3 versions not running under Ableton Live
  • Fix macOS universal installer for systems without rosetta2
  • Fix mouse up event for imgui based widgets
  • Fix scroll speed on macOS
  • Fix VST2 plugin cleanup (crash on close)
  • Fix VST3 MIDI CC input handling
  • Fix VST3 UI initial size
  • Fix VST3 UI resizing from host side
  • Fix X11 file browser dialog not picking files with special characters or spaces
  • Implement glfwCreateStandardCursor, allowing custom cursors from modules
  • Show demo patches in file menu
  • Several optimizations
  • Update to Rack 2.1.1

Other changes

  • Add VT_-_Jupiter_Ascent.vcv demo patch
  • Change synth template to use Fundamental instead of Bogaudio modules
  • Implement more details for lv2 export (category, unipolar/bipolar CV, lights as control outputs)

Downloads

The source code plus Linux, macOS and Windows binaries can be downloaded at https://github.com/DISTRHO/Cardinal/releases/tag/22.06.
Cardinal is released as LV2, VST2 and VST3 plugin, plus AudioUnit and JACK standalone for certain systems.


> Cadence 0.9.2 release
On 2022-06-19 by falkTX

Cadence 0.9.2 has just been tagged.
No new features have been added to the code-base.
The release is focused on fixing compatibility with new systems, specially for Python 3.10.

This release is quite late, all things considered.
Until a few days ago I was still running an Ubuntu 20.04 based OS, so I couldn't reproduce any crashes.
A few people submitted fixes for Python 3.10 compatibility, but I did not want to tag a new release before running a few tests myself.
I am now on a Ubuntu 22.04 based OS, so finally I was able to reproduce the reported issues and fix any extra ones that popped up.

I still hope to give Cadence an overhaul, splitting into separate projects so it is easier to manage and package.
The project started 12 years ago, there is some ugly code in there, nowadays I would have done a lot of stuff there differently.
Splitting Cadence into subprojects will also help on this overhaul, because it is less code to update and maintain each time.
But in any case, it is not something that will happen now, more like an idea/plan for later.


> 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!


← PreviousNext →