[gmpi] Re: Topic 6: Time representation

  • From: "Angus F. Hewlett" <amulet@xxxxxxxxxxxxx>
  • To: gmpi@xxxxxxxxxxxxx
  • Date: Wed, 30 Apr 2003 10:07:47 -0400 (EDT)

On Wed, 30 Apr 2003, Paul Davis wrote:

> >Does this last one (musical time) need to be supplied constantly, or can
> >it be supplied as periodic sync pulse events?

> you can do it as an event, but the point where you really need it is
> within the process() callback, and it seems to make sense to me to
> pass it in along with the other time references.

> you'd pass changes in nanoseconds-per-tick as periodic sync pulse
> events, following changes in the tempo and/or meter. the actual tick
> position would be a reference time just like the sample clock or UST.

Right, that makes sense.

> >It begins at streaming session start and runs monotonically until the end
> >of the current streaming session.

> i agree. but in that case, we need two sample clocks, one for "free
> running sample clock" and one for "transport sample clock". otherwise,
> plugs that don't know anything about musical time have no way of
> knowing where the current transport location is without dealing with a
> stupid and unnecessary conversion.

OK, so we need:-

1. Absolute sample clock - int64 in samples
2. Transport (media) sample clock - int64 in samples
3. Absolute UST clock - UST clock structure
4. Transport UST clock(?) - UST clock structure
5. Musical clock in ticks and fractions of ticks (which, by definition, is
defined in terms of the transport, and -??- is optional as some hosts may
not have a notion of musical time). Probably easiest to implement this as
a double precision float, as it will often be fractional.

Transport sample clock, transport UST clock and musical clock can all be
reset (by an event) during a block (e.g. if the song loops back during the
current block). Absolute sample clock and absolute UST clock cannot be
reset except at stream stop and start.

> sure. i wasn't trying to be specific about the "retrieval" message. if
> asked, i would probably say it goes in as const-pointer-to-const
> argument to the process callback.

Works for me :)

Regards,
        Angus.


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