[gmpi] Summary 8.1: What is a parameter

I took the proposals for this, and tried to merge them.  My own was longest
and most explicit, but there was language in all three that I liked.  Here
is my first shot at a summary.

Comments?


8.1: What is a Parameter?
-------------------------

A "Parameter" is an abstract way for a plugin to present some control to the
host.  Anything that is changeable in real-time is a Parameter.  When the
operation of the plugin is manipulated (by a GUI, a control surface, another
plugin, etc) the change is communicated to the plugin using Parameters.

Parameters have all sorts of meta-data, such as datatype, range, etc.  This
alone is not sufficient, however.  Parameters need to be able to receive
changes from a number of sources.  Similar to Parameters, and usually
related are Control-Inputs.  Control-Inputs are where user actions are
delivered.

Every Parameter has a Control-Input, which is how Parameters get changed.
Because we want to be able to connect plugins together, there must also
exist Control-Outputs.

It seems reasonable that we might want to generate very specific data (e.g.
a tempo controller) or very generic data (e.g. a generic sine controller
which can be connected to any Parameter).  Therefore, it seems not
unreasonable to have the Control-Outputs identify themselves as outputting
normalized or natural data.  Perhaps Control-Inputs can flag themselves as
such, too.

Because of the simple Control-Input model, any number of sources can
manipulate Parameters.  This includes automation playback, which is really
just another event source.  All Parameters can be automated.

Because there are likely to be more than a single interface for a Parameter
(e.g. GUI and motorized MIDI control), the current state of a Parameter must
be sent to all listeners when that state changes.  This may actually be
handled by the host, rather than the plugin.

Plugins may want to retain compatibility with older plugins while evolving.
Parameters may be marked as hidden, so they are present, but not displayed
to the user.

When saving and restoring state, the majority of the state of the majority
of plugins can be represented by taking a snapshot of the state of all
Parameters.  Sometimes, however, it is useful to save and restore opaque
blobs of data (e.g. Parameters which have an ordering dependency, data which
does not map well onto Parameters).  Therefore, saving and restoring of
plugin state involves Stata.  Generally, a Statum will correspond to a
Parameter, but a Statum may be also be a blob of opaque data.  Not all
Parameters will have associated Stata, and therefore will not be saved with
the Plugin state.


----------------------------------------------------------------------
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: http://www.freelists.org/archives/gmpi
Email gmpi-request@xxxxxxxxxxxxx w/ subject "unsubscribe" to unsubscribe

Other related posts: