EQ10Q 2.0 Plugins Released

Well, it is obvious that C++ is not appropriate if ABI compatibility across significant periods of time is a concern. We had huge issues with this in the early days of Ardour (say, 2000-2004) and it has returned recently with gcc5, although in a much more subtle way.

Basically, there is no good current answer to your question, on any platform. JUCE perhaps comes the closest, but is an everything-with-two-kitchen-sinks approach. Personally, my preferred model would start with a simple RGBA32 frame buffer, but that doesn’t address event/input handling.

Would creating a declarative markup specifically designed for describing LV2 UI interfaces allow getting around ABI issues? Something similar in concept to QML perhaps? Just curious.

It would. But that would then require the implementation of “something like QML” for every possible host toolkit, which is no small task.

@sapista: I think x42 has developed a toolkit that can replace gtk for the uses you have, even as a drop-in replacement if I understand correctly.

That was gtk - not gtkmm - and I’ve meanwhile dropped support for it since I’ve used it only for transition.

PS. ideally plugins are completely self-contained: statically linked, no external dependencies (*), no symbols exported (except for the descriptor). That way there can be no symbol conflict. As extension this usually also makes the plugin portable (don’t rely on OS provided libraries).

Statically linking gtk/gtkmm UIs is not possible (not without significant patches to gtk anyway). While it can be done for QT (KXStudio does that), it result in ~150MB sized binaries.

For the case at hand. libpugl is probably a good candidate: It provides a window, cairo-context, and basic event system. Still it’s probably a major undertaking to port the signal/slot mechanism and layout in EQ10Q’s case.

(*) a few exceptions here are libc, libm (which are standardized), libX11, libjack (client lib <>server protocol must match) and maybe libstdc++ (if you can live with gcc4/5 incompatibility and can’t use -static-libstdc++ for some reason) on OSX: the Cocoa Framework and on Windows -lws2_32 -lwinmm etc are fine as well.