Home KXStudio > News

KXStudio : News

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


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)


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.


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)

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. Feel free to grab the code and submit it yourself

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


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.


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.


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.


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


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


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


Zrythm with Vitalium on macOS


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

Next →