Home KXStudio > News
RSS

KXStudio : News

THIS IS A FAKE PAGE, KXSTUDIO NEWS USES A DYNAMIC MODULE NOW

> Cardinal 24.04 released
On 2024-04-11 by falkTX

Hi everyone, a new release for Cardinal is here, 24.04 which focuses on updating the base VCV Rack 2.4 and adds quite a few new modules, bringing the module count to 1193.

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

Changelog

  • HostMIDI: Add option to force gaps between MIDI input notes
  • Fix build with latest liblo
  • Fix Linux VST2 exported symbols
  • Fix MindMeldModular in wasm/web builds
  • Force-redraw of all child widgets on dark mode change
  • Improve Ildaeil/Carla VST3 plugin handling
  • Improve Ildaeil plugin bridge handling for macOS
  • Improve Ildaeil plugin scanning
  • Several fixes for UI size with high-dpi screens
  • Stop using cardinal-specific settings::darkMode
  • Tweak default build flags to better match VCV Rack
  • Update base VCV Rack to v2.4
  • Use DPF for AU support instead of JUCE
  • Use GLES2 render target for linux ARM release builds

Module updates

  • Add Computerscare
  • Add CVfunk
  • Add DHE modules
  • Add Starling Via
  • Update Befaco
  • Update GrandeModular
  • Update HetrickCV
  • Update Sapphire
  • Update Surge XT
  • Update unless_modules
  • Update ValleyAudio

Downloads

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


> Cardinal 23.10 released
On 2023-10-24 by falkTX

Hello again everyone, it is time for another Cardinal release.
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 mostly a maintenance update, focused primarily on bug fixes.

Changelog

  • Fix clipboard (regression in 23.09)
  • Fix initial OpenGL state for some systems
  • Fix macOS horizontal scroll
  • Fix state save/restore with non-english locales
  • Fix "user dir" on Windows, was causing settings persistence to fail
  • Set main variant as synth type
  • Set X11 window icon for standalone
  • Update to latest Carla and DPF (which also updates pugl)

Modules related changes

  • Update nonlinearcircuits

Downloads

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


> Carla 2.5.7 released
On 2023-09-30 by falkTX

Hi everyone, a new release for the Carla Plugin Host is here, v2.5.7 which includes some important fixes including a regression when used together with the (yet to be released) v2.6.x discovery tools.

Changelog

  • Fix compatibility of plugin discovery with newer 2.6.x tools
  • Fix crash when using JACK under Linux ARM
  • Fix carla-lv2 pre-run with 0 frames
  • Fix carla-vst GUI for high-dpi screens
  • Fix carla-native-plugin library exported symbols
  • Show custom error message when trying to start JACK driver without JACK
  • Skip special treatment for LADISH (do not set session management hints)

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 23.09 released
On 2023-09-17 by falkTX

Hello again everyone, it is time for another Cardinal release.
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 change for this release is making the OSC remote control an official feature, with some initial documentation here.
Then also the usual set of fixes and a few module updates.
As an extra, Cardinal has its own website now, living at cardinal.kx.studio with the online/wasm version still accessible by clicking "Try Live".

Changelog

  • Add OSC Remote control
  • Do not try to save and load module info per project, its a global setting since 22.07
  • Fix a few missing details in macOS app bundles
  • Fix Cardinal Mini window title after loading patches
  • Fix crash when pressing F9 (used internally for generating screenshots)
  • Fix crash when window creation fails (e.g. running headless)
  • Fix headless build when OpenGL is available (but unused since it is headless)
  • Fix stuck notes in CardinalNative MIDI handling
  • Fix VST2 parameter changes
  • Proper handling of XDG_DOCUMENTS_DIR
  • Switch to regular/initial welcome patch for web/wasm builds

Modules related changes

  • Add EnigmaCurry
  • Audio File Player: Fix resampled playback for some files, many CPU optimizations
  • Ildaeil: Add bridge reload button, in case hosted plugin crashes or times out
  • Ildaeil: List Windows plugins under Linux
  • Update unless_modules

Downloads

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


> Carla 2.5.6 released
On 2023-08-04 by falkTX

Hi everyone, a new release for the Carla Plugin Host is here, v2.5.6 which includes some important fixes including a regression when used together with the (yet to be released) v2.6.x discovery tools.

Changelog

  • Fix compatibility of plugin discovery with newer 2.6.x tools
  • Fix crash when using JACK under Linux ARM
  • Fix carla-lv2 pre-run with 0 frames
  • Fix carla-vst GUI for high-dpi screens
  • Fix carla-native-plugin library exported symbols
  • Show custom error message when trying to start JACK driver without JACK
  • Skip special treatment for LADISH (do not set session management hints)

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 23.07 released
On 2023-07-15 by falkTX

Hello yet again everyone, it is time for another Cardinal release.
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.

There are quite a few nice changes this time, from finally allowing global user settings to improved audio plugin hosting.
Let's go throught the main changes...

Global user settings

As per user request Cardinal now defines a user directory for patches, modules settings and other details.
This came as a necessity for the updated Ildaeil module, which needs to store plugin cache between runs.
With this now in place, many things that Cardinal was missing compared to VCV Rack are now enabled, including:

  • Allow modules to save and load settings in a known location
  • Allow to save, list and load module presets and general files from a known location
  • Menu action "File" -> "Open recent" is now enabled
  • Menu action "File" -> "Overwrite template" is now enabled
  • Menu action "Help" -> "Open user folder" is now enabled
  • Save and load user settings globally

Please note that user settings are saved per-variant, so e.g. CardinalSynth and CardinalFX will have differnet settings.
This is 100% intentional, and found to be generally useful - we want to have different base templates and favorites on Synth vs FX.

Also, something not done on VCV Rack side, a "File" -> "New (factory template)" is now available.
This allows to load the Cardinal's original template instead of the user-saved one.

Ildaeil plugin hosting

The Ildaeil module allows to load audio plugins (such as LV2 and VST3) inside Cardinal.
With this update, Ildaeil will automatically scan and list binary plugins, bringing support for LADSPA, DSSI, VST2, VST3 and CLAP.
When supported by the plugin Ildaeil will also show the list of available presets.

cardinal+ildaeil

AIDA-X module

This releases introduces a new module, a port of the AIDA-X audio plugin (also available separately as a standalone plugin).
AIDA-X is an Amp Model Player leveraging AI and machine learning, with a target of providing high fidelity simulations of guitar amplifiers.
It is also possible to run entire signal chains consisting of any combination of amp, cab, dist, drive, fuzz, boost and eq.

The module loads AIDA-X files that have been trained to match a desired sound output.
Right-click on the module and select "Load model file..." to load an AIDA-X model file from disk.

A quick model pack can be downloaded from AIDA DSP's Google Drive folder.
Check out the MOD Forum's Neural Modelling section for an online place for discussion, sharing and all things related to Amp Models.

cardinal+aida-x

Web browser persistent storage

A nice little addition to the Cardinal's online web version (running at cardinal.kx.studio or easily self-hostable) is browser-side peristent storage.
This means we are able to locally save patches and user settings on the web version of Cardnal, making it a little bit more useful and not purely a test tool.
Previously saved patches can be accessed via "File" -> "Open local patch" menu.

Also on the web version, it will now automatically detect lack of Web-SIMD support and load a non-optimized version of Cardinal.
This allows to load Cardinal on Safari and other WebKit based browsers, or any other that does not support Web-SIMD.
Worth noting that latest WebKit has finally added support for Web-SIMD, so this is more of a temporary measure until the update is rolled out everywhere.

There are a few module updates too, and some important bug fixes too, see the changelog below.

Changelog

  • Add AIDA-X module
  • Add Bogaudio AD to mini variant
  • Add (binary) plugin scanning to Ildaeil plugin hosting (LADSPA, DSSI, VST2, VST3 and CLAP)
  • Add plugin presets to Ildaeil, when exposed on the plugin side
  • Add VST2 plugin folder option to Windows installer
  • Allow custom URL for remote instance connections
  • Allow usage of local user directory and configs, expose related options
  • Fix focus to input text dialogs
  • Fix missing menubar cpu usage
  • Invert scroll X direction
  • Rework file menu
  • Update base VCV Rack to v2.3.0
  • Update Sapphire to v2.2.2 (adds Tube Unit)
  • Update MindMeldModular and SurgeXT, for Rack 2.3 compatibility

Build related changes

  • Bump minimum required macOS version to 10.15
  • Fix build with GCC13
  • Fix missing `make install` of mini variant
  • LTO no longer enabled by default for release builds
  • Only enable remote OSC control in headless builds
  • Remove `NOPLUGINS` build option
  • Remove use of `mingw-std-threads`
  • Several optimizations and build tweaks

Web version related changes

  • Add persistent storage (automatic on save, can be manually triggered via File menu)
  • Add local (browser-side) patch loading via File menu (under "Open local patch")
  • Automatically load no-simd version on browsers that do not support web-simd
  • Disable cursor lock by default

Downloads

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


> Ildaeil v1.3 released
On 2023-07-15 by falkTX

Hello again everyone, a new release of Ildaeil is here.
Ildaeil is mini-plugin host working as a plugin, allowing one-to-one plugin format reusage.
The idea is to load it as a plugin inside your DAW and then the other "real" plugin inside Ildaeil.
This allows, for example, a VST3 host to load LV2 plugins and vice-versa.

The main changes this time are automatic binary plugin scanning, exposing plugin presets and simplified standalone.
The automatic binary plugin scanning makes Ildaeil able to quickly list and load even more plugins than before.
Scanned plugins are cached so the scan only happens once per plugin (or until its binary is updated).

For the standalone, Ildaeil now has a single standalone variant instead of the old FX/Synth/MIDI separate programs.
In order to make this work in a more generic way, buttons for "enable midi" and "enable input" are shown when viewing a plugin's generic UI.
Also related to this, an online version is available at ildaeil.kx.studio, used for doing experiments with realtime audio and plugins on the Web.

ildaeil-1.3

Full changelog:

  • Add auto-scan of binary plugins (LADSPA, DSSI, VST2, VST3 and CLAP)
  • Add enable-input, enable-midi and buffer-size options for standalone
  • Add macOS standalone to release binaries
  • Add preset selector for plugins that expose them
  • Improve VST3 hosting
  • Initial experimental web version, public instance running at https://ildaeil.kx.studio/
  • Set GUI as resizable when running as standalone
  • Use a single standalone program instead of having Synth/FX/MIDI variants

Downloads

The source code plus Linux, macOS and Windows binaries can be downloaded at https://github.com/DISTRHO/Ildaeil/releases/tag/v1.3.
Ildaeil is released as CLAP, LV2, VST2 and VST3 plugin, plus JACK/Standalone for some systems.


> Carla 2.5.5 released
On 2023-06-04 by falkTX

Hello again everyone, a new release for the Carla Plugin Host is here, v2.5.5 which brings a couple of fixes to the v2.5 series and internal tweaks for its future integration in OBS.
Worth noting that future releases of Cardinal and Ildaeil will depend on this version (or later) for their audio plugin discovery support.

Changelog

  • Allow IPC during plugin discovery (controlled by external tools)
  • Expose a few extra APIs in carla-utils library
  • Install extra carla-utils related headers during `make install`
  • Fix invalid/empty LV2 paths for compatibility with lilv
  • Fix LV2 plugin state for plugin bridges
  • Fix showing engine device settings on systems without JACK
  • Fix usage with LMMS on Windows
  • Remove use of `REAL_BUILD` macro, no longer needed
  • Tweaks for integration in OBS
  • Other minor fixes and cleanup

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.


> Introducing AIDA-X
On 2023-04-25 by falkTX

Hello everyone, I would like to introduce a new audio plugin - AIDA-X.

AIDA-X

AIDA-X is an Amp Model Player, it loads models of AI trained music gear which you can then play in real-time.
Its main intended use is to provide high fidelity simulations of amplifiers.
However, it is also possible to run entire signal chains consisting of any combination of amp, cab, dist, drive, fuzz, boost and eq.
See https://github.com/AidaDSP/AIDA-X for more details on the project, including documentation and downloads.

Behind the scenes AIDA-X uses RTNeural, which does the heavy lifting for model processing.
Similar to master_me, I did the desktop plugin related code so it obviously uses DPF for the cross-platform and plugin format support details.

This new plugin comes out of an effort from me, AIDA-DSP and MOD Audio.
Initially AIDA-DSP folks did the work to get RTNeural working as its own embed-focused LV2 plugin, together with figuring out the AI training details.
The initial idea was to have an LV2/MOD-specific plugin that would serve as "generic model loader", this is the aidadsp-lv2 project.
As part of my work for MOD Audio, I helped to get this LV2 plugin in a bit better shape and integrated on the platform.
You can see a nice, extensive discussion with Jatin (RTNeural's main author) regarding how to best approach a "load it all" with it here.

With all pieces in place the LV2 embed plugin was/is working quite well inside MOD units and other low-spec devices, but LV2 is not yet a widely supported format...
We did not want to have it as a niche plugin, the technology around it is getting a lot of attention lately because of how damn cool it is.
I took the initiative to make a desktop plugin for AIDA-DSP, based on DPF as usual, and then we built on top of that.

Model Training and Downloads

If you are interesting on capturing/training your own models, MOD Audio has created a dedicated Modeling Guide page.
There's a dedicated space for sharing and discussing all things related to Amp Models in the MOD Forum's Neural Modelling section.

Plugin Downloads

There are pre-compiled binaries for Linux, macOS and Windows which can downloaded at https://github.com/AidaDSP/AIDA-X/releases.
You can also find it in the KXStudio repositories as aida-x package.

And you can also try it live online at mod.audio/aida-x-online, though this last option uses pre-recorded audio loops instead of real audio input.

Enjoy and have fun!


> Carla 2.5.4 released
On 2023-03-13 by falkTX

Hello again everyone, a new Carla release is here, v2.5.4 which brings a couple of fixes to the v2.5 series.

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.

Changelog

  • Fix crash/regression when using LV2 plugins without worker extension
  • Fix compat with PyQt >= PyQt 5.15.8
  • Fix macOS build
  • Simplify JACK event handling, now using a single queue on the main thread

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 23.02 released
On 2023-02-28 by falkTX

Hello again everyone, it is time for another Cardinal release.
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 change for this release is the introduction of a "Mini" variant.
This is a special variant with a very small, hand-picked module selection and limited IO (2 audio ports plus 5 CV).
There are 2 main reasons for this variant to exist:

  • make it easier for users new to the modular world to get a working setup, by only having some of the best possible modules available to choose from
  • hand-pick modules that are simple enough to work reliably in a remote setup

For now the list of selected modules is quite small, intentionally. We will add a few more as the need appears.
All included modules support polyphony, reducing confusion for new users not yet used to mono vs poly approach in Rack/Cardinal.

The 2nd reason (only having simple modules) is needed in order to support DSP/UI separation.
Having this in place means we can run the DSP on a different machine than the UI.
This is particularly interesting for running Cardinal on embed systems, being controlled remotely via web browser or native desktop application.
Already doable with LV2 from 23.02 onwards, used for MOD Audio builds (as seen in the screenshot).
Later on this will be made possible on standalone too.

cardinal

There are a few module updates too, and some important bug fixes too, see the changelog below.

Changelog

  • Add Mini variant (very few hand-picked modules, with separate DSP/UI under LV2)
  • Add wasm-noopt build, needed for some web browsers
  • Add CardinalMIDI variant for AU (same as CardinalFX but has different tag)
  • Allow to build without SSE optimizations (using `NOSIMD=true`)
  • Check /usr and /usr/local directories for existing Carla tools on macOS
  • Do not reset Host MIDI pitch when receiving an all-notes-off event
  • Fix display of Host CV in non-main variants
  • Fix LV2 not reacting to buffer-size changes
  • Fix VST3 "SDK" versioning to be more officially compatible
  • Remove the `NOPLUGINS` build option
  • Several performance optimizations

Module changes

  • Update Grande Modular to 2.7.2
  • Update Surge XT to 2.1.3

Downloads

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


> Carla 2.5.3 released
On 2023-01-15 by falkTX

Hello everyone, it is release day again, sorta..
This time we have a single update for 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.

Same as last time for v2.5.2, this update backports fixes from the main development branch into the stable 2.5 series.
The more substantial stuff will come for 2.6.0, still a few months away.

Changelog

  • Always set time frame information for JUCE hosted plugins
  • Fix canvaspreview out-of-bounds panning for patchbay
  • Fix receiving LV2 atoms bigger than 32kB
  • Fix peak metering reading values out of bounds
  • Fix missing </li> code in about information string
  • Support the more verbose LV2 MIDI CC definitions
  • Use SDL driver by default on Haiku

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.12 released
On 2022-12-20 by falkTX

Greetings everyone, we have yet another release of Cardinal, this with some great module additions.
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 for this release are new modules (Sapphire, Stoermelder Pack-one and Surge-XT) and web-assembly related fixes.
Highly requested and specially interesting for users are the brand new Surge-XT modules, see Omri Cohen's video for a cool overview of what they can do.
As usual there are a few module updates too.

cardinal

Changelog

  • Add portable standalone Windows binaries
  • Add JTB Waves example/demo patch
  • Fix SSE not being enabled in pffft for 32bit builds
  • Improve docs for building Windows binaries
  • Stop using LTO for macos-universal builds

Module changes

  • Add Sapphire
  • Add Stoermelder Pack-one
  • Add Surge-XT
  • Update BaconPlugs
  • Update Befaco
  • Update MindMeld
  • Update PathSet

Web-assembly related changes

  • Add Web-assembly build instructions
  • Enable brotli compression on release files
  • Enable emscripten --use-preload-cache flag, improves browser cache
  • Fix keyboard input having wrong keys
  • Fix mouse lock on chrome-based browsers
  • Fix versioning

Special Notes

  • Building now requires a compiler compatible with C++17
  • Windows builds now require 0x0600/Vista, needed for Surge

Downloads

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


> Cardinal 22.11 released
On 2022-11-27 by falkTX

Hi everyone, we have another Cardinal release, 22.11, with a very welcome change and important 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.

Contributed by Francesco Cameli we now have modules processing order based on cable connections rather than when they were first added to the Rack.
With this, there is now a guarantee that no single sample feedback is introduced between cable connections, unless feedback connections are in place or modules have internal buffering.

As an example, Francesco provided a simple patch that plays a sine wave through a sequence of 54 modules to measure the difference of the starting signal with the end one.
As it can be seen below, with the old implementation there was definitely a delay introduced by the connections.
(since the audio engine steps through the modules in the order in which they were created, ignoring which modules should come first according to the cable connections)

cardinal

With the new implementation the signal flow now correctly shows a null sum between the starting signal and the end one:

cardinal

Other important changes are fixes to VST3 multi-IO, CLAP having a multi-IO variant, and macOS Intel builds working much better.

Main Changelog

  • Add classic subtractive polysynth example/demo patch
  • Automatically reset modules processing order according to cable connections
  • Enable CLAP "main" variant (multi-IO audio now implemented, CV ports still TODO)
  • Fix CLAP audio port types (now set as stereo, fixes loading under Anklang)
  • Fix memory alignment issues for macOS Intel platform
  • Fix out of bounds read on host audio 2 meters
  • Fix VST3 non-main ports not receiving audio
  • Make macOS native standalone behaving like Linux and Windows regarding buffer-size changes
  • Mark LV2 CV ports as optional
  • Only use simde, drop sse2neon (following VCV Rack's approach to ARM binaries)

Module changes

  • Add RebelTech
  • Update Meander
  • Fix crashes when loading patches with Macro Oscillator 2
  • Fix out of bounds read in DrumKit modules

Downloads

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


> DPF-Plugins v1.6 released
On 2022-11-01 by falkTX

Hello everyone, a new release of DPF-Plugins is here.
DPF-Plugins is a collection of DPF-based plugins, including Kars, MVerb and Nekobi.
This release brings some fixes alongside finishing the VST3 versions and adds CLAP support.

General changelog:

  • Add linux-riscv64 builds to release binaries
  • Fix / stabilize VST3 support
  • Initial CLAP support
  • Set audio port configuration for all plugins
  • Set VST3 categories in a few more plugins
  • Update to latest DPF

Plugin specific changes:

  • Kars: Fix playback after a sample rate change
  • Nekobi: Fix deadlock when receiving a MIDI message bigger than 3 bytes
  • Nekobi: Make waveform slider behave as a button
  • ProM: Fix invalid context (GL compat instead of GL3) in some setups
  • ProM: Force keyboard focus on click

Downloads

The source code plus Linux, macOS and Windows binaries can be downloaded at https://github.com/DISTRHO/DPF-Plugins/releases/tag/v1.6.
The plugins are released as LADSPA, DSSI, LV2, VST2, VST3, CLAP and JACK standalone.


> Cardinal 22.10 released
On 2022-10-15 by falkTX

Hello hello! We have yet another release, Cardinal 22.10, with mostly bugfixes this time.
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.

There are no 3rd-party module changes or updates this time around, the release is more or less the combination of changes from 22.09 until today.
Fixes are significant enough to warrant a new release, so here we are.

The only actual new feature comes from a sync of the internal Ildaeil with the just released version 1.2 of it, which allows to load arbitrary files as plugins.
For Cardinal this means it is easier to host VST2 and CLAP plugins without having to rely on an external Carla window (which typically needs to be installed separately too).

cardinal

Changelog

  • Allow Ildaeil loading arbitrary files/binaries as plugins
  • Fix headless build
  • Fix Host Time step not triggering under certain conditions
  • Fix missing CardinalNative during "make install"
  • Fix missing MIDI support in CardinalNative Windows builds
  • Remove superfulous modules in falkTX_-_Divide-no-Conquer.vcv example patch
  • Several fixes to CLAP plugin version
  • Update internal Carla to latest, brings initial experimental CLAP hosting

Downloads

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


> Ildaeil v1.2 released
On 2022-10-15 by falkTX

Hello again everyone, a new release of Ildaeil is here.
Ildaeil is mini-plugin host working as a plugin, allowing one-to-one plugin format reusage.
The idea is to load it as a plugin inside your DAW and then the other "real" plugin inside Ildaeil.
This allows, for example, a VST3 host to load LV2 plugins.

The main changes this time are being able to load arbitrary files as plugins and CLAP hosting.
On the plugin type combo-box you now have "Load from file..." option, which will open a file-browser to select a plugin or music file.
This allows, for example, to load CLAP and VST2 plugins.
It is a semi-temporary measure while the auto-plugin scanning is not yet in place.

The CLAP hosting, as everything in Ildaeil, comes from Carla side too.
It should be considered experimental for now and will be part of Carla 2.6.0 update later.

There are also quite a few CLAP plugin related fixes, and details on X11 UIs changed to better support NTK-based ones.

ildaeil-1.2

Full changelog:

  • Allow loading arbitrary files/binaries as plugins
  • Add extra plugin bridges to release binaries (32bit plugins on 64bit systems, Wine stuff in Linux 64bit)
  • Improve compatibility with some X11 UIs (breaks recursion)
  • Fix loading LV2 path parameters via "Open File..." button
  • Several fixes to CLAP plugin variant
  • Use system-wide Carla binaries when not found inside plugin bundle
  • Update to latest Carla, with initial experimental CLAP hosting

Downloads

The source code plus Linux, macOS and Windows binaries can be downloaded at https://github.com/DISTRHO/Ildaeil/releases/tag/v1.2.
Ildaeil is released as CLAP, LV2, VST2 and VST3 plugin, plus JACK Standalone for some systems.


> Carla 2.5.2 released
On 2022-10-15 by falkTX

Hello again everyone, it is release day again!
Let's start with 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.

This update backports fixes from the main development branch into the stable 2.5 series.
Nothing too big or serious, just a regular bug-fix update.
The more substantial stuff will come for 2.6.0, still a few months away.

Changelog

  • Fix includedir/libdir variables in pkg-config files
  • Fix LV2 plugins sending MIDI events out of order when using MIDI mapping for control output ports
  • Fix VST2 all-notes/sound-off events after re-activation
  • Fix "use outer frame for carla-lv2" from v2.5.1
  • Correct jackbridge build flags, prevent LTO from being used in wine stuff

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.


> Carla 2.5.1 released
On 2022-09-30 by falkTX

Hello again everyone, a new Carla release is here, v2.5.1 which brings a couple of fixes to the v2.5 series.

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.

Changelog

  • Do not set scale factor for LV2 plugin UIs on macOS
  • Fix external MIDI connections for JUCE engine driver
  • Fix a few memory leaks and runtime issues
  • Fix several race conditions
  • Fix logic around engine driver listings
  • Fix position of external patchbay graph nodes not being restored when switching from internal to external
  • Fix RISC-V builds
  • Fix win32 bridge builds on win64 systems (forcing usage of i686-w64-mingw32 if needed)
  • Ignore some compiler warnings from Qt side
  • Use an outer frame for carla-lv2 outgoing events

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.


> Ildaeil v1.1 released
On 2022-09-23 by falkTX

Hello everyone, a new release of Ildaeil is here.
Ildaeil is mini-plugin host working as a plugin, allowing one-to-one plugin format reusage.
The idea is to load it as a plugin inside your DAW and then the other "real" plugin inside Ildaeil.
This allows, for example, a VST3 host to load LV2 plugins.

The main changes here are JSFX "plugin" host support, fixing the VST3 implementation and adding a CLAP version.

ildaeil

Full changelog:

  • Add linux-riscv64 builds
  • Add source tarball (containing offline buildable source)
  • Can now host JSFX "plugins"
  • Fix all known VST3 issues
  • Fix build for web-assembly
  • Fix handling of LV2 plugins with path parameter
  • Fix high-dpi LV2 UIs for certain systems
  • Fix log sliders
  • Ildaeil as CLAP plugin
  • Use same bundle/folder for VST2 plugins on Linux and Windows
  • Update internal Carla to v2.5.1

Downloads

The source code plus Linux, macOS and Windows binaries can be downloaded at https://github.com/DISTRHO/Ildaeil/releases/tag/v1.1.
Ildaeil is released CLAP, LV2, VST2 and VST3 plugin, plus JACK Standalone for some systems.


> Cardinal 22.09 released
On 2022-09-19 by falkTX

Greetings everyone, we have yet another release of Cardinal, with a good set of bugfixes and a few nice to have features.
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 for this release, besides the fixes, are a dark vs light mode switch, CardinalNative build, finishing VST3 support and an initial CLAP version.
There are a couple of new module collections and updates to existing ones too.

cardinal

Changelog

  • Add CardinalNative standalone build (uses native audio from the system instead of JACK)
  • Add CLAP plugin version (fx and synth variants only, for now)
  • Add dark mode switch in View menu, enabled by default
  • Add readme and license to zip/tar releases
  • Add linux-riscv64 build
  • Add -Wno-format-security to build flags
  • Fix AU plugin crash when host does not provide time signature (x64 auval)
  • Fix AU plugin not updating for buffer-size and sample-rate changes
  • Fix VST2 crash when removing 1 of many similar instances
  • Fix VST2 and VST3 initial UI size in some hosts
  • Fix VST3 remaining issues and mark it as stable (only CV ports need attention, but no Host/DAW that I know implements these)
  • Fix memory corruption and leaks when loading and removing modules
  • Fix Bidoo not saving non-parameter data
  • Fix Bidoo limonade crashing when canceling its save dialog
  • Fix Ildaeil log sliders, allow mono input plugins
  • Fix/remove stray Carla module from "DRMR - Interverb.vcv" example patch
  • Split main variant audio IO in 4 stereo groups

Module changes

Downloads

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


> Introducing master_me
On 2022-09-18 by falkTX

Hello everyone, this is a release announcement/introduction for a new audio plugin: master_me.

master-me

master_me is an automatic audio mastering plugin for live-streaming, podcasting and internet radio stations.
It takes care of master levels and "polishes" the sound with a chain of effects while introducing no latency.
master_me is closely modeled after the audio chain of Klaus Scheuermann's mastering studio in Berlin, Germany.
See https://github.com/trummerschlunk/master_me for more details on the project, including documentation.

Klaus is main author of this plugin, using faust to set up the various DSP components and also to generate an audio plugin.
Using faust provided tools was deemed not enough, as there was a wish for something more custom, specially on the GUI side.
I was contacted to help with this part, so obviously I went with DPF for dealing with all the plugin implementation details.
And that is how we got here :)

master_me is now at version 1.1.0 actually, as we found a few bugs shortly after release which were important enough to hold before going on sharing/"marketing" the plugin.
The plugin was actually quite valuable in ironing out some issues from DPF side, specially for dealing with VST3.
So future releases of DPF-based plugins will improve because of it, and we get a cool new plugin too. Good stuff :)

Downloads

There are pre-compiled binaries for Linux, macOS and Windows which can downloaded at https://github.com/trummerschlunk/master_me/releases.
You can also find it in the KXStudio repositories as master-me package.

Enjoy and have fun!


> 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 apparance, 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-15 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 M1/M2systems 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!


> 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-02-19 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.


> Cardinal 22.04 released
On 2022-04-04 by falkTX

Hello everyone, yet another release of Cardinal is here, this time focused on 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

Changelog:

  • Add Interverb demo patch (in source code)
  • Add retrigger to Host-MIDI
  • Do not show resize handle on JACK Standalone
  • Fix and enable ChowDSP Credit module
  • Fix potential noise burts on load with ihtsyn MVerb-based modules
  • Fix messed up graphics on Windows with High-DPI screens
  • Fix resources not found on some Windows systems (by not relying on environment variables)
  • Fix several Windows UTF-16 issues
  • Fix X11 file dialogs not appearing on some systems (auto-activate needed DBus portal)
  • Fix VST3 state under some hosts
  • Make JACK Standalone more useful on Windows (log to console when possible, show error dialog if JACK not running)
  • Optimizations to core modules and headless build
  • Refresh default template, add FX and Synth specific template variants
  • Tweak Host-MIDI default parameters

Downloads

The source code plus Linux, macOS and Windows binaries can be downloaded at https://github.com/DISTRHO/Cardinal/releases/tag/22.04.
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.


> Cardinal 22.03 released
On 2022-03-21 by falkTX

Hello everyone, a new release of Cardinal is here.
This brings quite a few new extra modules, updates the existing ones and adds a few nice features as requested by users.
This is what changed compared to the (initial) 22.02 release:

  • Add Windows installer, shipping with optional Carla Plugin Host integration and JACK Standalone
  • Add AudioUnit plugin format for macOS
  • Fix build for HaikuOS (only headless possible for now)
  • Fix crash in headless build when loading certain modules
  • Fix GUI resize in high-dpi systems
  • Fix Host MIDI-CC channel pressure and pitchbend interfering with CCs
  • Fix repaints in macOS, allow to set update rate limit (only works in some hosts)
  • Fix VST2 keyboard input always in uppercase in some hosts
  • Force 32bit alignment for vectorized operations, fixes 32bit build
  • Initial bypass implementation, MIDI only for now
  • Make host audio meters independent from each other
  • Merge CardinalFX and CardinalSynth VST2 folders as single Cardinal.vst
  • Update VCV Rack base to v2.1

New modules

There's quite a few modules in this release, below follows a link to each project.
Same as in the previous release, all modules were checked for compatibility with GPLv3+ license. More details here.

Downloads

The source code plus Linux, macOS and Windows binaries can be downloaded at https://github.com/DISTRHO/Cardinal/releases/tag/22.03.
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.


> Ildaeil v1.0 released
On 2022-02-21 by falkTX

Hello everyone, another release is here, this time it is Ildaeil.
Something that was initially done as a test for Carla and ImGui usage within DPF, but turns out to be actually quite useful!
To those that are not up to date on KXStudio developments, let's recap this little new project...

ildaeil

Ildaeil is mini-plugin host working as a plugin allowing one-to-one plugin format reusage.
The idea is to load it as a plugin inside your DAW and then the other "real" plugin inside Ildaeil.
This allows, for example, a VST3 host to load LV2 plugins.

For the more technically-minded people, this is basically a combination of Carla, DPF and DPF-Widgets.
There is some small code of its own for handling the drawing of the plugin list, generic GUI and offset the embed GUIs, but everything else is done by these other projects.
Nothing that Ildaeil does is special, that Carla can't do, but using Carla means always having to deal with an extra window.
When wanting to load a single LV2 plugin on a non-LV2 supported host for example, this becomes quite cumbersome.
With a little bit of glue code to tie up Carla, DPF and a little GUI, this project becomes possible.

Example

Here is an example, loading the LV2-specific plugin Aether inside Renoise, which does not support LV2 plugins.

ildaeil-renoise-aether

You can see more of these screenshots here.

Details

The Ildaeil name comes from the korean 일대일, which means "one to one".
It is one plugin exposed to the host (Ildaeil itself) and one plugin loaded inside Ildaeil.

When open, Ildaeil will show a list of plugins to pick from or the plugin editor if one is already selected.
If the plugin provides an embedable UI, Ildaeil show will that by default, otherwise it shows a generic parameter list.
Toggling between generic vs custom/embed view is possible.
In the case of a plugin providing a custom UI that is not embedable, Ildaeil will show the generic view by default.
You can press "Show Custom GUI" to open the plugin UI in an external window.

For version 1.0, this is what we have:

  • Available as JACK/Standalone, LV2, VST2 and VST3 (with VST3 being experimental)
  • Can load internal (from Carla) and LV2 plugins
  • Comes in Synth, FX and MIDI variants
  • LV2 plugins can run in-process or bridged
  • Works on macOS, Windows and Linux/X11 systems

And these are the current limitations:

  • Plugin parameters are not exposed to the host
  • UI is not resizable by the host

Later on, in theory, it should be able to load the other plugin formats supported by Carla (that being LADSPA, DSSI, VST2, VST3 and AU).
There are some technical limitations that prevent this from happening right now, Carla will need some backend changes before this can happen.

