Home KXStudio > News

KXStudio : News

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


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.


  • 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


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.