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