Note that exposing the parameters to the host is not in the immediate plans.

Downloads

There are pre-compiled binaries for Linux, macOS and Windows which can downloaded at https://github.com/DISTRHO/Ildaeil/releases/tag/v1.0.
You can also find it in the KXStudio repositories as ildaeil package.

Have fun!


> Carla 2.4.2 has been released
On 2022-02-19 by falkTX

This is a bugfix release for Carla version v2.4 series, with some extra user-experience related changes.

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 a few crashes with JACK applications inside Carla
  • Fix build on non-supported systems by JUCE
  • Fix crash when LV2 X11 UI has non-mapped child window
  • Fix compatibility with Python 3.10
  • Fix default SF2/3 path
  • Fix LV2 UI resizing on macOS
  • Fix missing VST3 plugins not being searched recursively
  • Disable GraphicsScene indexing method to prevent crashes
  • Ensure custom data state save and restore always match

Changes

  • Add "[carla]" prefix to printed messages
  • Add appdata metadata information
  • Add notice when Carla needs to be restarted after an LV2 rescan
  • Add VST3 Windows common files to the default path (required by the latest VST3 spec)
  • Default to JACK backend if pipewire-jack replacement is installed
  • Implement dry/wet, volume and balance on JUCE hosted plugins
  • Reload audio file if sample rate changes
  • Use temporary files for big custom data values in bridges

Changes for using Carla as library

  • Add 8 CV, 32 IO and 64 IO CarlaPatchbay variants
  • Add audio port hints to backend, starting with lv2 sidechain
  • Add static plugin build target
  • Add WITH_LTO build option, disabled by default
  • Allow setting a custom C++ namespace
  • More work on experimental embed plugin UIs, now also possible on plugin bridges

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.2.
Carla v2.4.2 is provided in the KXStudio repositories and in many official Linux distribution repositories anyway.


> WineASIO v1.1.0 released
On 2022-02-18 by falkTX

Hello everyone, a new release of WineASIO is here.
This is mostly for Wine >= 6.5 compatibility, and a few small fixes here and there.
Check the git log for the precise changes.

Details are explained in the README file, but in short we now need to build an extra fake dll and use full paths when calling regsvr32.
Where we previously needed:
wine64 regsvr32 wineasio.dll
Now we require the full path, on Ubuntu for example it is:
wine64 regsvr32 /usr/lib/x86_64-linux-gnu/wine/x86_64-windows/wineasio.dll

As was the case with v1.0.0, there are no pre-compiled binaries for WineASIO, though it is available as a package in the KXStudio repositories.
You can find this v1.1.0 release at github.com/wineasio/wineasio.

Small warning: WineASIO is not compatible with PipeWire.
This is under investigation, it is not known at this point why it does not work for PipeWire's JACK implementation.


> Cardinal 22.02 is now released
On 2022-02-14 by falkTX

It is finally here, the first release of Cardinal.
Has been slowly brewing behind the scenes, and now ready for the masses.
First, some introductions...

