jamba icon indicating copy to clipboard operation
jamba copied to clipboard

Support Linux

Open c0m0r1 opened this issue 4 years ago • 14 comments

I am currently trying to develop a VST plugin in a linux environment. Since jamba didn't support Linux, so I tried modifying the Mac version, but it was too painful for me. Are there plans to release the Linux version of jamba?

c0m0r1 avatar May 12 '20 11:05 c0m0r1

Since Jamba was released, you are the first person ever asking for it. I am definitely open to add support for it, if there is demand. I will leave this ticket open and interested people can vote for it.

ypujante avatar May 12 '20 13:05 ypujante

I tried to build a sample VST2 plugin that can be rendered with MrsWatson by referring to the sdk provided by steinberg and https://github.com/pongasoft/vst3-again-sample, but in both cases it failed to render with MrsWatson. (validator shows that the build result is the correct VST3 plugin, but MrsWatson rejected it). I thought there was a problem with VST2 support, and that's it. Can I successfully build a plugin without waiting for the jamba linux version?

c0m0r1 avatar May 12 '20 13:05 c0m0r1

I have not tried building any plugin with Linux with any version of the VST3 SDK so I cannot say whether it works or not. The vst3-again-sample project was done prior to Jamba so it doesn't use Jamba but I have not tried to build it under Linux (tested only on macOS). You can always try to post a question on the official VST forum (https://sdk.steinberg.net/)

ypujante avatar May 12 '20 13:05 ypujante

Developing a VST3 with the vstgui from Steinberg on Linux and it works well so far. Trying to understand which advantages Jamba would add to my workflow except adding another layer of dependency.

mxa avatar Feb 08 '21 14:02 mxa

@mxa You can check the https://jamba.dev/ to see the features that Jamba adds on top of the bare VST3 SDK.

ypujante avatar Feb 08 '21 15:02 ypujante

Hi,

I build vst-sam-spl-64 without much hassle. But for Linux support some updates are needed in the Jamba:

/tmp/vst3sdk-v3.7.5_build_44/base/source/timer.cpp:366: static Steinberg::Timer* Steinberg::Timer::create(Steinberg::ITimerCallback*, Steinberg::uint32): Assertion `false && "DEPRECATED No Linux implementation"' failed.

KottV avatar Jun 01 '22 13:06 KottV

Ok, commenting that assert in vst3sdk/base/source/timer.cpp helped:

изображение

this is in the Carla plugin host

KottV avatar Jun 02 '22 00:06 KottV

I am surprised that it even works on Linux. Every time there is a new VST3 sdk, I spent time fixing things on macOS and when it works there are always broken things on the Windows side as well. Since I don't even check Linux I am surprised it seems to work. The issue you mention with timer.cpp is a file in the VST3 sdk not in Jamba.

ypujante avatar Jun 02 '22 12:06 ypujante

Yeah, it's a VST3 thing (Jamba - was my first thought, because I've never seen that error before with VST3 plugins in Linux). Actually, you just have to allow Linux in Jamba's cmake files. I can do a PR for that.

KottV avatar Jun 02 '22 12:06 KottV

Since Jamba was released, you are the first person ever asking for it. I am definitely open to add support for it, if there is demand. I will leave this ticket open and interested people can vote for it.

It's got my vote!

magnetophon avatar May 31 '23 20:05 magnetophon

Status update:

I have spent about 2 days trying to port jamba to Linux and I must admit it is getting to the point where I am running into serious issues:

  1. as pointed out by @KottV, the first problem is that creating timers for Linux is just not supported (I opened a discussion thread in the VST forums). Jamba is using timers so that RT can send messages to the UI in a thread safe manner (although I realize that this specific answer seems to indicate that it is not guaranteed...). So I may have to revisit the whole thread safety/timer issue. That being said, even if I remove the usage of timers in RT for thread safety, timers in the UI (for example DebugParam view) should just work...

  2. Crash of DAW with undefined symbol: pango_font_metrics_get_height (although I can run the editor fine)

  3. Invalid module message in DAW due to naming issue of .so (creating a link with a different name fixes the issue but why)

Steinberg does not have a VSTPluginTestHost for Linux like there is on other platforms so it is hard to test that the plugin actually works. I have been using Ardour demo to test, which is where I saw those crashes. Unclear if the issues are due to improper implementation in Ardour (see 3), or my fault, or the SDK's fault.

The editorhost application does not seem to provide the IRunLoop implementation on Linux (which I believe is the replacement for Timers on Linux).

So in conclusion, not great...

ypujante avatar Jun 05 '23 18:06 ypujante

Status update:

After more research this where I am now:

  1. After many attempts at getting help on the Steinberg forums on Linux, I am still waiting for anybody to chime in, including any Steinberg representative...
  2. Still having issue with undefined symbol: pango_font_metrics_get_height with Ardour
  3. Using Bitwig, I am not getting this error, but running into many other issues
  4. After implementing my own timer thread, I am able to open the plugin but many things are broken:
  5. Opening a file dialog (which is part of VSTGUI) hangs everything and can only select with the keyboard (mouse unresponsive)
  6. Drag'n'Drop not working
  7. During compilation, there are many: "warning TODO: Implementation" messages.

It seems very clear to me that despite the claims that the SDK supports Linux, it is very rough and not really supported (point 1, point 4 - 7)...

I am throwing the towel for now...

ypujante avatar Jun 16 '23 17:06 ypujante

Yeah... not much optimistic. As far as I know, most of Devs implements their own GUI or uses some 3rd party instead of vstgui on Linux.

KottV avatar Jun 22 '23 04:06 KottV

With the release of SDK 3.7.9, there is a new feature which may help in supporting Linux.

I will try it when I get a chance but not holding my breath as there were many other issues uncovered during my prior attempt(s) at porting to Linux...

ypujante avatar Oct 12 '23 16:10 ypujante