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

  • From: Tim Hockin <thockin@xxxxxxxxxx>
  • To: gmpi@xxxxxxxxxxxxx
  • Date: Wed, 24 Dec 2003 10:37:38 -0800

On Wed, Dec 24, 2003 at 10:07:29AM -0800, Tim Hockin wrote:
> So what if the rule of thumb was that any control output (that is, anything
> that creates events) can bookend 1 or more events with 'gesture start/end'
> events.  Events that are sent outside of a gesture may be treated as
> individual gestures or grouped together by time, as the host sees fit.
> 
> This only encapsulates events for a single control into a gesture.  Is that
> sufficient?  I'm not sure.

How about a better model.  I've developed two very polar opinions at the
same time, so I'll present them both.

1) The "full gesture" model

Gesture start and end timestamps don't matter so much, do they?  And it
would be nice to be able to have multiple events for multiple parameters
inside a single gesture, wouldn't it?  And you want to notify the host and
other plugins that care about gestures, but not plugins that don't care,
right?

How does this sound:

* Any plugin that generates events might use a host callback to initiate a new
  gesture:
        gest_id = host->new_gesture();

* All gestures are host-global.

* Plugins which care about gestures can provide a GESTURE control, which
  will receive gesture start/end messages.

* Parameter events include a gesture-id field.  Plugins that care will
  interpret that field.  Plugins that don't, won't.

* In fact, we may not even need to send gesture events.  If a plugin that
  cares receives an event with a new gesture-id, it can assume a new
  gesture.  With a 32-bit gesture-id, it will be a long time before we
  rollover.  Long enough for a sane expiry.


2) The "no one cares" model

What are gestures used for? For clumping events together into undoable
units, and 'touch automation'.  I don't see any other reasons.  Sequencers
would not record gesture events.  Gestures imply a real-time aspect.  Since
all events go through the host, we only need to send gesture events to the
host.  If the host doesn't support undo or touch automation, then it will
ignore them.  If it does support undo or touch automation (which is
essentially undo once the gesture ends) then it will observe and handle
gesture events.

How does this sound:

* Any plugin that generates events might use a host callback to initiate a new
  gesture:
        gest_id = host->new_gesture();

* All gestures are host-global.

* Parameter events include a gesture-id field.  The host can snoop events
  and tie them to the right gesture.


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