cardinal

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 was created first and foremost as a way to have Rack as a proper open-source audio plugin.
A proper audio plugin should be self-contained as much as possible, as to not interfere with the DAW/Host. Loading external modules clearly goes against this idea.
Not to mention being open-source, otherwise we are at the mercy of the wishes of a company for what we can and cannot do, which is not that great...
(in case you were not aware, VCV's Rack plugin version, called "Rack Pro", is a commercial closed-source product)

It needs to be said that Cardinal project and its authors do not wish anything bad to the original/official Rack project.
In fact, Cardinal wouldn't exist if not for Rack v2 release. (which has many needed things to make a plugin version work)
Cardinal and Rack should be able to co-exist friendly and peacefully, as they clearly have different targets.
It is likely most people will prefer to use Rack Pro for its official support and its big module collection (including commercial ones).
A feature comparison between Cardinal and Rack Pro can be seen here.

With that out of the way, let's go through a quick overview.

Plugin variants

Cardinal provides 3 plugin variants - Main, Synth and FX.
They are all equivalent in performance and behaviour, with only the IO and metadata that changes.
This is because some hosts are very strict on which plugins are allowed as instruments vs FX, so separate variants of the same plugin are needed.

FX and Synth variants both have 2 audio outputs, while Main has 8.
All variants have MIDI input and output support.

Main provides 8 audio inputs and outputs and 10 CV inputs and outputs.
Note that due to VST2 format not supporting CV ports, this variant is not available for VST2.

Synth provides 2 audio outputs but no audio inputs or CV ports.
Plugin type is set as "instrument".

And finally FX provides 2 audio inputs and outputs, but no CV ports.
Plugin type is set as regular "effect".

Included modules

At the moment the following 3rd-party modules are provided:

Additionally Cardinal provides its own modules for DAW/Host automation, time position and internal plugin hosting.

Current status and future plans

With the exception of a few bugs, Cardinal can be considered stable.
Though currently the following should be noted:

  • Keyboard input does not always work in some hosts #24
  • VST3 support incomplete/experimental #41
  • Windows 32bit builds do not work well #80

A parameter expander module was not ready on time for this release, but will come soon in a future release.
Fundamental is on a similar situation, there are some artwork license issues that prevent us from using Fundamental exactly as we want.
We plan to redo Fundamental's panel graphics in a more liberal license, so it then can be included in Cardinal.

There are a few modules we want to add, but they are being evaluated carefully as going forward anything we add in Cardinal needs to remain there forever, for backwards compatibility.
They must also have a GPLv3+ compatible license, which not all of them do.
Not to mention a clear artwork/graphics license... it is amazing how many of these projects do not care or understand about software licenses :(
Overall it makes packaging quite difficult, so it is natural that new modules are not added as fast as we wished for.

Something I hope to try soon is an alternative way to handle MIDI to CV conversion, as I don't like the way Rack does it at the moment.
The current Cardinal "core" modules follow the same exact approach as the official Rack, to make the transition easier, but some kind of "MIDI v2" modules will be done eventually.

Contributing

If you like the project and want to help out, there are basic building instructions here,
And an overview of the source code is available here.

Currently we are all on #cardinal IRC room in irc.libera.chat server.
Come join us in your favorite IRC client or through a Matrix bridge.

Installing new modules on an existing Cardinal binary is not possible at run-time, but we can add new modules to the build.
Details on this are available here.
Also check this wiki page where we discuss possible modules to include.

Installing and using

Install instructions are available on this wiki page.
If you are using the KXStudio repositories you can simply install cardinal-lv2, cardinal-vst2 or cardinal-vst3 packages as usual.
Consult the wiki page linked above for details on other distributions, or otherwise use the prebuilt binaries on the Cardinal releases page.

There is no Cardinal official media content as of yet, but if you are looking for tutorials just look for "VCV Rack" stuff which pretty much applies to Cardinal unchanged.
Some modules will appear slightly different, or not be available, but the overall idea on how to use it is the same.

A few CC-0 / public domain Cardinal patches are present directly in the source code.
You can use those as your starting point, they are fully free to do what you want with.

And that is it, go download, install and have fun!
If you find an issue or want to request a potentially useful feature, please use the Cardinal issue tracker.
And happy Valentine's day too. \o/


> DPF-Plugins v1.5 released
On 2022-01-16 by falkTX

Hello everyone, a new release of DPF-Plugins is here.
DPF-Plugins is a collection of DPF-based plugins, including Kars, MVerb and Nekobi.
This is mostly a bugfix release, keeping up with the cool kids for regular releases.

Changelog:

  • Initial experimental VST3 support
  • Add bottom-right resize handle in glBars and ProM, needed in plugin formats that can't do host-side resizing
    (ProM resize handle is invisible but still works, known issue)
  • Some plugin GUIs can use Cairo instead of OpenGL, if OpenGL is not available at build time
  • Standalones no longer require JACK, instead detecting at runtime if it is available
  • Standalones will now use RtAudio for native audio device access in case JACK is not available
  • ProM now ships with (optional) vendored libprojectM in case it is not available as system library
  • ProM now sets up and uses OpenGL3 context instead of OpenGL2 forward compatibility mode, fixing usage on macOS and Windows
  • Fix modal about dialogs
  • Fix more High-DPI related issues
  • Fix OpenGL context swap on GUI deletion, needed on hosts using OpenGL

Downloads

The source code plus Linux, macOS and Windows binaries can be downloaded at https://github.com/DISTRHO/DPF-Plugins/releases/tag/v1.5.
The plugins are released as LADSPA, DSSI, LV2, VST2, VST3 and JACK standalone.


> KXStudio Monthly Report (November + December 2021)
On 2021-12-31 by falkTX

Hello all, this is yet another one of those monthly reports about the KXStudio project.
But this time I also want to give a little overview of 2021 as a year.
There was no November monthly report, due to me being busy with moving to a new place and a few other personal things.
This month though there are a few things to report on.

DPF and VST3 work resumes

After a little break on the VST3 implementation in DPF, I went back and reworked a few things that were clearly done wrong.
It is still considered experimental, but already works much better than before.
For example, UI to DSP parameter changes works properly now, which was not the case before in some hosts (including reaper).

Once complete, DPF based plugins will be one of the few that implement the whole component vs edit-controller separation.
This might prove quite valuable in the future, specially after hosts also implement the same.
We need to come back to this after I natively implement VST3 support in Carla.

Just as before, I am keeping a TODO list of items near the top of the relevant source code file for VST3. The same also applies to the UI side.
The super short summary is that most common things already work, with only optional buses, MIDI CC handling and minor details missing.
We don't get VST3 support finalized in DPF during 2021, but it shouldn't take that much longer now.

Continuing: Separating JACK tools from JACK1 and JACK2

Mentioned last time was the effort of splitting the example-clients and tools from the JACK repositories into a new repository/project.
I have been working with David Runge on this (or better said, he has been doing most of the work) with me reviewing each set of changes to each file one by one.
We are nearly finished, with only 1 file remaining.

Afterwards there is still some work to be done on the build setup and testing the whole thing, but it is good to see things progressing on this area that was being sadly neglected for many years.
If everything goes well, no one will notice a thing!
Maintenance is a lot of work that goes unnoticed, fun stuff..

Python 3.10 and updated PyQt woes

I do not know exactly the change that triggered it, but with newer versions of python and PyQt, pretty much all my tools that use PyQt are broken.
The community was quite helpful on fixing some Carla issues themselves without my direct intervention (as I do not run a rolling-release Linux distribution, I am not directly affected).
With this a new release of Carla is needed, the same for Cadence but that remains unfixed for the time being.

Cardinal, the Rack!

A new project has been brewing behind the scenes for more or less 3 months now.
It was not in my plans when 2021 started, specially since quite a few other things needed more attention..
But this was one of these things that is just impossible to put down as an idea.
In fact, lack of attention in Carla and JACK lately are due to this project, it is simply too exciting.

The quick history of the project is that, after VCV Rack v2 source code was made public, I began wondering if that codebase could be used for building an open-source plugin (unlike the official product, which is closed-source and commercial).
After finding out that VCV's official plugin would only support VST2 and still only the same 3 base architectures (Linux, macOS and Windows 64bit), also how the whole thing would supposedly work - loading modules from the library just like in the standalone - I was quite disappointed with the whole thing.
Rack is something that always interested me, but I was put off from the (to put it mildly) abrasive attitude towards open-source ideas and Linux packaging.
Running as standalone was also not that fun for me, I personally want to create synths and have those integrated in a DAW/sequencer workflow.

There was a project called VeeSeeVSTRack that also attempted an open-source plugin version of Rack, but it had some serious drawbacks:

  • Needs heavy changes to Rack source, which would have to be regularly maintained in order to keep up with upstream
  • All included modules need to be patched a fair bit just to work with it
  • Custom written plugin format support (so it only supported VST2)
  • Custom written OS-level Window handling (only supporting Windows and Linux/X11)

While the idea in general great, there was a not insignificant amount of work needed to maintain it.
If attempting something like this, would be best to not make the same "mistakes", and think about the whole deal on the long term.
With that in mind, the Cardinal project:

  • Does not fork Rack's source code, instead it uses it as submodule, replacing only a few critical functions and files
  • Besides internal modules, 3rd-party ones can be linked as-is with only changes to not use osdialog due to its event-blocking nature
  • Relies on DPF for plugin format support, so we get JACK, LV2 and VST2 from the start, VST3 in progress
  • Also relies on DPF for OS-level Window handling, so it works on macOS too (and eventually Haiku)

Similar to VeeSeeVSTRack, Cardinal builds the entire module collection as part of one binary and uses the host audio thread to drive the engine.
This means no online library access or external module loading, which is quite intentional.
More information on the "why" section of Cardinal's README.

The obvious question that might be in the air is what to make of the official Rack Pro plugin.
To which I say - if you enjoy Cardinal, go buy Rack Pro!
Cardinal would not exist without VCV Rack, so it is for our best interest that Rack lives on for a long while.
Also they serve different purposes:
Cardinal is open-source modules only, all integrated into 1 binary.
Rack Pro is just like the standalone with online library access, commercial modules etc. And obviously the official product too.
The Cardinal project includes a table of differences between itself and Rack Pro, in case you want to go deeper into technical details.

Cardinal should be considered beta-state at the moment.
While it already works quite well (except for a few known bugs as typical), there are a few missing pieces and license situation to sort out in detail.
A lot of Rack module developers started coding because of it, so without fully understanding artwork and source code license implications quite a few of them just copied what others were doing.
And this is the problem, Rack itself contains non-commercial and even non-derivatives clauses for its artwork.
A lot of developers copied the non-commercial clause without thinking too much about it, which makes them quite tricky if not impossible to package in a Linux distribution.
Before tagging v1.0, I want to sort out these details first, to ensure everything is done not only legally but also respectfully.
Already started this on this document, which greatly helps in giving an overview of the used source code and artwork licenses.

Before moving on, here's a screenshot, because everyone likes those. :)

cardinal

Many other DPF additions

While working on Cardinal, DPF got a real stress-test for some of its features.
Some were missing and needed to be added in order to make Cardinal work proper, some were found to be broken.
In no particular order, these changes were made in DPF to accommodate for Cardinal:

  • Add clipboard (copy & paste) support
  • Add cursor support
  • Add file dialog save support (used to be only loading allowed)
  • Add "desktop portal" DBus service support for providing native file browser dialogs on Linux
  • Add APIs around finding the bundle path of the plugin
  • Allow LTO (Link-Time-Optimization) build
  • Auto-creating macOS VST2 bundle from build step, instead of needing to run a script
  • Many fixes around file browser dialog support
  • Many fixes around VST2 keyboard input (WIP)

The only missing feature at the moment is drag&drop support, but that needs an implementation on pugl's side first.
Once that side is done, I already have a plugin in which to test it the functionality, so it should be pretty quick.

 

And that is all for now.
If you appreciate the kind of work I do, please consider a donation.
Thank you in advance for your support, happy holidays and a happy new year!


> KXStudio Monthly Report (October 2021)
On 2021-10-31 by falkTX

Hello all, another one of those monthly reports about the KXStudio project is here.
As you might have seen a few days ago we had v2.4.1 Carla release.
I was hoping to do a JACK2 release as well, but was busy with other things and did not have it ready on it. Next time then.

DPF + VST3 on pause

While VST3 support in DPF has advanced enough to load already in quite a few hosts, I got personally annoyed with it after finding out the way I did the UI/DSP separation is just completely wrong. :(
Working with the internals of VST3 has been quite frustrating, so just taking a little break from it.
Currently still going with the target of finalizing VST3 support in DPF (at least in beta-like status) by the end of the year.

I want to say, dealing with VST3 internals has made me appreciate LV2 even more.
VST3 has some good design choices and ideas, but parts of it are also just awful and nonsensical.
Hopefully after the initial implementation is done we do not have to change it much.

ImGui rendering issues fixed

Last month I reported about Dear ImGui being integrated as a DPF widget, with only some high-dpi rendering issues remaining.
Happy to report that this is finalized and tested to work on a couple of different configurations.
I might do a quick plugin set from porting existing audio software to DPF, as a way to 100% verify ImGui in DPF.
But for now Ildaeil (more on that below) has served as a nice test-case.

JSFX as plugin type in Carla

Jean Pierre Cimalando has started work on adding JSFX "plugin" support for Carla.
JSFX has nothing to do with JavaScript, but rather it originally comes from REAPER's extended audio processing capabilities.
They have defined a format for writing audio plugins that can be written and compiled on the fly.
This work from Jean is not yet complete, but great progress has already been made.
It is likely to end up on the next Carla release.

A little new test-project: Ildaeil

One crucial point for me accepting JSFX support in Carla was that it couldn't be limited to just Carla.
But this support being added directly in Carla doesn't help with that.. or does it?

Announcing Ildaeil! (sorta.. read on)
In case you do not know, Zrythm is using Carla as backend to deal with non-LV2 plugins.
Some of the things it uses were never properly tested in Carla or any other software, making it hard to fix bugs.
This combined with wanting JSFX on more hosts than just Carla and ImGui now fully working in DPF has given me enough motivation to try out a new project that would just combine everything into one.
This project is called "Ildaeil".

Ildaeil is basically Carla as a minified plugin, where instead of running the full GUI you have a super minimal GUI and set of features.
It uses DPF for the plugin-side (that is, to be an LV2, VST2 and VST3 plugin) and then Carla for the plugin hosting side. A bridge between the 2 worlds, basically.
For now I made it so that it lists the available LV2 plugins on the system and allows to load 1 from the list, embedding its custom GUI if possible.

ildaeil

This is not really an announcement because I have not yet decided the full scope of the project.
There are a LOT of things it could do, but then it becomes quite the work to maintain.
If you want to give it a try, feel free. But reports are welcome, feature requests are not (at this point).

Separating JACK tools from JACK1 and JACK2

For a very long time I have been meaning to merge back the changes done in JACK examples and tools from JACK2 back to JACK1.
Back in JACK2 v1.9.15 release I stated that help on this would be appreciated, but not much has happened since then.
Now that PipeWire is slowly becoming a thing, this is becoming crucial.

For distributions like Arch that do not typically split packages (hypothetically) installing pipewire-jack would remove jack2 and replace it with PipeWire's version.
But the tools like jack_connect, jack_wait, etc are part of the jack2 package, not pipewire-jack.
Installing pipewire-jack would (hypothetically) remove these tools.
There are quite a few set ups out there that rely on them, so a solution is needed here.

David Runge has started the effort of splitting these tools from the JACK repositories into a new one.
The idea is that JACK will no longer ship with them, and they become an extra set of tools to install separately.
This allows to switch between JACK versions (JACK1, JACK2 or PipeWire) and keep the same exact set of tools.

We will need to have new JACK1 and JACK2 versions that remove these tools before the new project can be officially tagged and released.
More news on this soon.

 

That is all for now.
There were a couple of other things done in DPF and a few other projects, but something I will cover in upcoming months.
If you appreciate the kind of work I do, please consider a donation.
Thank you in advance for your support, and stay safe out there!


> Carla 2.4.1 has been released
On 2021-10-15 by falkTX

This is a bugfix for Carla version v2.4 series, bringing some improvements and fixing a few bugs.

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.

Changelog

  • Better handling of VST3 parameters (hide as needed, number of steps, etc)
  • Fix compatibility with Python 3.10
  • Fix getting the proper X11 UIs size for more plugins
  • Fix plugin bridges not automatically closing if main Carla dies on macOS (similar to how it is done on Linux)
  • Fix unused parameters preventing real ones from showing up in the edit plugin dialog
  • Fix CarlaNativePlugin.h and CarlaPluginPtr.hpp header files not installed system-wide
  • Fix XY-Controller GUI missing on "make install" target
  • Fix VST2 plugins under macOS and High-DPI (by not reporting scale factor)
  • Replace -lpthread usage with -pthread, fixing RISC-V builds
  • Send keyboard and focus events as needed/possible to VST2 and VST3 UIs
  • Small tweaks to XY-Controller (make lines 1px thick, close UI with Esc key)
  • Special tweaks for static plugin target build (embeding carla statically in other applications/plugins)
  • Other minor fixes and tweaks

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.
Note that the "extras" KXStudio repository (which provides an updated JACK2) supports both Ubuntu 18.04 and 20.04.
The UbuntuStudio backports PPA also provides updated JACK2 packages.

There are no official Linux binary builds for v2.4.1 at this point.
Carla v2.4.1 is provided in the KXStudio repositories and in many official Linux distribution repositories too anyway.


> KXStudio Monthly Report (September 2021)
On 2021-09-30 by falkTX

Hello all, it is time for yet another one of those monthly reports about the KXStudio project.
In case you missed it last month, there are now dedicated KXStudio Board and KXStudio Development pages.
These serve to give a quick overview of the work being planned and the one actively being done.
Note that I typically remove stuff from the "done" column of the board a few days into the start of each month.

VST3 for DPF

The first new thing worth mentioning is the substantial work for VST3 in DPF made this month.
Though it is still in a state I consider alpha at the moment, everything that is crucial is implemented: from audio, midi, time position, parameters, programs, state, latency and gui.
Not recommended to release anything based on this yet, as there are memory leaks and the GUI only works on Linux at the moment (and known to break REAPER due to not plugging into the host runloop yet).

This VST3 implementation uses custom C-compatible API headers instead of the official SDK, so that we can have commercial plugins while not being tied to Steinberg and its restrictive licensing.
There is a lot of boilerplate code to implement for stuff that the SDK typically does for you, and it is still pretty unclean, but works for now for testing.

Worth noting that there is a clear DSP / UI separation for this VST3-compatible DPF implementation.
Instead of the UI having direct access to the DSP side and just calling functions, everything is passed through a VST3 "connection point" as messages.
There is something in place to support hosts that do not provide the "connection point" interfaces, so everything still works there too.

I expect to finalize the VST3 support already in October as there does not seem to be any technical limitation or blocker, it is just time needed to implement all the things.
Sadly VST3 only officially specifies support for Linux, macOS and Windows.
DPF can build for more systems than just these 3, so I made a question/request upstream for how to tackle the issue.

Other DPF updates

In other DPF news, I began experimenting with supporting Dear ImGui as a widget implementation.
Everything already works except drawing on the correct position with high-dpi, there are some weird quirks to figure out in regards to the OpenGL viewport.
The target is to allow to use ImGui for the full plugin gui or just as a subwidget.

imgui-widgets

Other worthy mentions on DPF world are the FEATURES and LICENSING table, which should help people decide if DPF is worthy for them or not.
As you might know, DPF is liberally licensed (under ISC) so that it can be used for commercial plugins without restrictions.
Hopefully clearing the license situation helps on that side of things.

 

That is all for now.
There are some bug-fix releases planned, but that will be something for October.
If you appreciate the kind of work I do, please consider a donation.
Thank you in advance for your support, and stay safe out there!


> KXStudio Monthly Report (August 2021)
On 2021-08-31 by falkTX

Hello all, another one of those monthly reports about the KXStudio project is here.
This month as you might have seen we had not one but two Carla releases.
Mostly bugfixes as expected, the new stuff was all very minor compared to past releases.
A few additonal things were added/fixed in Carla already since then, but all still very minor.
Whatever is ready by next release day (October 15) will be what gets in next, just to get a nice pace of releases going.

More (final?) DPF updates

DPF got a lot of attention once again.
It is now on a state where I can focus on bugfixes rather than new things, even though I still want to try official SVG support.
Everything that was in the previous DPF (that is, the git master branch) should now be in the develop branch.
I am confident enough in this that made a new "main" branch to be the default clone target (I will keep the old master branch untouched, as there are a few minor things that can't be made backwards compatible).

Fixing high-dpi support

Something that got a fair bit of attention was high-dpi support.
Previously DPF read the scale factor from the host (if provided, most do not) but now it can also figure it out on its own as fallback.
There was a lot of back and forth until it was verified to work on all major OSes and formats.
I also updated the DPF-Plugins project so that all plugins contained within it support this.
Even though some being bitmap-based causes their UI to look blurry, at least they will appear in the correct size.
You can see them in the screenshot below.

dpf-plugins-big

sofd improvements

Some care was given to the sofd module used by DPF as fallback X11 file browser dialog.
It serves us well enough because it generally works fine, but never looked that great in my opinion..
I spent some time to change its colors a bit to follow a more traditional/usual approach, plus a dark theme because yes.
And then on top make it work nicely for high-dpi setups too.
Not everyone uses dark themes, so there needs to be a light theme option too, not sure yet if it can be chosen automatically.
Personally I think it looks much better, but tastes are subjective. Anyway, the differences can be seen below:
(will submit the changes upstream after all the DPF file dialog stuff is finalized and stable)

sofd-compare

External UI

As a final thing to mention for DPF, the last item that needed attention before the rework being in feature-parity with old branch, is external UI support.
The idea being that we can reuse DPF APIs and plugin export support but do the UI stuff completely separately - be it separate process or a custom implementation.
As long as it is in a way the plugin host expects things (ie, X11 window on Linux) things should just work..

The old DPF master branch didn't support this fully, but there was some experimental stuff in place.
Now it is back again, with a little more documentation and better support - it should eventually be an official DPF feature.
You can follow its discussion and progress here and because everyone likes screenshots, here is one as a quick test of mpv running as the external UI:

external-ui-mpv

ProM revived

One little plugin I made quite some years ago but left it aside due to difficulties in packaging was ProM.
ProM is basically projectM in plugin form, on top of DPF.
It allows you to have old-school milkdrop-like visualizations on your DAW/host, it is an audio plugin after all.
After a little fighting over building projectM correctly (directly in ProM source, aka "vendored"), I can now say it builds and runs on at least GNU/Linux, macOS and Windows.
Taking from last month's automatic build setup, binaries are automatically generated for these 3 OSes directly from GitHub.
To make Linux distribution packagers happy, the option to build against system-provided libprojectM is still present, and should work even better now as it finds the shared data prefix to use via pkg-config.

prom-revival

Website updates

Worth of a little note, I updated the kx.studio website to better work in smaller screens, or vertical ones, or both like in mobile phones.
The content itself is mostly unchanged, still need to tackle that (specially documentation, there is a lot of old stuff there).
They typically call this "responsive design" I guess.
The news part I didn't update, as otherwise it would break RSS readers, and the top menu needs to become of one those "hamburguer"-style things when width is low. A task for later.

A final website update worth mentioning is the addition of the board and development pages.
As people sometimes wonder what I have been doing lately (specially important for those that give out donations, thanks for that by the way!) the board view is now integrated into the site. I added color descriptions there too.
Hopefully that makes everything more clear, and more visible too of course.

 

That is all for now.
If you appreciate the kind of work I do, please consider a donation.
Thank you in advance for your support, and stay safe out there!


> Carla Plugin Host v2.4.0 is here
On 2021-08-20 by falkTX

Hello everyone, this is the announcement of the 2.4.0 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 was initially meant to be 2.3.3 but there are some small new features so treating it as bugfix would be misleading.
Semantically-speaking, new stuff means new version, so 2.4 it is.
I was going to wait a bit more until a release, but it is Ubuntu feature freeze time, so got to go with what is available now in order to make it.
Anyway, let's go through the (small) release highlights.

audiofile

Option to use classic skin by default

Who doesn't like a little bit of nostalgia?
Reminiscent of its v1.x days, the "classic" rack skin can now be made into the default.
So now you can be on latest Carla with all the new stuff, but still feel retro. :D

The dry/wet and volume controls are only accessible through the built-in plugin edit dialog,
but in return the whole rack takes less screen space.


lv2-gtk-windows

LV2 Gtk UIs on any system

After some changes on how Carla handles its Gtk UI bridges, it is now possible to build and use them on any system.
Behind the scenes instead of directly linking against Gtk libraries, the Carla Gtk UI bridge will open the Gtk library/DLL to find the needed symbols in order to get a working Gtk setup.
This doesn't change the behaviour on Linux, but allows to use Gtk-based UIs on systems like Windows and macOS.
Its usefulness is a bit questionable, my main reason to change this was to be able to adapt to new Gtk versions more easily, but it has nice side effects.

Currently there are no LV2 plugins released on macOS or Windows that make use of such a UI, but could change soon via PawPaw.
I have been doing some tests and at least amsynth and Invada are possible to get working with their full UIs.
Later on I will see if and how it could be possible to package such plugins with their UIs.


Full changelog

  • Add option to use classic skin by default
  • Add support for lv2 ui gtk bridges on any system
  • Set display scale factor for carla-bridge-*/carla-single standalone usage (on macOS and X11 systems)
  • Fix Linux VST3 plugin GUIs crash on close
  • Fix build under msys2 (will not force static binaries)
  • Fix keyboard focus for bridges on macOS (2nd attempt)
  • Fix canvas icon in settings to be high-dpi compatible
  • Fix wrong scale factor of plugin GUIs under macOS

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.
Note that the "extras" KXStudio repository (which provides an updated JACK2) supports both Ubuntu 18.04 and 20.04.
The UbuntuStudio backports PPA also provides updated JACK2 packages.

There are no official Linux binary builds for v2.4 at this point.
Carla v2.4 is provided in the KXStudio repositories and in many official Linux distribution repositories too anyway.

 

As always, if you appreciate the kind of work I do, please consider a donation.
Thank you in advance for your support, and stay safe out there!


> Carla 2.3.2 has been released
On 2021-08-08 by falkTX

This is a bugfix for Carla version v2.3 series, mostly fixing a few regressions with the previous release.

Changelog

  • Add 32x32 icon
  • Do not show --gdb in usage/help when not installed system-wide
  • Fix default SF2 search path
  • Fix keyboard focus for bridges on macOS
  • Fix X11-UIs related regressions in v2.3.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.

 

As always, if you appreciate the kind of work I do, please consider a donation.
Thank you in advance for your support, and stay safe out there!


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

Hello all, another monthly report about the KXStudio project is here.
First, in case you missed it, Carla v2.3.1 and JACK2 v1.9.19 have been released.
A few issues were reported against this latest Carla release (regressions) so expect a v2.3.2 very soon.
Due to travis-ci.org shutting down (and the replacement travis-ci.com being absolutely terrible) the binaries for these releases were not automated.
Which brings me to this month's first topic.

Automated builds & artifacts

Since travis became unusable, and manually doing builds everytime is a bit of a pain, I began looking for alternatives.
GitHub Actions seems to be what most developers have run to, but I am not really happy putting yet more stuff into GitHub.
While there are some alternatives, even self-hosting, in the end being pragmatic I threw the towel and just let GitHub handle it.
For projects that already have a presence on GitHub, the integration just makes sense.

One of the issues with travis was the lack of daily/latest build binaries.
While it was possible to setup, it usually required creating a tag or release to upload the binaries into.
GitHub Actions can have "artifacts" associated with any build, with no special setup required from contributors.
This was the main thing that pushed me to just stick with GitHub for this.
If someone external to a project submits a pull-request, there will be automated builds with the proposed changes ready for testing.
The fact that builds start immediately (instead of sometimes having to wait several hours like in other services) is super nice to see.

But are there any benefits to users, you may ask.
Well, take for the example JACK, for which I already added automated builds.
If you open the JACK2 GitHub Actions page, there will be macOS and Windows installers for each build going forwards.
When there comes a time where a change requires testing, there is no longer a need to build things manually.

Automated builds via GitHub Actions (and the resulting artifacts) also fit nicely for DPF.
I was able to create a "workflow" file (that is, a file that describes what to build and how) for DPF-based plugins, where it builds and publishes linux-armhf, linux-arm64, linux-x64, macOS (universal), win32 and win64 binaries, all in a single file.
So you can basically take this file, place it in your own repository, and directly have all those linux, macOS and windows builds right away.
I already have this setup for pretty all of DPF-based plugins under the DISTRHO GitHub organization.
As an experiment, I added the same support to dragonfly-reverb project.
So now if you go to its GitHub Actions page and click on the latest commit, you will be able to download and install/use the build artifacts.

This is extremely valuable, as not everyone has a macOS or Windows machine in order to do builds for those.
Or maybe the other way around, someone on macOS or Windows without a Linux machine, etc etc.
I also think of the situation of people wanting to try out a change in the code but don't have the developer tools needed to build the project themselves.
While maybe not a big issue for DPF/Plugin projects (as they tend to be small in size), for things like Carla where build dependencies are a lot more involved, almost no one will have everything needed to make binaries alike the official ones.
With these automated builds, you can basically create a pull request and just enjoy the build - which will follow the same exact conventions as official builds.

Now, this is not in place for Carla just yet, but it is in progress.
Currently DPF (plus the plugins made with them under DISTRHO) and JACK2 have automated builds via GitHub Actions.
More will follow soon.

Packaging

There are no updates regarding packages in the KXStudio repositories at this time.
Even though some packaged plugins are out-of-date, yes..

Thinking of packages, I might just do a whole month focused on them soon.
There has been quite some nice releases of open-source audio plugins lately that would be great to have packaged, but lack of proper time for them is a problem.
As the last details on DPF new release are being resolved, packaging might be the next thing to focus on.

Special attention is needed on JUCE things though, because the LV2 wrapper is still somewhat of a pain for external developers to integrate properly.
(If only JUCE devs made the LV2 wrapper official! errr...)

Anyway, this packaging thing is not so much of news but more of wishes.
Before new JUCE-based plugins get packaged, I want to sort out the LV2 wrapper mess, make it as easy as possible for developers to have official LV2 variants.
Only me building LV2 versions (for the KXStudio repositories) is not something I want to push for anymore, rather it would be best for everyone to have said LV2 versions.

 

That is all for now.
If you appreciate the kind of work I do, please consider a donation.
Thank you in advance for your support, and stay safe out there!


> Carla 2.3.1 has been released
On 2021-07-16 by falkTX

This is a bugfix for Carla version v2.3 series, fixing many bug reports and stuff I found along the way.

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.

Changelog

  • Add NSLocalNetworkUsageDescription and NSMicrophoneUsageDescription in macOS builds
  • Allow canvas eyecandy for Qt >= 5.12
  • Alternative approach to deal with JACK postponed events (improves PipeWire usage)
  • Implement parameter groups for VST2 plugins
  • Ignore hosts calling Carla-VST effOpen twice (don't print errors)
  • Listen to Windows and X11 plugin UI resize events (without extensions)
  • Make some macOS dialogs modal
  • Remove favorite plugins from list when they fail to load
  • Update JUCE plugin code to new APIs, hook into VST2 for feature parity with native implementation
  • Use new tick_double for JACK transport
  • Use posix_spawn to launch macOS bridges
  • Fix available decimal points on a few dialogs being incorrect
  • Fix bridged plugin UIs appearing behind main carla window on macOS
  • Fix canvas auto-refreshing on exit, potentially leading to crash
  • Fix canvas split/join action
  • Fix carla-vst-wine symbol visibility
  • Fix default rack "skin" for a few plugins
  • Fix initial size for LV2 UIs with no UI resize extension (all OSes)
  • Fix loading state of Windows/macOS VST2 plugins without chunk
  • Fix macOS binaries not being debug/symbol stripped
  • Fix midi-pattern plugin having double notes on transport reposition
  • Fix race condition (and potential crash) around postponed RT events
  • Fix Qt >= 5.10 version checks
  • Fix unused JACK latency callbacks (removed)
  • Fix X11 UIs not having keyboard focus

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.
Note that the "extras" KXStudio repository (which provides an updated JACK2) supports both Ubuntu 18.04 and 20.04.
The UbuntuStudio backports PPA also provides updated JACK2 packages.

There are no official Linux binary builds for v2.3.1 at this point.
Carla v2.3.1 is provided in the KXStudio repositories and in many official Linux distribution repositories too anyway.


> Changes in the extra KXStudio repositories regarding JACK2
On 2021-07-05 by falkTX

This is a small notice to everyone using JACK2 with the extra KXStudio repositories. (those for Ubuntu 18.04 and 20.04)

A change in the JACK2 code has made it so a restart of the server is required after the update.
The technical reason for this is an internal ABI change due to forced-alignment in a few struct/classes.
This change is required for some ARM platforms where non-aligned access results in a bus error.

If you use jackdbus (likely with KXStudio stuff), you will need to actually kill it. (or use the usual cadence-session-start -s command.
If that does not work, good old restart is your friend. :)

This small update brings JACK2 v1.9.19 early, as a way to get a little more testing before official release.
That said release is planned for April 15.


> KXStudio Monthly Report (June 2021) and a Little Personal Note
On 2021-06-31 by falkTX

Hello all, another monthly report about the KXStudio project is here.
A bit late this time, but let's ignore that. :)

cadence-session-start -s

> KXStudio Monthly Report (June 2021) and a Little Personal Note
On 2021-06-31 by falkTX

Hello all, another monthly report about the KXStudio project is here.
A bit late this time, but let's ignore that. :)

DPF updates

DPF got most of the attention again.
Things are progressing, not as fast as I hoped, but there is progress. (I really underestimated the amount of time DPF would take)
The main reason for the DPF attention and rework - updating its pugl graphics backend to latest upstream with no patches - is complete.
Only 1 small change is still custom, related to using sofd as a fallback file browser dialog on Linux.
After some discussion with the author, I realized such a change/patch doesn't belong in pugl. I will change this part of DPF at a later time.
There are some small additions made on DPF-side of the code for pugl, but nothing that requires changing pugl itself.

New stuff was added in DPF of course, first we have a complete port groups implementation, based on an initial PR from Jean Pierre Cimalando.
It is supported on LV2, VST2 and JACK targets, wherever is possible on those anyway.
For LV2, port groups are set in the meta-data for both audio/CV ports and parameters.
For VST2, parameter groups are supported (named categories in VST world)
For JACK, lv2-like meta-data is set on the audio and CV ports.

Next, the JACK target can now always be built, by including jackbridge code from Carla (adapted to make fit DPF better, also liberally licensed).
This makes it so that:

  1. JACK headers and libraries are not needed at build-time
  2. Compiled binaries to not link to libjack
  3. libjack is loaded dynamically at runtime, printing an error if not found

As a 2nd step on top of this, RtAudio is used as fallback in case JACK is not available or connecting to the JACK server fails (usually because it is simply not running)
This has been requested a few times, and it is finally here.
DPF will setup RtAudio so it opens the default audio input and output as needed. MIDI is not supported yet.
In any case, such fallback makes testing of DPF plugins much easier, specially on systems that do not have JACK.

Moving on, I started some classes that simply do event handling, split off from the ImageButton and ImageKnob into something generic.
The idea here is to make it easier for developers to get a working widget from scratch.
Maybe this will help DPF based plugins to be more consistent on their behaviour too.
Note that this work is not yet finalized, so these classes are not yet documented.
I am using them on a new set of plugins, coding on a as-needed basis, so this will keep evolving over time.

More stuff was added too, though not as substantial, including (in no particular order):

  • Allow UI_TYPE = generic, so UI can be opengl or cairo, whichever is available
  • Initial work for VST3 compatible plugins, lots to do.. (nothing to see just yet)
  • Implemented Window::openFileBrowser() fallback for state files, so you always get a file browser

DPF is now at a point where I want to focus on stability and testing.
Out of all feature requests, only SVG support is deemed important and "breakage-worthy" (if that makes sense).
Once SVG support is in, there will be a feature freeze and then getting everything to work at least as good as before.

One-Knob Series

As a way to stress-test the new DPF and also start having some usable DPF-Widgets I began a new project called One-Knob Series that is going to be slowly brewing for the upcoming months.
I am not taking a rush on this one, its initial purpose is to test DPF but it so happens that it is also a nice, fun and useful project.
The idea here is to make a collection of stupidly simple but well-polished and visually pleasing audio plugins, with as little controls as possible, often just one knob and a few options.
Eventually they will be not just as a test for DPF, but also as a show-case of what it can do, plus give an example of good practices within DPF.

ok-series

The guidelines for the collection are:

  • Must have one main control/knob (linear or logarithmic), with one auxiliary slider/knob allowed but discouraged
  • Can have maximum 3 auxiliary options (list of values or toggles)
  • Parameter changes must be click-free
  • GUI must be cleanly scalable (no bitmaps allowed or blurred resources when scaled)
  • GUI must follow the same style

I have a few ideas for useful one-knob style of plugins, to slowly be put into action throughout the year.
Before you ask, you can already build and use them yes.
I don't recommend doing so right now though.

Other

A new Carla release is coming very soon, for the quarterly release pact once again.
It is going to be a bugfix release, I will write more details about it in 13 days for the 15th of July.
JACK2 will very likely see a new version too, pretty minimal but keeping with the spirit of doing regular releases.

Now, into some personal notes...
I am a little frustrated, perhaps disappointed, that pushing for donations doesn't work.
The number of subcriptions has been going down, not up.
While I want to keep doing these kinda of things, being realistic, it is really not sustainable.
All the free time is basically spent on this, but it does not pay off.
Perhaps that should have been expected..
It seems that (in my opinion), in order to make it really pay off, a whole lot more effort would be needed.
Not just with coding, but more regular interaction with community, basically a whole lot of reporting and being present.
The projects that really succeed in such funding pretty much always have someone very "present" and visible within their community.
It is tough, and maybe was just not feasible at all. We know audio development, specially on Linux or open-source, is very very niche.

So it is clear that keeping this up as-is is not possible, a lot of my life stuff was ignored or put on hold (it was lockdown anyway, so not much of a problem).
For the sake of sanity and balance, going forward for the next 6 months (so the rest of the year), plan is now:

  • no more new-feature developments, bugfixes only (the svg and vst3 support in dpf being the exception, I feel like they are essential)
  • will restrict time spent working on floss stuff to whatever is left from main job, no more weekends, max 40h/week
  • when bugfixes get boring, will do packaging, website updates or writting user manuals

And that's all for now.
Obviously I will still keep working on these things, don't worry.
Specially Carla and DPF have my main attention, but will be on a more reasonable pace from now on.
As always, if you appreciate the kind of work I do, please consider a donation.
Thank you in advance for your support, and stay safe out there! See you soon!


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

Hello all, another monthly report about the KXStudio project is here.
I skipped last month as there was not much to report.
Mainly there were new releases, but those had their own announcement (specifically, Carla v2.3 and JACK2 v1.9.18).
Afterwards there was a small personal situation (that is still unfolding) that took all my free time, so that was it.
There are a few updates related to the month of May though!

DPF updates

The main thing to report today is all the work that I've been putting in DPF recently.
This has been a long-time coming, but better late than never.
For those unaware, DPF is a very small C++ framework to create audio plugins with.
It has UI support, but it is intentionally not a fully-fledged UI toolkit, same for its DSP side.
It can export as LV2, VST2 and other plugin formats, but it does not try to do much more than that.
Native OS events is handled behind the scenes via pugl.

One major task to do was updating to latest pugl, because it supports many more things compared to old versions.
pugl had its event system completely reworked though, so we can't just update and use it as-is.
In the end, this update work is something that took several weeks.
I took the chance to rework some core components of DPF UI handling together with this, as there were a few parts of the code that proved confusing to other developers.
Also added in testing units and demo applications to help test several parts of DPF, though this is still very much work-in-progress.
This was specially useful to ensure core parts were working before proceeding with the rework.
Related to pugl update and rework, the Cairo backend of DPF is now pretty much on-par with its OpenGL one.
The Demo tool (where we test images, events, resizing, etc) has consistent behaviour between the two.

dpf-demo

Continuing with the rework, special attention was given to resizing.
Resizing in LV2 UIs has always been something very painful, which still does not work correctly in many hosts.
One culprit of this was the bad initial decision to use an LV2 extension to deal with UI resizing.
Turns out, we do not need this at all!
So the next version of DPF will no longer make use of LV2 UI resize extensions.
We will need to accommodate hosts to this, which is a breaking change.
But it is not like LV2 plugin-side resizing was working well in the first place anyway.
I already did this for Carla. Likely will do similar things to suil if no one else does.

On even more DPF news, I created a new open-source code repository meant for reusable DPF UI widgets.
It has come to my attention that developers struggle with DPF having very little common widgets they are used to.
I have made a few ones based on images for the DPF-Plugins collection, but some developers struggle to create individual widgets from scratch.
This code repository will evolve over time, obviously as a new project which is only a few days old there is not much to see.
One common request has been a resize handle, so that for plugin formats like VST2 which do not allow user-side resizing we still have a way for the user to resize the UI.
There is one generic resize handle in the repository now, usable for both Cairo and OpenGL backends.
The first real widgets I am contributing to the repository are a port of oui-blendish which provides blender-style looking widgets.
I am still setting up the whole thing, but initial impressions are very good. It even works with High-DPI / custom scale factors!
(ignore the bitmap icons on the screenshot below, those are only used in testing, I will later either replace them or remove them)

dpf-widgets-blendish

Finally on DPF side, as contributions by Jean Pierre Cimalando, CMake is now supported for building DPF and using it in plugins targeting DPF.
As a second step on top of CMake, it is now possible to build DPF with MSVC on Windows.
I tried this myself and was able to build a DPF VST2 plugin with MSVC and run the output binary inside Carla.
This is not my development workflow by any means (it was the first time I used MSVC!) but it opens up the process for many more people, which always great.

dpf-msvc

One last bit of news regarding DPF is that I started testing the waters for VST3 support.
There is almost nothing to see just yet, as there is enough to do in DPF regarding polishing, fixing bugs and handling requests so that VST3 work is not a priority.
It is something that I have took an interest on lately though, as a potential way to attract commercial developers/vendors to DPF.
(and perhaps some well needed funding? who knows..)

Work on DPF will continue, you can grab all these changes from its develop branch.
Expect more news about it next month.

Other updates

While most of my time and attention was given to DPF, a few other things happened.
There is the whole "Audacity was bought up by Muse Group and added CLA, plus telemetry coming soon" thing...
I did some tests with building Audacity with mingw, and succeeded in setting up scripts to build required dependencies and then build audacity itself.
From what I tested on Windows everything seems to work.
(screenshot below is from Wine, but I also tested on real Windows via Virtual Machine)

audacity-win32-build
Most mingw needed fixes were submitted upstream, but them now requiring a CLA means the PR will likely stay open indefinitely.
Also did some tests with building Audacity with wxQt and while it kinda works, still has some obvious issues - the wxWidgets Qt backend is not feature complete so it is normal for those to happen.
It is very likely I will end up maintaining some custom builds for Audacity once more network features creep in (analytics is coming to Audacity for sure, it is just a matter of when and how).
I am not interested on a fork, only in a way for casual users to get similar builds to the official ones without user-data tracking.

There are some other random things too, for example adding a new "-w" argument to the new jack2 zalsa tools so that it waits until the requested soundcard is available instead of failing to start.
This is very handy when adding it as part of some boot process.

Carla has also seen some pipewire-related fixes.
It is still not working 100%, but already know of a solution for them, just need to put that into code.
Expect a v2.3.1 release soon with these fixes, and also the LV2 UI resize handling mentioned above.

Finally I added support for FFmpeg JACK output. Seems to work well from what I tested, but I no longer have a need for it.
Once I am done with DPF and other things, I will try to submit this upstream.

Regarding packages in the KXStudio repositories, there are some small updates. Those are:

  • Added bjumblr
  • Added bslizr-uwu (custom skin to bslizr)
  • bslizr updated to 1.2.14
  • lsp-plugins updated to 1.1.30

 

That is all for now.
If you appreciate the kind of work I do, please consider a donation.
Thank you in advance for your support, and stay safe out there!


> Carla Plugin Host v2.3 is here
On 2021-04-15 by falkTX

Hello everyone, this is the announcement of the 2.3 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 specific release, compared to v2.3-RC2, brings some much needed fixes to the MIDI Pattern plugin - it finally works as expected.
There were some fixes done on the patchcanvas side, and for other stuff as reported by users.
The full list of changes for v2.3 (coming from v2.3-RC2) are:

  • Fix a float vs int usage, which will break in python soon
  • Fix cancelling plugin discovery
  • Fix main client name for multiple carlas inside NSM
  • Fix missing vst3 poly aftertouch
  • Fix patchcanvas use of keyboard modifiers
  • Fix project filename/folder only set after saving once
  • Fix recursive VST2 audioMasterAutomate parameter changes
  • Fix sorting plugins by favorite
  • Do not run 2nd instance of lv2 plugin if it has event output(s)
  • Read lv2 midi:binding on control ports and parameters
  • Use Ctrl+P to open/close side panel
  • Use fixed buffers on standalone bridge mode
  • midipattern: overall fix up
  • midipattern: use Esc key to close UI

The v2.3-RC1 announcement already listed the new features that v2.3 brings (compared to v2.2), but let's go through the release highlights again.

macos-universal

macOS arm64/universal build support

Starting with v2.3, Carla natively supports the new macOS arm64 architecture, used in the new M1 hardware models.
The Carla macOS universal build supports x86_64 and arm64 architectures at the same time, and should run on anything 10.12 or newer.

As Carla has support for plugin bridges (even across architectures), I took care to make sure that the arm64 version can load x86_64 plugins.
When a plugin fails to load in a specific way, Carla will try to load it again but now in x86_64 mode.
This is currently working for VST2 and VST3 plugins.

Additionally, for something that kept bothering me a lot, Carla will automatically remove plugins from macOS quarentine before loading them.
This is not possible to do for AudioUnits as we do not have the full path to the plugin binary, but valid for all other formats.
No more security theatre shenanigans here! :)


audiofile

General improvements to AudioFile plugin

The AudioFile internal plugin received some deserved attention this time around.
Besides basically reworking how its disk-streaming functionality (more robust and much less CPU usage),
it finally can do resampling so it will sound correctly no matter the sample rate.
Additionally mp3 support was added via dr_mp3, as libsndfile used by it does not yet officially support it.

Both Audio and MIDI file plugins are now exposed as LV2 plugins, allowing to load and use these plugins outside of Carla.
It supports file parameter plus patch Get/Set with State mapPath as expected for these kinds of plugins.
The experimental "inline-display" of the AudioFile is also exposed as an LV2 feature.


midipattern

General improvements to MIDI Pattern plugin

Not just the AudioFile plugin, but the MIDI Pattern one also received some much needed attention.
The piano-roll UI code was reworked to ensure it worked well, as previously moving notes around just didn't work at all.
Many precautions were added against edge-cases.

Hovering notes will change the mouse cursor to better indicate the potential action in case of mouse press.
And as with pretty much all other plugins in Carla, using Escape key will now close the plugin UI too.


windows

Reworked Windows builds

The infrastructure used to build Windows binaries is now through PawPaw, as done with JACK2 already.
With this, I have control over the whole toolchain and libraries that are used in Carla Windows binaries (previously msys2 packages were used).

For users, this means these binaries are more robust and with less dependencies.
(I am building with static libraries as much as possible, so no more ligcc/libstdc++6 mess).
The Windows zip file download no longer ships with a single Carla.exe, instead please run Carla.exe inside the Carla folder, should be easy to spot.

For developers, a nice side-effect is that we can finally tweak the behaviour of the startup executable, now allowing debug messages to be seen. (though you need to run it in Console/PowerShell for that)
The libraries that allow to use and talk to Carla Host API are now provided on these builds.

Finally, it should be possible to build Carla under msys2 on Windows now.
I can make a quick tutorial if that is something that interests you, let me know if that is the case.


icons

Use system/desktop theme icons (non-macOS/Windows only)

Due to popular demand, there is now an option in the experimental settings to use system/desktop theme icons.
This will remain as experimental feature for 1 release, so we can catch potential issues in the mean time, and fix them.

Since I do not mind the default Carla icons (quite like them actually), this is not meant for me.
Feel free to use it and report back if you spot something weird or incorrect.


Other notable changes

  • Allow to run CV plugins in rack mode, with CV connected to a dummy port
  • Carla-Control no longer has return remote url option, not needed after some fixes
  • Clear up situation with nogui and carla-osc-gui script (explanation article to come later)
  • Disable OSC by default on macOS (needs to ask permission to use network, which may look suspicious)
  • Do not build external plugins by default
  • General improvement to LV2 parameter API support
  • Many, many, many bug-fixes

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.

Notes for users

This was already the case for v2.2 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.
Note that the "extras" KXStudio repository (which provides an updated JACK2) supports both Ubuntu 18.04 and 20.04.
The UbuntuStudio backports PPA also provides updated JACK2 packages.

There are no official Linux binary builds for v2.3 at this point.
Since v2.3 the official builds are automated, but I did not bother setting that up for Linux yet as it is easier to get a working Linux build compared to macOS and Windows.
Carla v2.3 is provided in the KXStudio repositories and in many official Linux distribution repositories too anyway.


> KXStudio Monthly Report (March 2021)
On 2021-03-31 by falkTX

Hello all, another monthly report about the KXStudio project is here.

If you have been paying attention to these reports, you likely already know what is going to be covered here.
Starting late February, I began using a public kanban-style board in order to show/list the things I am working on and plan to do on the short and medium term.
In a few days I will delete the "done" items related to March, so that the "done" stuff actually relates to the current month.

Now getting to the news..
First, in case you missed it, DISTRHO-Ports and PawPaw had a new release, which finalizes the custom/redistributable Vitalium fork of Vital.
While testing, a few issues on the JUCE LV2 wrapper were found and fixed.
To the point of, at least on Linux, we now have the LV2 version behaving better than the VST3 one.
Additionally, this PawPaw release automates the macOS-universal builds, something that is being applied for Carla and jack2 next releases.

Speaking of Carla, the 2.3-RC2 version was tagged, with the final v2.3 release scheduled for April 15.
The remaining things to check and fix are all very minor, so we are all good for a release anyway.

And speaking of jack2, current plans are to fix the macOS-universal meta-data situation among other minor things where possible.
I began fetching the zita-a2j/j2a code to work as internal client (just like jack1 does) but found a few issues while testing.
It already works well if the internal client is not unloaded, which is good enough for the setup I had in mind for it first - using it to expose USB audio gadget mode in a MOD device.
You can already grab the code from moddevices jack2 fork though I will try fix the last things so it is good to add in next jack2 release, expected at April 15 as well.

There is a big DPF overhaul of its graphic handling, mostly triggered from updating to latest pugl (used for window and event handling).
There is nothing to show just yet, as the code does not even build right now.
I am still on the phase of reworking some core C++ code, so yeah, nothing to show yet.

On a small note, I also patched eg-sampler (LV2 example sampler) to be able to load non-mono files and resample the audio sample to the host sample-rate.
There was a race condition when loading new files, which is now fixed and merged upstream.
This work was mainly done in order to have a quick usable plugin using files for MOD, but overall everyone benefits.

Regarding packages in the KXStudio repositories, there are a few updates. Those are:

  • airwindows added
  • melmatcheq.lv2 added (reusing LibraZik package, much appreciated!)
  • distrho-ports updated to 2021-03-15
  • lsp-plugins updated to 1.1.29
  • sequencer64 updated to latest git

And that is it for now.
If you appreciate the kind of work I do, please consider a donation.
Thank you in advance for your support and stay safe out there!

PS: 2 of the package updates above appear as a result of a Patreon perk ;)


> Carla 2.3 RC2 is here!
On 2021-03-16 by falkTX

Hello all, this is an announcement for the next release candidate for Carla v2.3.
Comes after a few issues were reported and fixed, specially important for Windows users where plugin discovery did not work.
The audiofile and midifile plugins were also finalized, the task I was waiting to finish before publishing this RC2.

For the changes made in v2.3 (compared to v2.2) please see the Carla v2.3-RC1 announcement.
The full list of changes in v2.3-RC2 is:

  • Add audio and MIDI file information as parameter outputs
  • Make audio and MIDI file host sync optional, enabled by default
  • Accept oga and opus audio files
  • Fix wine bridge build for certain systems
  • Fix (native) plugin discovery under Windows
  • Fix plugin search listing AU as possible type on Windows
  • Fix loading project with VST3 plugin bridges

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 a few known issues I want to fix before tagging v2.3 as stable, but it is very very close.
And of course, if you appreciate the kind of work I do, please consider a donation.
Thank you.


> DISTRHO-Ports 2021-03-15 and PawPaw v1.1 releases
On 2021-03-16 by falkTX

Hello everyone, I am happy to announce a new release for DISTRHO-Ports, and subsequently an update to PawPaw that adds the new plugins.
In this DISTRHO-Ports release we now have 2 new plugins: SwankyAmp and Vitalium.

SwankyAmp appears as a direct port contribution from Jean Pierre Cimalando, you can find the original plugin here.

As for Vitalium, this is an open-source and redistributable version of Vital, a spectral warping wavetable synth that has recently being made open-source.
We cannot use the Vital brand or connect to its vital.audio online services, so this is completely removed from the Vitalium source code, with an alternative name and icon.

So with this release, I updated PawPaw so it now includes SwankyAmp and Vitalium.
In case you forgot or are not aware, PawPaw is a little project to build and package LV2 plugins for macOS and Windows.
Sadly due to technical difficulties I had to drop Windows 32-bit builds, which I imagine most will not care anyway.

So now you can enjoy 2 new plugins, no matter if you use Linux, macOS or Windows.
(for Linux builds, please refer to your distribution of choice, or grab them from the KXStudio repositories)

Oh, and some screenshots of course, everybody loves those.

Reaper with SwankyAmp on Windows

pawpaw-1.1-swankyamp

Zrythm with Vitalium on macOS

pawpaw-1.1-vitalium

PS: Yes, Reaper supports LV2 now. And yes, Zrythm is quickly becoming a nice DAW too.


> KXStudio Monthly Report (February 2021)
On 2021-02-28 by falkTX

Hello all, another "monthly" report about the KXStudio project is here.
There is not a whole lot of stuff this time around, this being a short month and also me moving to a different place.
But there are still some things worth reporting, so let's get to that.

First, in case you missed it, Carla v2.3-RC1 was tagged and released, marking the first PyQt-based project of mine to have automated release binaries.
This is crucial for having more frequent releases, as it reduces the workload that each release requires.
It is now basically just setting the commit hash in the Carla-Releases project, and wait for the builds to be done.
And speaking of Carla, a few small issues were found and already fixed, so you can expect RC2 to be out very soon.

On non-KXStudio related news, Vital is now open-source.
Obviously I have interest on packaging it in the KXStudio repositories but, even though the project is released under GPLv3, there are restrictions on the use of the name and its trademarks.
So the idea right now is to (im)port it over to DISTRHO-Ports project, with a change of name to Vitalium and an alternative icon made by unfa.
This is already on-going, with one change required which was to update the DISTRHO JUCE fork to the latest upstream v6.0.7 - this is done now (including rebasing all of DISTRHO JUCE patches).
I will write something when the porting process is over, likely doing another release of PawPaw since simply having Vitalium as cross-platform LV2 plugin is worth an update.

Package updates in the KXStudio repositories are very few this time.
Basically soundtracker was added (as a special request from a friend) and Helio was updated to v3.3 (which served as a way to test the updated JUCE).

On a final note, I am experimenting with a public kanban-style board.
Not just to organize myself a bit better, but also as a way to let everyone know what I am working on at the moment and things that I will start to do relatively soon.
You can see what has already been done this month so far (let's pretend we are already in March) and what might be coming soon.
I am still playing with colors and tags, but general idea on the colors at the moment is:

  • yellow: packaging stuff or something related to kxstudio repositories
  • orange: articles or things to write (usually releases or news)
  • green: coding task which is similar to something I did before, so "easy" to do
  • red: bug-fixes
  • blue: porting over something that already exists/was done before. involves boring, copy, paste and adjust work
  • pink: brand new projects or things to do, which usually involve learning, research, testing, etc. can take long

I have recently been trying to get some sort of crowd-funding going (to help in terms of financial support).
If you are a sponsor/subscriber, you might have felt that these monthly updates are too spread out and too few.
So a public work-tracking board seems like a nice middle-ground, a way to indicate what is happening on a specific moment without having to wait for monthly reports or big splashy news.
For now you can access the board at board.kx.studio; later on I will see if it can be embed into the main website.

If you see anything you like in there or just simply appreciate the kind of work I do, please consider a donation.
I am not taking feature requests at the moment, as there is quite a few things in the backlog already, but once most of the DPF-related work is complete, I will revisit this idea.
Thank you in advance for your support, stay safe out there!


> Carla 2.3 RC1 is here!
On 2021-02-16 by falkTX

Hello again everyone, a somewhat small but important Carla update is here!
As there were many changes behind the scenes (specially for Windows builds) I am tagging it as Release Candidate for now.

So this is the announcement of the first release candidate of Carla version 2.3.
Carla is a fully-featured cross-platform audio plugin host, which itself can also run as a plugin (LV2 and VST2).
It is a project slowly growing and maturing for over 10 years now!

This release is the first step for automated releases of Carla, and other PyQt projects. Might not seem like big news, but it is!
I don't make Carla releases very often as it tends to consume a lot of time, besides writing the release announcement (like this one), there is a lot of manual building and uploading.
The situation got worse with 1 more build type for macOS universal support..
This makes it more difficult to do quick bug-fixes than it should, and thus they tend to not happen much.
There are still no automated Linux builds though, I will take care of that at a later point.
In any case, I always keep the Carla package on the KXStudio repositories up to date, and ArchLinux is usually very quick on the updates too, so for Linux users this is not that big of a deal.

With that said, let's go through some of this release highlights.

macos-universal

macOS arm64/universal build support

Starting with v2.3, Carla natively supports the new macOS arm64 architecture, used in the new M1 hardware models.
The Carla macOS universal build supports x86_64 and arm64 architectures at the same time, and should run on anything 10.12 or newer.

As Carla has support for plugin bridges (even across architectures), I took care to make sure that the arm64 version can load x86_64 plugins.
When a plugin fails to load in a specific way, Carla will try to load it again but now in x86_64 mode.
This is currently working for VST2 and VST3 plugins.

Additionally, for something that kept bothering me a lot, Carla will automatically remove plugins from macOS quarentine before loading them.
This is not possible to do for AudioUnits as we do not have the full path to the plugin binary, but valid for all other formats.
No more security theatre shenanigans here! :)


audiofile

General improvements to AudioFile plugin

The AudioFile internal plugin received some deserved attention this time around.
Besides basically reworking how its disk-streaming functionality (more robust and much less CPU usage),
it finally can do resampling so it will sound correctly no matter the sample rate.
Additionally mp3 support was added via dr_mp3, as libsndfile used by it does not yet officially support it.

Both Audio and MIDI file plugins are now exposed as LV2 plugins, allowing to load and use these plugins outside of Carla.
It supports file parameter plus patch Get/Set with State mapPath as expected for these kinds of plugins.
The experimental "inline-display" of the AudioFile is also exposed as an LV2 feature.


windows

Reworked Windows builds

The infrastructure used to build Windows binaries is now through PawPaw, as done with JACK2 already.
With this, I have control over the whole toolchain and libraries that are used in Carla Windows binaries (previously msys2 packages were used).

For users, this means these binaries are more robust and with less dependencies.
(I am building with static libraries as much as possible, so no more ligcc/libstdc++6 mess).
The Windows zip file download no longer ships with a single Carla.exe, instead please run Carla.exe inside the Carla folder, should be easy to spot.

For developers, a nice side-effect is that we can finally tweak the behaviour of the startup executable, now allowing debug messages to be seen. (though you need to run it in Console/PowerShell for that)
The libraries that allow to use and talk to Carla Host API are now provided on these builds.

Finally, it should be possible to build Carla under msys2 on Windows now.
I can make a quick tutorial if that is something that interests you, let me know if that is the case.


icons

Use system/desktop theme icons (non-macOS/Windows only)

Due to popular demand, there is now an option in the experimental settings to use system/desktop theme icons.
This will remain as experimental feature for 1 release, so we can catch potential issues in the mean time, and fix them.

Since I do not mind the default Carla icons (quite like them actually), this is not meant for me.
Feel free to use it and report back if you spot something weird or incorrect.


Other notable changes

  • Allow to run CV plugins in rack mode, with CV connected to a dummy port
  • Carla-Control no longer has return remote url option, no longer needed after some fixes
  • Clear up situation with nogui and carla-osc-gui script (explanation article to come later)
  • Disable OSC by default on macos (needs to ask permission to use network, which may look suspicious)
  • Do not build external plugins by default
  • General improvement to LV2 parameter API support
  • Many, many bug-fixes (not listed here, see the git commit history for the raw changes, including bug-fixes)

Notes for users

There are no binary releases for Linux at the moment, and the old Windows 32bit No-SSE builds are gone.
On Linux, use the packages from your distribution or ask the package maintainer to update.

The macOS and Windows binaries are not signed/notarized.
Carla-Control on macOS M1 fails to run natively, but is okay under rosetta2.

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

With finally the Carla release out of the way, I will start work on DPF very soon, as mentioned on the last monthly report.
If you appreciate the kind of work I do here, please consider a donation.
You can help to keep these projects alive and enthusiasm and motivation high by giving your support.
Thank you.


> KXStudio Monthly Report (January 2021)
On 2021-01-31 by falkTX

Hello all, another monthly report about the KXStudio project is here.
Last month I completely forgot to write a report, with the end of year and preparations for all the releases.
Speaking of releases...

A few things were released just 2 weeks ago.
From a quick update to DISTRHO/DPF-related plugins, to announcing PawPaw for cross-platform LV2 plugin builds.
I had an idea to release Carla v2.3 also at the same time, but a few things are still not ready.

And speaking of Carla now, good progress has been made to setup automated builds, at least for macOS and Windows (as those are the more annoying to build for, compared to Linux or BSD).
The dreadful issue of DLL hell causing Carla not to start on Windows seems to be fixed with this new updated build setup.
There are a few things in progress that I plan to finish before calling it final:

  • macOS arm64 build loading Intel 64bit plugins (already working for VST2, but not VST3)
  • revised and rechecked LV2 patch/parameter support (seems good to me, just needs more testing)
  • expose/export the internal audio and midi file players as lv2 plugins (almost there, some bugs still present)
  • allow to use desktop theme icons (mostly finished, just a few dialogs need to be adjusted)
  • translations (but as other things take priority for me, this might skip v2.3)

I am not mentioning here things that are already completed, it is just to give you an overview of what is left.
Plan was to have it finished by the end of January, but obviously didn't happen, so we can say "coming soon", again. :P

Once more Carla stuff is finished and mostly only testing is left, I will begin some very much needed work and attention for DPF.
DPF is using a very old pugl version, modified along the way but mostly matching the version used in x42-plugins.
pugl API got revised and improved so much that feels worth the update.
I started this already, but had to dedicate my attention to other things in the mean time.
Target is to not only update pugl, but an overall cleanup and minor reworks of the API where suitable/needed.
By end of next month I will try to give a summarized report of the update status.

Regarding packages in the KXStudio repositories, finally there has been some updates. Those are:

  • die-plugins added
  • adlplug updated to 1.0.2
  • dpf-plugins updated to 1.4
  • distrho-ports updated to 2021-01-14
  • drumgizmo updated to 0.9.19
  • lsp-plugins updated to 1.1.28
  • new-session-manager updated to 1.5.0
  • x42-plugins updated to 20210114
  • zam-plugins updated to 3.14
  • cmt fixed (symbol visibility issue)
  • setbfree small fix (removed unused b_conv vst)
  • whysynth fixed for newer distros

That is all for now, stay safe out there.


> Announcing PawPaw: cross-platform LV2 ports for macOS and Windows
On 2021-01-15 by falkTX

PawPaw is an open-source project that builds and packages cross-platform LV2 audio plugins (among other things, but let's focus on this now).

It was created out of the need of many open-source developers to easily build their stuff for macOS and Windows, where usually dependencies are involved which need to be built manually.
In order to make audio plugins self-contained, these dependencies/libraries need to be built statically, which most packaging projects do not do.
Also, most open-source audio plugin projects do not have binaries for macOS or Windows, making it very difficult for users in these platforms to enjoy them.

That last part is crucial.
While on Linux LV2 is king, with so many plugins released as LV2, the same is not true for other platforms.
I want to change that, so that the usual excuse "but there are no plugins, we won't bother with LV2" of audio developers can no longer be used.
It is the typical circular-dependency problem. There are no hosts because there are no plugins and vice-versa.
Hopefully with a big set of plugins, the situation will change.

For the first release of PawPaw we have the following LV2 plugins: (note some of these are big collections of many plugins themselves)

  • abgate
  • artyfx
  • blop
  • caps
  • die-plugins
  • distrho-ports (arctican, dexed, drowaudio, klangfalter, luftikus, obxd, pitched-delay, refine, tal, temper, vex, wolpertinger)
  • dpf-plugins (glBars, kars, max-gen, mini-series, mverb, ndc-plugs, nekobi)
  • fomp
  • mda

Every single plugin has automated meta-data validation and runtime testing to make sure they work correctly.
The quality of the plugins depends on the respective developer and project of course, but they should be safe from crashes.

A big question now is "how can I use them?".
At this moment, from what I am aware, only Ardour/ Mixbus and Carla support LV2 plugins on these platforms.
Some applications like Audacity, Kushview Element and Mixxx support LV2, but usually only in Linux builds.
Carla works as a VST2 plugin, so you can use it as a way to bridge these to regular hosts, but obviously not ideal.
But hey, one step at a time. We have a few more LV2 plugins now on these platforms, and moving forward the list is only going to grow.

Screenshots

Ardour + Windows

pawpaw-1.0-win

Mixxx + macOS, loading ArtyFX plugins

pawpaw-1.0-mixxx

Downloads

You can find the macOS and Windows installers at https://github.com/DISTRHO/PawPaw/releases.
For macOS, 10.12 is required. These are universal builds that already support x64 and arm64 combined.
For Windows, Windows 7 or superior is recommended, and a CPU capable of doing SSE2 operations is required.

Future plans

For the future, I plan to rework the DISTRHO website so it contains all these details.
Mainly so that it is a better overall presentation.
And of course more plugins, though pull-requests are also very welcome for those.
Carla is slowly in the process of using PawPaw for automated release builds, more on that at a later time.


> A small set of plugin updates
On 2021-01-15 by falkTX

Hello hello, it is release day again!
Keeping up with the cool people, here is a set of plugin updates for the Quarterly Release Pact.
Do note that these are all source-only releases. For binaries, use your Linux distribution packages or the PawPaw project.
With that said, let's begin...

DISTRHO-Ports 2021-01-14

DISTRHO-Ports is a set of GNU/Linux and LV2 ports, imported into the codebase for easy packaging, maintaince and all that.
This is a bug-fix release, getting the project ready for cross-platform builds and automated validation/testing.
Changelog:

  • Fix out of bounds buffer write in drowaudio-reverb (leading to memory corruption and/or crashes)
  • Fix lv2 export preset meta-data validation
  • Fix lv2 ttl generation when cross-compiling (e.g. using mingw and wine within linux)
  • Fix exported symbols
  • Fix build/compatibility with macOS 11 / arm64

DIE-Plugins v1.1

DIE-Plugins is a collection of plugins imported into the DISTRHO project for easy packaging.
Currently has only Ardour (Community Effect) plugins, mainly so you no longer need to build the entire Ardour codebase to get these plugins.
Changelog:

  • Fix a-fluidsynth port names
  • Sync with upstream, now features are listed in ttl thus passing plugin checks/validation
  • Use -fopenmp for building internal fluidsynth (where possible)

DPF-Plugins v1.4

DPF-Plugins is a collection of DPF-based plugins, including Kars, MVerb and Nekobi.
This is yet another bug-fix release, tagging a release before a big DPF overhaul planned for next month.
Changelog:

DPF:

  • Auto-detect compiler target, fixing as-is build with ARM systems
  • Allow to use EXE_WRAPPER as makefile option, to help cross-compilation
  • Fix build with headers in custom path
  • Fix "make install" for macOS and Windows
  • Fix exported LV2 metadata to pass checks/validation
  • Make mouse-wheel delta independent of window size

Kars:

  • Fix audio buffer reuse, causing bad audio in some hosts

Nekobi:

  • Set default MIDI CC for all parameters

More releases coming soon, stay tuned!


> Another DISTRHO-Ports update
On 2020-12-28 by falkTX

Hello again, another release of the DISTRHO-Ports project is here.
DISTRHO is an open-source project with the goal of making cross-platform audio plugins and GNU/Linux + LV2 ports.
This release relates to the GNU/Linux and LV2 ports.

Just like last time, this is yet again a more packager-focused release rather than user-focused.
The biggest changes this time relate to bringing DISTRHO's JUCE fork up to date with upstream, together with updating the LV2 wrapper.
Additionally, macOS and Windows support was fixed and tested to work, at least for LV2 plugins.
(most of these plugins already have VST2 or AU for those 2 platforms, so the focus in on LV2 here)

A new plugin was added, CHOW, but mostly only because I required a fresh plugin to test the new JUCE codebase.
Do note that new plugins can now build as LV2, VST2 and VST3 for GNU/Linux, which is nice to see.
I want to create a little article/tutorial explaining how to port existing plugins into this project, but that will come at a later date.

For now, the intention is to have all the ground-work needed for fresh plugins and LV2 ports.
This ties up nicely with the upcoming PawPaw project, as we will soon have all these ports working as LV2 in macOS and Windows.

Here is a quick screenshot I just took on macOS, Ardour loading a couple LV2 versions of DISTRHO-Ports.
PS: This is a arm64/M1 build.

distrho-ports-lv2-macos

Because everyone loves changelogs, here it is for the full changes since last release 5 months ago:

  • Add CHOW plugin (used to test updated JUCE)
  • Include new and legacy JUCE in source code (legacy JUCE will only receive bug-fixes)
  • Rebase DISTRHO-Ports patches against JUCE6 codebase, available in libs/juce-current/patches
  • Fix LV2 wrapper to build against latest JUCE
  • Fix build for macOS, including universal builds
  • Fix build for Windows (using mingw)
  • General cleanup to build system

There are no pre-compiled binaries for this release, though the plugins are fully up-to-date in the KXStudio repositories.
You can find this 2020-12-27 release at github.com/DISTRHO/DISTRHO-Ports/releases.


> DIE-Plugins v1.0 released
On 2020-12-25 by falkTX

Hello everyone, I would like to announce a new project: DIE-Plugins.
This is a collection of plugins imported into the DISTRHO project for easy packaging.

"DIE" stands for DISTRHO Imported Effect.
It is a play on words from the first imported plugins, "ACE", from the Ardour project.
These are LV2 plugins only. License is the same as the original plugins, so GPLv2+.
They are simply to die for ;)

Now, on a serious note, this project was created when I was looking to package the Ardour built-in plugins (a.k.a. Ardour Community Effect) for MOD and the (still to be announced) cross-platform LV2 plugin project PawPaw.
The biggest difficulty was having to build the entire Ardour codebase to get these plugins.
While it seems possible to force the build of only the plugins, the build system still expects all sort of libraries for the main Ardour codebase.
Since I am quite comfortable setting up custom Makefiles for quick little projects, that is how it started...

Worth noting that all imported plugins have their bundle and URIs renamed, in order to make them compatible with the originals.
The source code fetching and patching is also scripted, so it is easy to keep in sync with upstream.

Downloads

The source code plus issue tracker is hosted at https://github.com/DISTRHO/DIE-Plugins.
Only glib2.0 and sndfile are required to build.
If you have the KXStudio repositories enabled, you can install these with the package name "die-plugins".
They are not available in binary form anywhere else at the moment, as the project is brand new.


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


> A DISTRHO-Ports update
On 2020-07-15 by falkTX

Hello again, another release for the Quarterly Release Pact is here.
This one is a "small" update of the DISTRHO-Ports project.
It is a more packager-focused release rather than user-focused, because the (super old) build system was finally updated.
This alone warrants a new release by itself, as it finally becomes possible for the project to be packaged in regular linux distributions.

There are a few new plugins and fixes with this release, bigger changes are coming at a later date.
I want to update the DISTRHO-Ports website and have "nightly builds" of the plugin binaries, but this will take time.
For now, at least we have the plugins building and working on modern distributions.

Here is a resume of the full changes since last release in 2018:

  • Add HiReSam plugin port
  • Add ReFine plugin port
  • Add Temper plugin port
  • Fix build for ARM NEON target
  • Fix LV2 UI notifications happening in non-GUI thread
  • Fix LV2 meta-data to pass lv2lint errors
  • Update JUCE (current plugins frozen in a known good but slightly old version, with cherry-picked fixes)
  • Switch build system from premake3 to meson

There are no pre-compiled binaries for this release, though the plugins are fully up-to-date in the KXStudio repositories.
You can find this 2020-07-14 release at github.com/DISTRHO/DISTRHO-Ports/releases.


> WineASIO v1.0.0 released
On 2020-07-15 by falkTX

Hello everyone, a perhaps unexpected release is here.
This is a release of WineASIO, as a way to announce maintainer change as well as making it up to date with current Wine.

The previous maintainer, Joakim Hernberg, publicly said that he was looking for someone to take lead on the project.
When I was doing packaging of WineASIO to the KXStudio repositories, there were a couple of fixes needed... and eventually just decided to maintain it since I was in a way already doing that.
With the green-light for taking over the project, I did a couple of changes that seemed (to me) relevant and useful.
The Cadence-specific WineASIO settings were also split off to become a standalone tool, and it is now the ASIO "control panel" for the WineASIO driver.

screenshot

I do not plan to make new development for WineASIO, only maintain it to keep it alive and working.
The new "control panel" was an exception due to it being, in my opinion, a user experience fix.
(understanding the Windows registry can be hard, so the "panel" allows us to skip on having to deal with that)

This is what changed compared to the previous official release:

  • Add custom GUI for WineASIO settings, made in PyQt5 (taken from Cadence project code)
  • Add packaging script
  • Fix code to work with latest Wine
  • Fix control panel startup
  • Rework Makefile, common rules for 32 and 64bit builds

There are no pre-compiled binaries for WineASIO, though it is available as a package in the KXStudio repositories.
You can find this v1.0.0 release at github.com/wineasio/wineasio.


> Carla 2.1.1 has been released
On 2020-06-11 by falkTX

This is a bugfix for Carla version v2.1 series, fixing many bug reports and stuff I found along the way.

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.

Changelog

  • Fix carla-control not handling CLI argument for custom address
  • Fix carla-plugin not handling all callbacks
  • Fix carla-plugin LV2 UI not showing up if host supports touch feature
  • Fix for some plugin formats having 0 audio ports
  • Fix occasional crashes due to canvas shadow (Qt bug, shadow is disabled by now)
  • Fix canvas ports text width calculation with new Qt
  • Fix wrong assertion with size 1 MIDI messages
  • Fix errors in the icons
  • Fix incorrect base conversion for MIDI CC assignments
  • Fix rpath specification in pkg-config files
  • Fix build with Qt 5.15
  • Discovery: Force language to be "C" (English) so we can parse errors
  • Discovery: assume midi inputs = 1 if VST plugin is synth
  • Make canvas ports and groups ignore middle mouse clicks
  • Improve performance of canvas "inline display" rendering
  • Other miscellaneous bug fixes

Downloads

To download Carla binaries or source code, jump on over to the KXStudio downloads section.
Carla v2.1 is available pre-packaged in the KXStudio repositories, ArchLinux and Ubuntu since 20.04. On those you can simply install the carla package.
Bug reports and feature requests are welcome! Jump on over to the Carla's Github project page for those.


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

Hello all, another monthly report about the KXStudio project is here.
It has been a few months since one of these, which I apologise for.
It was wrong of me to assume I will have news every single month, some are just a bit slow on news due to external circumstances.

Anyway, a lot of work is going into Carla, lots of bug-fixes.
A good collection of them are piling up, which makes a v2.1.1 release worthy, so expect that in the next few days.

One of the new features in Carla is Linux VST3 support, already available if you use carla-git.
There is also a category filter in the add-plugin dialog now, and better handling of high-dpi mode.
That is basically it in regards to frontend/GUI changes, everything else is on the backend/audio-host side.
All of this will be in Carla v2.2, with a tentative release date of July 15.

Other developments happening behind the scenes are a DISTRHO-Ports update (setting old JUCE aside and using new juce6 branch for Linux VST3 plugins), plus updating its build system to meson.
The WineASIO project was finally given to me officially, so expect a release soon for that too.
There is also a big DPF rework going on, and a new project for cross-platform LV2 plugin binaries.
Those will be announced at a later point in time, once ready.

Regarding package updates in the repositories, there have been a few since the last monthly report. Those are:

  • element added
  • impro-visor added
  • ladish fixed to work on systems without python2
  • amsynth updated to 1.10.0
  • avldrums.lv2 updated to 0.4.1
  • bsequencer updated to 1.4.2
  • bshapr updated to 0.9
  • bslizr updated to 1.2.6
  • carla-git updated
  • fluajho updated to 1.5
  • geonkick updated to 2.1.1
  • lsp-plugins updated to 1.1.22
  • mod-host updated to latest git
  • patroneo updated to 1.5
  • vico updated to 1.1
  • x42-plugins updated to 20200411

Not so much work got done in regards to the website and documentation.
Perhaps for next time.

That is all for now, stay safe out there.


> Carla 2.1 is here!
On 2020-04-15 by falkTX

Exactly one year after 2.0, Carla version 2.1 is here!

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.

This is a small but significant update that builds up on top of what was released in 2.0.
Please see the 2.1-RC1 announcement for details on what is is new in 2.1.

Unlike last time, there are no official plans for version 2.2 just yet, my focus will now be going into the DPF and JACK projects instead.
The master branch of Carla's code repository is now for 2.1, while the previous 2.0 master got renamed "hotfix-2.0.0".
No new features will be added to 2.1 series, only bugfixes.

Changes since 2.1-RC2

  • Add a simple cv2audio plugin
  • Brown color for CV ports, to make them more easily recognizable
  • Fix crash loading LV2 plugin with CV and latency ports
  • Fix mingw/gcc-9 build

Changes between 2.1-RC2 and 2.1-RC1

  • Fix crash on stack unwind for a few operations
  • Fix duplicate data (name, label, uid) used in VST synth/fx Shell plugin
  • Fix JACK metadata usage for multiple carla instances and plugin renames
  • Fix MIDI CC assignment showing wrong selected value (base 16 vs 10)
  • Fixup carla-control (was broken in RC1)
  • Optimize and reduce memory usage of UI bridges
  • Overall fix of postponed RT events
  • Give focus to bridged UIs when first shown
  • Ignore any LV2 patch:writable that is not an lv2:Parameter
  • Rename experimental "prevent bad things" option and give it a tool-tip
  • Support the new LV2 UI requestParameterValue API
  • Support the new LV2 UI background/foreground color API
  • Many other miscellaneous bug fixes, see the git log for details

Downloads

To download Carla binaries or source code, jump on over to the KXStudio downloads section.
Carla v2.1 is available pre-packaged in the KXStudio repositories, ArchLinux and Ubuntu since 20.04. On those you can simply install the carla package.
Bug reports and feature requests are welcome! Jump on over to the Carla's Github project page for those.


> KXStudio Monthly Report (February 2020)
On 2020-02-29 by falkTX

Hello everyone, it is time for another monthly report in regards to the KXStudio project.

First, there were many bugfixes made to Carla, we are very close to RC2.
I only have 2 things that I want to do before the RC2, first being fixing multi-instance under multi-client mode and second is to finalize the last couple of bugfixes.
So the RC2 should be out in a few days, maximum weeks.

Second, something that came out of (re-)packaging WineASIO (and moving away from Cadence, but that is a story for another day...).
I am taking over as maintainer of the WineASIO project.

WineASIO is something that is mostly "done", there is not much that we can add to it.
Since I have to keep it building in order to package it, I spoke with upstream and let them know I was available to take over.
(maintaince work is pretty minimal, just got to make it build basically)

We are trying to take over github.com/WineASIO organization, so we can place the source code repository in there.
If that takes too long, the repository will just end up at github.com/falkTX/WineASIO as it is for the moment.
In any case, we will see v1.0.0 release of WineASIO quite soon!

The KXStudio repositories' armhf build of surge has been fixed.
I have opened a pull request on upstream surge to discuss the armhf/arm64 needed changes (basically a SSE2 to NEON conversion).
They are quite open to it, which is nice to see.
We just need to fix some minor things now and that could likely be part of 1.7.0 release later on.

Finally, these are the package updates made in the repositories:

  • carla-git updated
  • mod-cv-plugins updated to latest git
  • sequencer64 updated to latest git, midi_control branch
  • surge updated to 1.6.6
  • cv-lfo-blender-lv2 added
  • g2reverb added
  • invada-studio-plugins (LADSPA) and invada-studio-plugins-lv2 added
  • setbfree added, including VST2 version through lv2vst
  • wineasio added
  • zlfo added

That is all for now. Have a great weekend everyone! :)


> KXStudio Monthly Report (January 2020)
On 2020-01-28 by falkTX

Hello all, another monthly report about the KXStudio project is here.

A few days ago, Carla 2.1-RC1 was announced.
As mentioned in that post, Carla's frontend move to C++ has started, for performance, reliability and debugging reasons.
It is going to be something that, even though means a lot behind the scenes, visibly nothing will change. (except performance)
Because of this, do not expect many UI related changes in Carla for the time being.

There were more package updates in the repositories. Those are:

  • lsp-plugins updated to 1.1.13
  • x42-plugins updated to 20200114
  • distrho-ports updated (added Temper as LV2 and VST plugin)
  • bchoppr added
  • bslizr added
  • bsequencer added
  • bshapr added
  • geonkick added
  • mod-cv-plugins added
  • noise-repellent added
  • regrader added

A few of those were made possible thanks to LibraZik project, from which I imported a few.
I am quite grateful for them, and you should be too! :)

On a more personal side of things, I have started renting an office for work (both for employer and FLOSS stuff).
Its setup took most of the time on the holidays, and quite a fair bit in January too.
It is mostly done now, only final touches needed. It certainly helps as a kind of motivation boost, and as a way to keep focus too.

Next month will be slower than usual, as I plan to focus more on "boring" stuff like updating the website and documentation.
That is all for now.

Since I mentioned it, I leave you with a picture of the office (the working area).
See you next month!

office


> Carla 2.1 RC1 is here!
On 2020-01-19 by falkTX

Hello again everyone, it is release day! (kinda, just a casual 4 days late...)

This is the announcement of the first release candidate of Carla 2.1.
I am skipping the beta phase as done for the 2.0 release and going straight into a Release Candidate.
This means there will be no more changes in the graphical user interface or engine/backend features, except when required for fixing bugs.

Carla projects/sessions are meant to be fully compatible between between 2.0 and 2.1 versions, except for features marked experimental.
The "native" API to access carla as plugin (as used by LMMS) is ABI and API-wise backwards compatible compatible with 2.0.
If this is not the case, consider it a bug that needs to be fixed.

As with the v2.0 release, the list of changes is a little big, so let's split it by parts.
First, the highlights and major changes, in no particular order of relevance.


settings

Better CV Support

CV ports are now supported in the internal patchbay mode, meaning you do not need to use JACK with Carla in order to use CV plugins.

Automable parameters can now be exposed as a CV port, so they can be controlled by regular CV sources or other plugins.
This is a kinda feature preview, as there are some limitations at the moment:

  • Parameter changes are not sample accurate
    (in a later version, Carla will split buffer up to 32 frames for more fine-grained control changes)
  • Not all plugin formats and parameter types are allowed to be controlled this way
    (to be extended as I test more compatibility)
  • Only available for parameter inputs, not outputs

In order to make CV more useful by default, a new internal "MIDI to CV" plugin was added, originally created by Bram Giesen.
More plugins will be added as needed, for now I recommend to use ams-lv2 and mod-cv-plugins as they already do a lot.

Also, a new variant of Carla as plugin was created that provides audio, MIDI and 5 CV ports (for each side).
This allows CV signals to flow in and out of Carla as a plugin.


settings

High-DPI support (work in progress)

Initial work was done to support high-DPI screens.
Note that this was not tested very extensively, due to lack of proper hardware, but the requirements in terms of code are all there.
There are still a few "normal" resolution bitmaps in use, to be replaced in future releases.
You can click on the screenshot on the left to see Carla rendered at 3x the resolution.

So for now, the situation is:

  • Most of the icons changed to scalable format
  • UI will scale with the desktop automatically, as Qt takes care of that for us
  • Some bitmaps still remain, to be replaced by vector images in a future release
  • Not extensively tested, feedback is welcome

settings

Proper theme and Carla-Control for Windows

The Windows build stack changed from using official Python and PyQt5 packages to msys ones, allowing us to link against them using mingw (Carla does not support MSVC)
This makes it possible to use the proper "pro" theme like Linux and macOS already did, and also get Carla-Control finally working on Windows.

Previously, the Carla Windows builds were using Qt's "fusion" theme (which the Carla "pro" theme is based on), which looks very similar but misses all of custom tweaks made for Carla.
This includes, for example, preventing pop-up menus from taking the entire screen or ugly thick lines being drawn where a small one was expected.

A small but important step towards cross-platform feature parity. \o/


settings

VST2 plugin for macOS and Windows, plus exposed parameters

This is the final item that was missing for cross-platform feature parity.
We now have Carla as VST2 plugin running on both macOS and Windows!

Embedding of the full GUI on these systems is not possible, so a small "middleware" window is shown as the plugin custom UI.
Not the best experience, but allows Carla to finally work as VST2.

Additionally, 100 parameters are exposed to the host, dynamically used in the order of the plugins loaded.
So for example, if the first plugin in the rack has 20 parameters, the first 20 parameters of carla-vst will be mapped to that plugin.
This continues in order for the remaining plugin parameters until we reach 100 of them.

When Carla is loaded as an internal plugin, parameters will be dynamically available too.
This feature is not available in the LV2 version of Carla though, at least not yet.

Note: Carla plugins are not "notarized" yet, so they will not run under latest macOS 10.15/Catalina where this is a requirement.


settings

Wine-native bridge, sorta experimental

This is a way to load Linux binaries under Windows applications running with Wine, in case you need that for some reason
Personally I made it so that I could run the native Carla inside FL Studio, which allows me to use its sequencer but not have to deal with Windows plugins.

This is available in the KXStudio repositories as "carla-vst-wine" package, you need to copy /usr/lib/winvst/Carla* into your Wine VST dll folder to make it work.
It requires Carla to be installed system-wide, so it cannot work if Carla is downloaded manually.

Building it is kinda tricky, as it requires building a native-windows dll first, and then a few things with winegcc...
Packager documentation will be added soon to Carla's source code repository, so other Linux distributions can pick it up.

I demoed this feature at Sonoj last year (2019), you can watch it as the 3rd part of this video.

settings

Refreshed add-plugin dialog and favorite plugins

The add-plugin dialog had a major overhaul, now looking much better and with more content visible at once.
Target was to improve the user experience, making clear that there are filters available. (it was not so obvious in previous versions)

The star on the most-left section of the table is to mark a plugin as a favorite, which will add it as a shortcut to the right-click menus on empty rack and patchbay areas.

settings

Single-page and grouped plugin parameters

The dialog for the generic plugin parameter view also had an update.
All parameters are now placed in the same tab (separated only by input and output types), and grouped when supported by the plugin.
The options for mapping a parameter to a MIDI CC were taken out and replaced by a button that triggers a menu with the relevant options.

Note that, at the moment, only a few LV2 plugins support parameter groups.
This is because most hosts do not support this feature, so plugins do not have many incentives to support such a thing.
And with not a lot of plugins supporting it, hosts also do not care that much. The usual circular dependency deal...
But since the feature applies quite nicely to Carla, made sense to add it.

The group can be collapsed by clicking on it.

A similar feature will be added to the patchbay in a later release, so we can group audio ports too. :)

