falkTX wrote:meters.lv2 is a good example of IPC done well.
It can be done.
Developers should just be less lazy.
meters.lv2 only deals with scalar valued input/output ports, just like any lv2 control parameter does. meaning that writing a generic wrapper (or bridge) for DSP<->UI IPC is the least of the complications one can come about--it's a just a matter of one single do-it-all RPC-method passing an int (port index) and a float (port value) as arguments around; and that should work for all lv2 plugins that implement their model/controllers as lv2 scalar ports (control or audio) exclusively.
when the data you wish to pass across the bridge is one notch beyond that simple, like having some structured data to start with, things start to get real complicated, namely for the generic bridge developer (which in fact becomes impossible, unless some strict protocol is imposed to plugin developers as to represent their plugin's model/controllers exclusively and exhaustively through scalar values and opaque atom ports (you don't think i forgot about these ones, did you?
)
now, some gadgets out there can became really complex, both in scale or magnitude and structure. benefits and virtues of a DSP-UI separation will vanish pretty soon, as for instance, the host and plugin will spend an increasingly, non negligible, processing power for IPC rather than doing actual DSP and UI drawing -- as an aside, that kind of sort reminds me of the old monolythical-kernel (eg. linux) vs. micro-kernel (eg. mach, minix, hurd, darwin, even winnt in the early years) debate, but whatever
imo. the only "pro" for DSP/UI separation might be about GUI toolkit isolation--you really can't mix Qt4 and Qt5 in the same address-space, same with Gtk2 and Gtk3). that's true and particularly demanding.
otherwise, if it crashes it's because there's a bug somewhere lurking in it--go fix it, you dumbasses!
scnr.
separating a plugin's DSP from its UI won't solve the bug, ever. otoh. if a plugin's GUI eventually crashes, even though the host keeps apparently up and running (as in an out-of-process DSP/UI scenario), rest assured that i (imho) would not trust the host session any longer, no matter what. i'd rather backout to a previous session and stuff (which means that a host crashing in sympathy with some plugin is the least of troubles anyhow). if the plugin keeps crashing then i, as an user, should ditch it from any production use. simple as that.
cheers