[gmpi] Re: New Reqs 3.8 - Events

  • From: Chris Grigg <gmpi-public@xxxxxxxxxxxxxx>
  • To: gmpi@xxxxxxxxxxxxx
  • Date: Tue, 16 Dec 2003 17:53:55 -0800

Req 22: GMPI must implement a time-stamped, sample-accurate event system. Events are how control >data is represented.

This seems to imply that when the plug receives events, all event times are expressed in sample numbers, as opposed to musical time or anything else. Was this intended? I know we had a long, painful discussion on all this once but don't remember the resolution. There was one efficiency issue that musical time events sitting in a queue that the plug could look ahead into would of course have to wiggle around in sample-time/abs-time space in the event of tempo changes, and that that could mean a lot of wasted cycles and maybe reordering in the event buffer.


Also I might say 'Events are how control CHANGES are represented.' Or 'control setting actions' or something.


Req 23: Events are delivered to a plugin immediately prior to the processing block in which they are to be >realized.

Obviously this conclusion is in conflict with the event buffering model question in the FIX ME after Req 24. Still, 'immediately before' seems vague. Reword?



Req 24: Event timestamps are absolute timestamps, not block-relative offsets.

FIXME: If events are timestamped with absolute times, rather than relative
times, it is possible to deliver events FAR in advance, and just have
them sit on the event queue.  Is this desirable?  If not, do events
REALLY need 64 bit timestamps?  32 bit offsets is probably faster.
Or is it not endorsed, but not worth fighting against?

See above comments on relationship to Reqs. 22 & 23



Req 25:   GMPI must support instantaneous events on all control inputs.
More on this requirement

Agree with Jeff, this is vague. Reword?



Req 26:   GMPI must support ramped events.
Ramped events do not make sense for
all control inputs, so control inputs must identify whether they
support ramped events or not.
More on this requirement

FIXME: do we need ramped events?

This could use a definition for 'ramped events.' Also is the idea really supposed to be ramped events? Or is it more like 'slew-rate-limited controls'?



Further questions:


- Imagine a single control with two event sources driving it, and fighting with each other. Is there any need for a way to selectively enable/disable event sources on a per-control basis? (One variation would be selecting one source per control, but that's not the only possibility.) I ask because this would seem to require encoding the source of each event in the event message. Might be a good thing, and help with event routing.

- Event routing. Do we want to require that the event mechanisms need to be transport-agnostic? I.e. a message format that can pass over wires & radio waves etc., not just a function call.

-- Chris G.

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