> Inter-plugin events are delivered as usual. A plugin receives an event, and > sends notifications to listeners. This is how the host does automation > recording and undo. IMO a host should only record param changes based on the gestures in the plugin's GUI. If plugins chatter with param changes among themselves, that should be kept private to the plugs. This is especially important if plugin GUI's are going to run on one (non-realtime) thread while DSP runs on another (realtime) thread. These "recordable" param changes should be timestamped and queued. WE don't want GUI manipulations to interfere with audio streaming or DSP in any way, and besides due to buffer size issues you'll never get an accurate timestamp if the plugin DSP code does the multicasting. (The plugin will only get to multicast on its processing cycle, which is periodic on the buffer size.) > Up until now, I had been considering event delivery as totally > asynchronous. The biggest flaw with async is that the GUI can not > properly update until it receives the notification that the parameter > changed. The knob must stay still until the notification. The knob could > move to the expected position, and only re-adjust if the notification != the > current value (most of the time, a knob move will succeed). Either way > there is potentially a lot of latency. That's OK IMO. GUI updates should always defer to stream processing. > Maybe it is better as synchronous. Very dangerous. We've seen DX plugins that updated their GUIs synchronously and it was a big nightmare. Even setting aside bad use of locks or crit sects in a plugin, when you make GUI calls you are in OS code. You don't know what kind of locks and overhead etc are internal to the OS when you start going to the GUI. In Windows, for example, any GDI calls done on a GDI object _must_ be done on the same thread the object was created in. So on this popular OS any synchronous param updates are going to have to queued to the GUI's owning thread anyway. ---------------------------------------------------------------------- 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