I see, What I get from this is that one of the main reasons to go for DSP/UI separation is to give more control for the host over "offending plugins". Due to novice dev, lack of documentation, other technicalities, etc. But basically you'd like to lessen the chance of plugins crashing. If thats it, I understand.mr.ardour wrote: Sat May 01, 2021 1:22 amWhat we've noticed over the years of developing Ardour & Mixbus is that plugins that come out of companies/organizations/processes/developers who have really "systematized" their development all tend to Just Work (TM). Once you can load one Waves plugin, you can load and run them all (for example). U-he's fabulous instruments ... they just work, all the time. Etc. etc.S0lo wrote: Sat May 01, 2021 12:38 am Would these problems still occur, had the plugins followed a correct and well defined protocol/standard of how to access DSP and GUI through the none separated single model?
The problems tend to show up in two places:
First, relatively new developers or developers that only ever create one or three plugins. This has become less of an issue as more and more people use JUCE, iPlug, DPF etc. to take care of the boilerplate. But people who insist on hand-rolling everything tend to take a while to get things right in all the details.
It is important to note that this is also caused by the lack of clear instructions/SDK's/APIs for host implementation. How many times will we read "well, the plugin works in host X" when dealing with a bug report from users? Logic has taken some fairly loose interpretations of the AU "spec" that are certainly within the range of the reasonable, but you won't find them written down anywhere. I don't blame plugin developers creating an AU from saying "it works in Logic" but I really think we should able to "do better" than that.
Second, sometimes there can be fundamental technology that is solid that gets combined with something new. I won't mention any names, but for example when one excellent plugin development company allowed an effort to port its plugins to Linux, the GUI implementation was (and to some extent still is) pretty wacky. The fundamental DSP side is totally solid, and the GUI itself is similar, but the graft of some new technology took some time to get worked out (some might argue it still needs work, but that's not relevant.
In summary, I would say that in general, you're probably right. But we frequently have read things even in this thread about how wonderful it is that "anyone can write a plugin", and it is often (though not exclusively) this sort of development pathway that ends up giving is headaches inside the host.
But here is the thing. The host is practically helpless. really no matter what you do. The plugin lives inside the address space of the host (unless your sand boxing). It could at any moment touch any part of memory, it could wreak havoc if it wants to. It can do an endless loop when it gets the GUI thread and hang the display, etc.. The host is really at the mercy of the running plugins.
So I think it shouldn't try or even be expected to try to control the plugins, because it simply can't. Now don't get me wrong here. Sure there are some sanity things to do, like if a plugin requests a million parameters, or a thousand outputs, etc. Sure the host should deny that. But really beyond those obvious things I don't think the host can do too much. In otherwords, the host is not an OS, so it shouldn't try to be one. Because if it did, it will fail big time.
The relation between the host and the plugins is collaborative, not governmental. Sandboxing is the only real power the host has.
I think the priority in a standard should go more towards performance. lessening latency, CPU, memory usage etc. Control and host protection should be a lesser priority. Otherwise, the standard may shoot itself in the foot by creating more problems due to complexity, just as Urs described above.
Let the offending plugins crash, and some how find a way to report them to the user in the next session. Eventually the user will learn that the problem is in the plugin. Now if it runs on another host because of some hidden details of a standard that are not known to you, then thats a problem with the standard documentation. Not with your host. (Hence we need a well documented open standard
Still, I've never coded a host so what do I know
