>I think we enforce DSP/GUI separation, but we design the interface >boundary in such way to be remoteable, yet efficient when running in >process. Maybe we can include an IPC toolkit as part of the GMPI >deliverable to do the remoting for applications that want it. if you write the GUI to run in-process, you can't remote it. if you write it to run remotely, you can't run it inprocess. well, sort of ... if the GUI is in-process its started by the host (ie. loaded and then executed via some kind of startup entry point). if its out-of-process the host *might* start it, but by forking a new process and execing the GUI code in that new process. if its remote, the host has nothing to do with it, essentially. i don't think you can create a GUI that can be used in each of these situations. otoh, we obviously want the simple case to just work: host loads plugin, host starts GUI, bingo. so what does that mean? what does the host do when this happens? well, the obvious approach is something like this: a) host-initiated in-process GUI host loads shared object calls well-known entry point GUI/host communication via a defined communication mechanism (e.g. a socket using OSC) b) non-host-initiated GUI host does *not* load shared object user starts GUI (same machine, or different), using some platform-dependent approach (e.g. cmdline, mouse click on icon, whatever) GUI connects to a well-known socket on host(+machine) host tells GUI how to address the DSP GUI/host communication proceeds using same defined mechanism as in (a) is everybody happy with that? it violates ron's goal of "efficient in the in-process case" - nothing will be as efficient as assuming you share address space with the DSP and so can just access its variables etc. and nothing will even be as efficient as using a defined function call interface for the DSP/GUI communication. so there is going to be a tradeoff here. either we have a mechanism in which the remote/out-of-process GUI falls out naturally, or we don't. using any kind of abstract interface that can be rendered using network communication inevitably has a real (though in practice, extremely small) cost. the benefit is scalability, flexibility, robustness, and portability. want to run a 50 disk-based sampler instrument plugins on a render farm of cheap headless linux systems but have the GUIs popup on your windows/macosx box? no problem. want to run just one instance of the same plugin in a DAW, and have the GUI come up on the same system, without any new version of the plugin? *that* is a future that interests me ... --p ---------------------------------------------------------------------- Generalized Music Plugin Interface (GMPI) public discussion list Participation in this list is contingent upon your abiding by the following rules: Please stay on topic. You are responsible for your own words. Please respect your fellow subscribers. Please do not redistribute anyone else's words without their permission. Archive: //www.freelists.org/archives/gmpi Email gmpi-request@xxxxxxxxxxxxx w/ subject "unsubscribe" to unsubscribe