More UI changes

The rack items will dynamically show as many knobs as possible
You can now change the "skin" and color of any rack item, making it easy to identify certain plugins
Added buffer-size, sample-rate and xrun information to the status; clicking on the xrun counter will reset it to zero

Canvas changes

Right-clicking on a canvas group will show options for quickly connecting all ports to another group
Many small tweaks and fixes, plus a few extra actions, as contributed by Nikita Zlobin (to be documented on the user manual)
Support for Ardour-style inline-displays, marked experimental in this release (sadly cannot be made stable until Carla v3.0)

Carla-control and OSC rework

Carla's OSC support has been reworked, now has its own dedicated page in the settings.
Carla-Control has been extended to support all non-local-dependent features of the main Carla (like patchbay management and transport controls).
This will be extended even further in future releases.

AU and VST3 support is back, by leveraging JUCE

Disabled during a previous 2.0 beta release, support for the JUCE library was removed and replaced by a heavily stripped-down version of it. (while it was still GPlv2 licensed)
The reasons for that decision still remain relevant, but in order to keep in mind with Carla's goals, I decided to add back JUCE support - but now completely optional.
It will always be possible to build Carla without JUCE, it is only used for extra hardware and plugin format support.
In fact, Linux builds by default do not use it, as there is no need for it.

