[gmpi] Parameter Proposal was Re: Out-of-Band: suggestion for rethink
- From: Urs Heckmann <urs@xxxxxxxx>
- To: gmpi@xxxxxxxxxxxxx
- Date: Mon, 29 Sep 2003 18:55:18 +0200
Am Montag, 29.09.03, um 15:27 Uhr (Europe/Berlin) schrieb
RonKuper@xxxxxxxxxxxx:
*** Don't design the system, just state the
requirements. *** Present the document to the group, and then lets
debate
the proposal section by section.
Okay, because I was at it and I had enough from just lurking, here's a
quick snapshot on a very small subject, namely parameters. Maybe it's
trivial, maybe it's a starting point for someone elses ideas. (I think
that parameters are the essence of the plugin, hence I think they
dictate a lot of the rest, that's why I would start with them)
Dunno if the form is appropriate.
(Note: The idea of parameter structures is a mix of common Parameters
and AU-like Properties, dunno if that is good)
Cheers,
;) Urs
GMPI parameter requirements proposal
Parameter outline
- Parameters consist of an information structure (meta data)
and a value structure
- There are plugin-specific parameters as well as predefined
parameters (i.e. Bypass, Plugin name, SampleRate etc.)
For Parameters the plugin / framework offers mechanisms to
- be list-published to host or anything that is aware
of the plugin (i.e. an external control plugin, seperated GUI)
- predifined parameters are available, anyway
- be set/read from any external entity that is aware
of the plugin (info=read and value=read/write, depending
on metadata)
- non published parameters can be used for internal
communication (GUI<->plugin)
"private parameters"
Parameter info
- naming (UTF8), sizing, ranging, typing, short naming
(i.e. for hardware control surfaces), default valueing
- grouping of parameters (paging, hierarchical automation
popup selection, grouping in generic guis)
- association of parameters to objects / semantics inside
the plugin (Plugin Modules, MultiTimbral Synth parts etc.),
with its IDs starting at zero for each Module
(multiple lists rather than a single list)
- flags (readable, writeable, automatable...[extend list])
Parameter value
- on simple types, this will be a float (at a min/max range,
i.e. -100.f - + 100.f, semantics in the info)
- on complex types this will be a pointer to a structure
(opaque to host, only for internal use / GUI, if not the
given meta data hints at predefined types)
- a mechanism allows for the representation of values in
readable / graphical form (a callback?), plus a customizable
distribution curve, or is that meta info?
Example: Array of strings for "indexed" values
Services surrounding parameters
- Parameter changes are encapsulated within timestamped Events
- Events can be fired to notify entities of parameter
changes (requires a Listener scheme)
- Events can be fired if the list of parameters changes
(i.e. creation of a new parameter, or a parameter name /
semantic changes), requires host to update its list
- Parameter changes can be surrounded by Events which
mark begin and end of a row of subsequent changes, to allow
proper automation / ramping
Implementation stuff
- As a service, the framework holds all parameter data
in objects (the plugin does not need to track parameters,
the framework already does it)
- The framework offers means to store / retrieve parameter
values in / from preset structures (XML?)
- The host side framework (host SDK) offers appropriate
Listener/Notification schemes, XML parsing and stuff
(services in general)
- The host side framework offers a bunch of common
value->string conversion mechanisms
(plugin can add its own)
Scenario:
- the plugin defines a const array of parameter info fields
and creates the list of parameter objects on instantiation
- the host queries the list ( the plugin gives back only
the ones it wants to publish )
- the gui represents controls to manipulate parameters
- upon mousing, the framework notifies every entity about
changes, including surrounding begin/end tags
- on preset save (invoked by the host), the framework asks
the plugin to collect all information about parameters and
returns the resulting structure to the host
- upon preset load, the host sends the preset structure to
the plugin which in turn generates parameter values which
it sets (fires notification)
- if host saves song or anything, it saves the same
structure as in the preset (accordingly for load song)
----------------------------------------------------------------------
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
- References:
- [gmpi] Re: Out-of-Band: suggestion for rethink
- From: RonKuper
Other related posts:
- » [gmpi] Parameter Proposal was Re: Out-of-Band: suggestion for rethink
requirements. *** Present the document to the group, and then lets debate
the proposal section by section.
---------------------------------------------------------------------- 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.
- [gmpi] Re: Out-of-Band: suggestion for rethink
- From: RonKuper