Linux Issues

I am trying to port my framework (Jamba) to Linux using the latest SDK 3.7.8. As I am encountering issues, I decided to get back to square 0.

Here are the steps I followed:

  1. On Linux, I am using Ubuntu 22.02 LTS. I have run the script that is provided with the sdk (vst3sdk/tools/setup_linux_packages_for_vst3sdk.sh)

  2. Since there is no project generator for Linux, I generated a project using the Project generator part of the SDK on macOS

  3. I copied the project on my Linux machine

  4. I changed the location of the SDK in the CMakeLists.txt

  5. I ran the following commands to generate the cmake project:

> mkdir build
> cd build
> cmake -G "CodeBlocks - Unix Makefiles" -DCMAKE_BUILD_TYPE=Debug ~/src/local/pongasoft/LinuxTest378/

Note1: not providing -DCMAKE_BUILD_TYPE=Debug results in a compilation error

  1. I ran the following command to compile the project:
> cmake --build . --config Debug --target LinuxTest378

which resulted in the following compilation error:

[ 95%] Building CXX object CMakeFiles/LinuxTest378.dir/source/controller.cpp.o
/home/ypujante/src/local/pongasoft/LinuxTest378/source/controller.cpp:7:10: fatal error: vstgui/plugin-bindings/vst3editor.h: No such file or directory
    7 | #include "vstgui/plugin-bindings/vst3editor.h"
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.

The issue is that there is this block in the CMakeLists.txt (not a Linux issue)

#- VSTGUI Wanted ----
if(SMTG_ADD_VSTGUI)
    target_sources(LinuxTest378
        PRIVATE
            resource/editor.uidesc
    )
    target_link_libraries(LinuxTest378
        PRIVATE
            vstgui_support
    )
    smtg_target_add_plugin_resources(LinuxTest378
        RESOURCES
            "resource/editor.uidesc"
    )
endif(SMTG_ADD_VSTGUI)

Note2: Clearly the generated source code controller.cpp depends on VSTGUI yet there is a conditional in the CMakeLists.txt that doesn’t make any sense. Commenting out the if and endif line fixed the compilation issue.

  1. Since there is no VST3PluginTestHost application on Linux, I used Ardour. Running in Ardour, the daw crashes with the following error:
/opt/Ardour-7.4.0-demo/bin/ardour-7.4.0: symbol lookup error: /home/ypujante/.vst3/LinuxTest378.vst3/Contents/x86_64-linux/LinuxTest378.so: undefined symbol: pango_font_metrics_get_height

I am not sure what to do about this problem. Is it a problem with Ardour? Is it a problem with the SDK?

Thank you for your help

If you just want to check VSTGUI issues quickly you could use the editorhost example from the SDK. The editorhost does not call any processing functions but just displays the plug-ins editor. I always use it to check my plug-ins GUI quickly.

Build the SDK and have a look at the hosting examples ((https://github.com/steinbergmedia/vst3_public_sdk/tree/e099a33fe9d78295f58f919ec3bb58968dd5752c/samples/vst-hosting/editorhost).

We had a bug in the currently released generator. The variable SMTG_ADD_VSTGUI was renamed to SMTG_ENABLE_VSTGUI_SUPPORT. But we missed to update the generator. This is fixed now: https://github.com/steinbergmedia/vst3projectgenerator/blob/1249ad619d494883b4bf68a17f720bab53e59893/script/cmake/templates/vst3plugin_folder/CMakeLists.txt.in#L33

If your plug-in requires VSTGUI and does not work without it, of course you can remove this if…endif from your root CMakeLists.txt. It is just a simple way of enable/disable VSTGUI for a plug-in.

Yes I had tried with editorhost and yes it works fine with it. It doesn’t work in Ardour.

I just installed Ardour 6.9.0 on Ubuntu 22.04.2 LTS and tried some plug-ins from the VST3 SDK, including the ones that use VSTGUI. I was able to instantiate all of them without errors or crashes.

(I assume undefined symbol: pango_font_metrics_get_height might be related to VSTGUI)

Could you provide me with a plug-in that crashes on your system?

I just sent you a private message with the link to the vst3 plugin executable.

The source code is this:

LinuxTest378.zip (103.5 KB)

It was generated with the generator

I tested with Ardour 7.4.0 demo (and the latest Ardour 7.5.0 demo) with the same result.

Thanks

Ok, I requested access.

Works fine on Ubuntu 22.04.02 LTS with Ardour 6.9.0. as well as the latest Manjaro with Ardour 7.4.0. I could not find any plug-in which does not start up correctly. I installed Ardour using the package managers (apt-get and pacman) on Linux.

I just checked your prebuilt binary in

Ardour 6.9.0~ds0
"After Bach"
(rev 6.9.0~ds0-1build1)
Intel 64-bit

No crashes or errors. It opens up just fine.

There was also a Manjaro Update some hours ago and it ships with an updated Ardour

Ardour 7.5.0
"Neroli"
(rev 7.5)
Intel 64-bit

All plug-ins open up without crashes or any errors. Download my synth (www.hansen-audio.org) and try to load it in your installation of Ardour. I never had any trouble using it in Bitwig Studio or Reaper. And it opens up fine on my Ardour installation on Manjaro as well.

I tried with your plugin and getting the exact same issue:

/opt/Ardour-7.5.0-demo/bin/ardour-7.5.0: symbol lookup error: /home/ypujante/.vst3/K-Whooms.vst3/Contents/x86_64-linux/K-Whooms.so: undefined symbol: pango_font_metrics_get_height

It does not happen when I add the plugin. It only happens when I open the UI of the plugin (which is the exact same behavior I am getting with my plugin)

I am also using Ubuntu 22.04.02 LTS with all packages up to date. It is not a fresh install of Ubuntu though, so I am wondering if there are some inconsistencies on my system…

Due to the other issues I have encountered porting to Linux, I have currently paused this effort.

I am unclear how you were able to resolve all the threading issues (like how you run things in a UI thread from the RT to send a message to the UI for example), or the file open dialog or drag’n’drop… Maybe you used none of these features…