Anyway, the published macOS and Windows Carla builds do use JUCE, which means Carla supports VST3 under macOS and Windows, and AU under macOS.
As a bonus, it is now possible to show the custom control panel of ASIO devices. :)

Worth noting is that JUCE does not support VST3 under Linux at this point, so neither does Carla even if you build it yourself with JUCE enabled.

Other changes

Within a bunch of small fixes and new implementations, here are some changes that deserve to be mentioned:

  • Carla now requires Qt5, can no longer work with Qt4; but can still use LV2 Qt4 UIs with its built-in bridges
  • NSM is now supported for JACK applications
  • Added a 16 MIDI port mode for JACK applications
  • Added "Cancelable actions" during project and plugin bridges load, so they will no longer time-out; instead the user has the option to cancel them at anytime
  • Initial support for LV2 parameter API
  • Initial support for LV2 file paths, assuming plugin has no custom UI (click on the show-gui button to open a file dialog)

Notes for developers and packagers

  • Linking against the JACK library directly is now possible by using `make JACKBRIDGE_DIRECT=true`, which allows for building Carla as an internal client

Notes for users

The code for scanning plugins had a little rework, again, making some internal data structures change.
Because of this, a full rescan of your plugins is needed after the update.

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.

Future and final notes

I have started a change of the Carla's frontend coding language, from Python to C++ (for performance, reliability and debugging reasons).
There are a few canvas related things, currently experimental, that can never be made stable or fast due to how Python/PyQt works.
Also Carla is not scaling very well at the moment, and the addition of CV controlled parameters and inline-displays does not help its case.
So a move of the entire frontend to C++ makes quite a lot of sense.
Whenever this is finished a new release will be made.
But it is going to be something that, even though means a lot behind the scenes, visibly nothing will change. (except performance)
Because of this, do not expect many UI related changes in Carla for the time being.

