[gmpi] Re: Item 0: Agenda

  • From: RonKuper@xxxxxxxxxxxx
  • To: gmpi@xxxxxxxxxxxxx
  • Date: Fri, 14 Feb 2003 09:52:59 -0500

Here is the final agenda.  I think the first handful of topics are pretty
much agreed on, so we can begin with topic 1 presently.

1.      Audience for and users of plugins
Who are our target users/customers?  Who are our target developers?  What
kinds of plugins do people use today, and what will they want to use in the

2.      Plugin flavors
Audio and/or MIDI processors, sure, but what about driver plugins, synthesis
components, controllers, visualization plugins, MIDI editors?

3.      Cross-platform
What processors, O/S, addressing models and programming languages do we need
to support? Level of heterogenity on u-controller+DSP systems?

4.      Host interface
In-process or out-of-process?  What kinds of special needs are there in
events to/from a plugin?  Is the host a plugin too?  Can the host be a chain
of simpler plugins (sequencer, timeline, automation)?  Transport control, UI
updates, track information?

5.      Threading
What kind of realtime guarantees?  Does the host provide some kind of
threading environment?

6.      Time representation
Samples or "ticks" or both/neither?  How are discontinuities expressed?

7.      Audio packaging
What do we prefer for interleave, audio sample data types, allocation,
timestamping?  Are compressed formats like MP3 permitted?   Do we prefer O-O
packaging a la DirectShow, or raw buffers a la VST?

8.      Parameter representation
What data type for values, for names?  How do we support validation, value
distribution?  Are parameters presented as a flat list or in some hierarchy?

9.      The role of MIDI
How important is it?  How do we ensure something new is still backwards
compatible?  How do we represent "note parameters" in the parameter model?

10.     Signal routing
How is audio and control data communicated between objects?  Can plugins
produce more/less data than they consume?  Do plugins work in "pull" or
"push" model?  Do we allow plugins inside plugins, full multirate
synchronous data flow graph, etc.?

11.     DSP state
When and how does a plugin reset?  How to respond to format changes?  What
formal "states of life" has a plugin? Are there different levels  of
initialization? When does which information/functionality exist?

12.     Scalability
Transport layer + optional protocols, or something more monolithic?   What
can and cannot be optional for plugins and hosts? Can certain protocols be
handled through reusable host side "support modules"?  Plugin SDK emulation
features for non-optional protocols?

13.     Persistence
Whose reponsibility?  How do we deal with endian issues?  What formats are
required for data interchange?  How are factory preset settings handled?

14.     Localization
How does the host specify its language?  Logical vs. human-readable names?

15.     Component packaging
Is there a "base level" possible that's still cross platform?  How do we
support all target platforms?

16.     Enumeration (creation, discovery, etc.)
Create for use vs. query, what can a plugin do at creation time, RT safety?
What kind meta-data does the plugin reveal?  How do plugins discover each
other?  How does the host discover plugins?

17.     GUI
Can GUI be avoided at this point?  What does the interface boundary to the
GUI need to be?  Should the GUI be isolated from the plugin?  Is the
relationship between GUI and plugin 1:many, many:1, or many:many?

18.     Copy protection
How should plugins address DRM streams?  How to sign OpenSource plugins?

19.     Source code
How are headers and host libraries/source licensed?  What kind of sample
code is required?  What coding conventions do we use?  What languages is
sample code written in?

20.     Version Control
How do we manage the versioning of GMPI?  How do we manage versioning issues
with plugins?   When a new release of a plugin comes out should it be
backwards compatible with earlier versions? i.e. Should DSP binary
compatibility in the strict sense be a requirement?  Should plugin
parameters be compatible across versions? How do we handle enhancements to
parameter ranges, etc.  What model should be used for version control?

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: