Home KXStudio > News
RSS

KXStudio : News

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


Next →