A user manual for Carla has been started.
It proved to be quite helpful for development too, as I had to justify why things are the way they are, and explain how they work too.
Now that Carla UI should not change too much for a while, it is the right time for such thing.
I personally dislike writing such things, but understand it can be quite useful.
The work-in-progress manual is at https://kx.studio/Documentation:Manual:Carla.
(Not much to see there at the moment though, give me time)

That's it.
Please remember that this is a release candidate, and not the final release.
Some issues are expected, I will do my best to fix all reports that get to me.
If I don't know about the issues though, I can't fix them. So please report any issues you find, thanks!


> KXStudio Monthly Report (December 2019)
On 2019-12-16 by falkTX

Hello all, another monthly report about the KXStudio project is here.

There is not a whole lot of new exciting stuff this time around, as most of the time was spent on Carla new features and bug-fixing.
I am doing a push towards CV support in Carla (a "MIDI to CV" internal plugin was added, for example),
with only 1 new feature to be implemented - allowing to automate any regular parameter with CV.
The idea is to make it easier to automate things in Carla, by exposing individual parameters in the patchbay as CV ports.
There is only 1 month left for the planned release, so going to be tight on time, but still seems doable, specially with holidays coming.
(so more free time to work on this)

There were a few minor package updates in the repositories. Those are:

  • x42-plugins updated to 20191215
  • zam-plugins updated to 3.12
  • sequencer64 added (Qt5 build from git master)

