[gmpi] Re: 3.11 topic: Inter-parameter linkages

  • From: "Ron Kuper" <ronkuper@xxxxxxxxxxx>
  • To: <gmpi@xxxxxxxxxxxxx>
  • Date: Sat, 10 Apr 2004 09:50:52 -0400

> 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

Other related posts: