[gmpi] Re: Reqs 3.8 Events - gesture start/end

  • From: Tim Hockin <thockin@xxxxxxxxxx>
  • To: gmpi@xxxxxxxxxxxxx
  • Date: Thu, 1 Jan 2004 21:28:22 -0800

On Thu, Jan 01, 2004 at 09:12:03PM -0800, Chris Grigg wrote:
> Tim said:
> >Really, I can't see why ANY plugin
> >would want to know about gesture events AT ALL.  They really are hints to
> >the host.
> 
> But earlier Tim also said:
> >I don't think plugs have any need to be gesture aware, outside of plugs 
> >that
> >host other plugs.
> 
> ...which I think is more right.  In other words: Because a plug might 
> be a host, don't we have to support gesture events in the plug API?

As I thought more about it:

Imagine control-outputs being virtually wired to control-inputs.  In the
case of multiple senders to one receiver you have a merge box or
priority-based switch (the host's job).

What will a sub-host plugin DO with gesture events?  Gesture events are not
recorded as part of automation.  Gesture events are really a notification
from the sender that "I want access to this control" and "until further
notice, these events are part of the same logical group".  With that
information, the OUTERMOST host can handle an undo event or touch
automation.

If we send it to sub-hosts and plugins, then are we expecting them to have a
DIFFERENT undo mechanism than the outermost host?  I hope not.

Gesture start/end really DON'T matter to the receiver at all.  What does a
plugin care if it receives events inside a gesture or outside?  All a
plugin should care about is that it received events. (*)

The gesture start/end events are sent so the HOST will see them on the
"wire" and do the right thing.  In fact, the ONLY reason they need to be
events at all, and not simply a host callback + gesture ID is this case:

* Automation engine sending events to param A and B
* I click the GUI for param A, but don't move it.  I want to override the
  automation.
* The GUI sends a gesture-start to A, which the host sees and stops sending
  automation for A, but keeps sending for B.

No actual parameter changes are sent, just a gesture start/end.

Handling multiple controls in a gesture is even more fun:

* Automation engine sending events to param A and B
* I click the GUI an X/Y controller for A and B but don't move it.  I want
  to override the automation.
* The GUI sends a gesture-start to A and a gesture-start to B, which the
  host sees and stops sending automation for A and B.

But how does the host know those two seemingly disparate gestures are the
same?  <Big Breath!> A gesture ID.  The sender requests a getsure ID from
the host:

* Automation engine sending events to param A and B
* I click the GUI an X/Y controller for A and B but don't move it.  I want
  to override the automation.
* The GUI plugin gets a gesture ID, G, from the host.
* The GUI sends a gesture-start(g) to A and a gesture-start(g) to B, which the
  host sees and stops sending automation for A and B.

Am I making sense or making a mess?

(*)  If we do send gesture start/end events to plugin, you KNOW some coder
will use them for something.  Plugin-specific touch automation mode or
something.  So we probably should just send them that way. :)


Tim

----------------------------------------------------------------------
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: