[gmpi] Re: Reqs 3.9. Time - opening arguments.1

  • From: Chris Grigg <gmpi-public@xxxxxxxxxxxxxx>
  • To: gmpi@xxxxxxxxxxxxx
  • Date: Mon, 2 Feb 2004 19:24:52 -0800

Better, but I still don't see a definition of 'timeline controller' in there. Seems like it needs a different definition for each time type. I know there are some problems in the following long text, but hope it points in the right direction...?

-- Chris G.


1. Types of Event Time


The GMPI event structure must include the following four time fields: Sample Time, Music Conductor Time, Music Score Time, and Universal Time.

- All GMPI events must include a Sample Time, derived from a Sample Time Clock (defined below). This field allows the receiving plug to achieve sample-accurate event handling, and is intended to be used by most plugs as the primary event timing information. [[TBD: Do the Sample Times received by the plug reset to 0 at the start of every timeslice?]]

- All GMPI events may also include a Music Conductor Time, also derived from a Music Timeline Controller (defined below). This field provides the receiving plug with semantic information about the event's musical position relative to the beginning of the current piece's playback (for example: section, bar, beat, fractions of beat; exact format TBD), for plugs that can use it. Time signatures and tempos are allowed to change at any time during playback.

- All GMPI events may also include a Music Score Time, derived from a Music Timeline Controller (defined below). This field provides the receiving plug with semantic information about the event's original time in the musical score (for example: section, bar, beat, fractions of beat; exact format TBD), for plugs that can use it. In cases of repeated score sections or pieces that are assembled from chunks of score, Music Score Time can be different from Music Conductor Time; for scores with simple structures, they will be the same. Time signatures and tempos are allowed to change at any time during playback.

- All GMPI events may also include a Universal Time, derived from the host's currently selected Universal Time Clock (defined below). Universal Time assumes the existence of a shared master Universal Time Clock, enabling a plug to to synchronize it's internal GMPI event processing with other devices or systems outside the current GMPI host.


2. Event Time Sources


GMPI must support the following three types of event time source: Sample Time Clock, Music Timeline Controller, and Universal Time Clock.


2.1. Sample Time Clock


The host must generate one monotonically increasing integer [[size TBD]] Sample Time Clock for each GMPI graph. All GMPI events must include a Sample Time, derived from a Sample Time Clock. A GMPI graph's Sample Time Clock will typically be directly driven by the sample rate of the final output audio device driven by that graph.

GMPI events generated by the host must derive their Sample Times from the destination graph's Sample Time Clock. GMPI plugs that generate events must be able to query the current value of the graph's Sample Time Clock, for use in deriving the desired Sample Time.

2.1.1. Corollary

Each GMPI graph must run at a single sample rate. To present multiple sample rates and/or multiple Sample Time Clocks to different GMPI plug-ins, a host would have to maintain a separate GMPI graph for each desired sample rate, bridging them with sample rate and Sample Time Clock converters if and where necessary.


2.2. Music Timeline Controllers


Any Music Conductor Time value or Music Score Time value present for a given GMPI event must be derived from a Music Timeline Controller. A Musical Timeline Controller is any entity that accepts any realtime transport control events or API calls (start, stop, pause, resume, locate, ff, rewind, time signature change, tempo change, etc.) plus some master clock stream (including perhaps external sync), and maintains a proportional, monotonically increasing, clock or position counter expressed in musical metrical form (for example: section, bar, beat, fractions of beat; exact format TBD). Time signatures and tempos are allowed to change at any time during playback. Music Timeline Controllers could be implemented in the host, as GMPI plugs within this host, as applications beyond the host, or as drivers for handling input from remote sync sources.

If GMPI events generated by the host include Music Conductor Times or Music Score Times, they must be derived from the appropriate Music Timeline Controller(s). GMPI plugs that generate events must be able to query the current value of the appropriate Music Timeline Controller(s), for use in deriving the desired Music Conductor Time or Music Score Time.


2.3. Universal Time Clock


If a Universal Time value is present for a given GMPI event, it must be derived from the host's currently selected Universal Time Clock. A Universal Time Clock is any entity that maintains a monotonically increasing time position counter [[format is TBD]] that is available both to the GMPI host and to all peer GMPI hosts intended to run in sync with it.

If GMPI events generated by the host include Universal Times, they must be derived from the host's currently selected Universal Time Clock. GMPI plugs that generate events must be able to query the current value of the host's currently selected Universal Time Clock, for use in deriving the desired Universal Time.

..end..


On Mon, Feb 02, 2004 at 10:47:12AM -0500, RonKuper@xxxxxxxxxxxx wrote:
 I have a question about some of the terminology used in this section.  I
 think we need some kind of glossary, or different language.

I've tried to avooid needing a glossary to read the requirements, but maybe we should put a brief "definitions" section at the head of each requirements section?

 > Req 29:   Every GMPI plugin must be associated with exactly one timeline
 controller.

What is a "timeline controller."?

Good question. We've talked about at least 3 timelines, possibly 4.


What if we add something like this, wrt timeline and control scope:

Sample time: Sample time is assumed to be global to a graph.  If a host
desires to provide multiple sample rates, it can provide multiple graphs and
bridge between them.  Each graph has at least one timeline controller.

Music time: Music time is defined by the timeline controller.  The timeline
controller determines the tempo and transport state of the musical timeline.
Hosts which do not support music time should provide a constant tempo (such
as 120 beats per minute, standardized by the GMPI implementation team).

Metronome time: Metronome time is driven by the timeline controller.

UST Time (if we need it) : UST is independant of any host-provided timeline.


First, do these sound reasonable? They aren't really requirements, but they could be added to the details. How do we best capture the requirements?


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


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