A new small extra repository has been created, one I have been using for some time now.
This came out of the necessity to update JACK2, but JACK not being something we can distribute in generic packages like KXStudio does for applications and plugins.
A few pieces of software, like JACK2 and other libraries, cannot be made into generic deb packages.
So, I want to create a few small but nice repositories for basic utilities and nice-to-have things.
For now, I have created a first, small one for Ubuntu 18.04 users (which includes me, obviously :P) which contains an updated JACK2, Wine-RT, among other small things.
You can find more details about this repository and all future ones coming soon at https://kx.studio/Repositories:Extras.

In some news regarding the JACK2 project, it has its own news page now, so I won't be posting JACK2 related stuff here anymore.
The latest about it, which is worth mentioning, is that its mailing list is back online once again! \o/

Cadence v0.9.1 was released, just tagging it in its git repo so distributions can pick it up.
It was mostly needed due to an incompatibility with Python 3.8.

And finally, donations for the KXStudio project (basically myself) are open once again, now even with a Patreon page.
In the past I mentioned that, due to legal costs, it was not worth having them while in Germany and I would open them again once I moved.
That happened a few months ago, but I dislike dealing with these things, so it took some time...
They are open once again now, though I removed the PayPal subscription option and counter for now.
(I am intentionally not posting the link here, I trust that if you care enough, you know where to find it)

Next month hopefully a new Carla release will be here.
Catia will be made into a standalone project, leaving Cadence behind. But that is news for another time... :)


> KXStudio Monthly Report (November 2019)
On 2019-11-16 by falkTX

Hello everyone, it is time for another monthly report in regards to the KXStudio project.

First, the most important I think, some small repository changes have been made.
I added a "KXStudio" suffix to the repository names, so you get stuff like "KXStudio Plugins" in your package manager now.
This was requested by a user, and makes a lot of sense.
The bad news is that your package manager is likely to complain about the changes, as it thinks it is a sign of trouble.
That is not the case though, as I am here just informing you of that. :)
A quick "solution" to this is to simply delete the cached apt list information, so the package manager will not have the previous repository title, like so:
sudo rm -rf /var/lib/apt/lists/*

There were a few new packages added to the repositories.
First, for the basic infrastructure, we got meson 0.51.2 and premake5. A few projects need this in order to build, so we got to have them first.
The more exciting ones are added and updated application and plugins, the changes on that are:

  • drumgizmo updated to 0.8.1
  • fluajho updated to 1.4.1
  • moony updated to 0.30.0, enabled inline display
  • patroneo updated to 1.4.1
  • vico updated to 1.0.1
  • surge added
  • dragonfly-reverb added
  • hybridreverb2 added
  • wolf-shaper added
  • wolf-spectrum added

Lastly, preparations for the next Carla release are well under way.
I was able to update and build generic Windows and Linux binaries (with Qt 5.9), and macOS is mostly working but still needs some fixing.
In the past I used to do a bunch of beta releases until the final one was declared stable.
I am going against this now, and will directly do a "Release Candidate" where no more new stuff can be added, only bug-fixing.
The next "Linux Audio release day" is January 15, so that will be the target date.

PS: Many of the new packages were imported from the LibraZik project, for which I am extremely grateful for.
The surge armhf build fails at this point, to be fixed soon.


> KXStudio Monthly Report (October 2019)
On 2019-10-15 by falkTX

Hello all, today is October 15, a Linux/Libre-Audio release day.
I do not have anything to actually release (that is ready anyway), so I thought to instead start something new.

Every month, starting with this one, we will have a monthly report regarding the latest stuff in KXStudio.
This will involve new releases, package updates to its repositories, important bug-fixes and short-term plans.
So let's begin...

First of all, in case you somehow missed it, a new JACK2 release is here!
This finally brings meta-data support into JACK2. More information about meta-data in JACK can be found here.

On the repositories, "helm" package had an issue where the plugin could not find its own presets.
(This was caused due to KXStudio repositories going ahead on renaming "helm" to "Helm" as the former already exists)

ZynAddSubFX got (re-)added, using its nice and fancy Zyn-Fusion UI.
In the old repositories there was "zynaddsubfx" for old UI, and "zynaddsubfx-git" for the new one.
The "git" package is gone, only "zynaddsubfx" is there now and it has the new UI. +1 for progress!

x42-plugins got updated to 20191013 release.

Fluajho, Patroneo and Vico were added. (nice simple tools from Nils Hilbricht)
These last ones were tricky since they use python libraries.
In order to make it a generic package I resorted to cxfreeze which makes it run independent of the system python.

Coming soon is Carla 2.1-beta1.
The actual software is ready for the beta1 release, but setting up the infrastructure for an updated Qt5 build is taking longer than expected.
The current 2.0 builds use quite an old Qt version: Qt5.5 on macOS, Qt4(!) on Linux, which I do not accept for new releases going forward.
Windows builds are ready to go though, you can find test binaries on Carla's github.
Once I finish setting up the builds for Linux and macOS, I will make the announcement. Very likely in mid-November.

Finally, Sonoj is coming!
Sonoj is an annual event/convention in Cologne, Germany, about music production with free and open source software.
It features demonstrations, talks and hands-on workshops.
You can meet like-minded people, learn insider knowledge and tricks, participate in their one-hour production challenge!
It is only a few days from now, so please get ready! :)
I will be doing a talk in Sonoj about the past, present and future of JACK.
So please come and say hi, registration is free!


Note: Since the KXStudio website has been internally reworked (removed mediawiki, much simpler PHP code now), the old news have been removed.