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

  • From: Tim Hockin <thockin@xxxxxxxxxx>
  • To: gmpi@xxxxxxxxxxxxx
  • Date: Wed, 31 Dec 2003 02:46:37 -0800

On Mon, Dec 29, 2003 at 04:31:59PM -0500, Paul Davis wrote:
> i don't believe that this is a valid example of
> "gesturing". gesturing, on my understanding, refers to a situation
> where you wish to set more than parameter at the same time, even
> though the events/messages describing these changes are inevitably
> serialized. hardware control surfaces don't generate gestures. script
> files (such as a Csound score file) do.

My understanding of what gesturing was, and was for:

A gesture is a series of events bound for a single or multiple controls,
which should be treated as part of a logical unit by the host.  The host can
use a gesture for an Undo history (undoing a whole gesture) or touch
automation.  Without explicit gesture support, the best the host can do is
use a timeout for events on a single control, and lump those together.

Example:  Assume I have a MIDI control surface with a slider, and I want to
do a moderately slow fade, by hand.  Over the course of 2 seconds, I move
the slider from MIDI 0 to MIDI 127.  Assume I am perfectly smooth, and I
send 1 MIDI event every 15.6 milliseconds.  The host will have a timeout of
(for example) 30 milliseconds.  Because each event followed within the
timeout interval, they are considered a single gesture.  If I ask the host
to undo the last change, it should undo the whole gesture (revert the slider
to 0) rather than the last event (revert the slider to 126).

The problem comes when you get someone who is not a smooth as me :).  Their
fade is a bit herky jerky, and at some point, there are 35 ms between
events.  The host then assumes this to be 2 gestures, and the undo behavior
is wrong.

With explicit gesturing, we can avoid the wrongness.

Now, I am not saying MY midi box can do gesturing, but a GUI could.  A touch
sensitive surface could.

Gesturing gives you further control.  If you have an X/Y control which sends
two outputs, you can't use the above timeout algorithm easily.  You end up
with a series of discrete events.  Yuck.  If the XY declared a gesture on
both controls, the host would have enough information to get it right.

My main point is that the only actor that cares about gestures is the host
of the plugin, because the MAIN use fo gestures is for grouping a bunch of
events.

Or have I made up a different issue?

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