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