[gmpi] Re: 3.11 partial wrap: Inter-parameter linkages

Looks great, in terms of a "saran wrap"<g>  We can peel the plastic off
later... 

-----Original Message-----
From: gmpi-bounce@xxxxxxxxxxxxx [mailto:gmpi-bounce@xxxxxxxxxxxxx] On
Behalf Of Tim Hockin
Sent: Monday, April 19, 2004 3:31 AM
To: GMPI list
Subject: [gmpi] 3.11 partial wrap: Inter-parameter linkages

On Sun, Apr 04, 2004 at 11:44:45PM -0700, Tim Hockin wrote:
> It was asked if we should have a way for a plugin to expose 
> inter-parameter links.  For example, B depends on A.  More complexly, 
> B is inversely proportional to A.

wow, that was a long thread.  I've summarized the current state of it,
and turned it into two requirements:

----------------------------------------
* Plugins must be able to expose inter-parameter linkages. For example,
  two parameters may be linked together or not, as determined by a third
  parameter. 

* Plugins must be able to perform seemingly spontaneous parameter
changes.
  For example, a plugin might morph all its parameters from one state to
  another based on a parameter input or a MIDI note. 
----------------------------------------

Before you all yell about spontaneous changes, I said "seemingly
spontaneous".  In the 'More on this requirement' section would be
something like:

----------------------------------------
In discussing requirements with the GMPI working group, a set of use
cases was established for a carefully designed way of exposing parameter
interactions to the host.

1. Linked parameters
    Two parameters, LEFT and RIGHT, are independant of each other,
unless
    a third parameter, LINKED, is set to true. When LINKED is true, LEFT
    and RIGHT are joined at the same value, and move in lock step. When
    LINKED is set to false, LEFT and RIGHT can be changed independantly.
    UIs must reflect this linkage. 

2. Clipped parameters
    Two parameters, MIN and MAX, are independant of each other, unless a
    third parameter, LINKED, is set to true. When LINKED is true, MIN
and
    MAX are locked to each other by their current offset, and move in
lock
    step.  MAX may not exceed 1.0, and MIN may net drop below 0.0. 

    If MIN = 0.0 and MAX = 0.5 when LINKED is set to true, then the
offset
    is 0.5. Setting MIN to 0.3 would raise MAX to 0.8. Attempting to set
    MIN to 0.6 would attempt to set MAX to 1.1, which is out of bounds.
    MIN must be clipped at 0.5, and UIs must reflect this clipping. 

3. Morphed parameters
    The user establishes several patches and assigns them to specific
MIDI
    notes. When the user presses the specified MIDI notes, the plugin
    begins to morph all the parameters to the assigned patch. If the
user
    presses another note, the plugin begins to morph all the parameters
    from their current states to the assigned patch. UIs must reflect
this
    ongoing morph. 

To conceptually handle these issues the idea of the "parameter actor"
was established. The final implementation is up to the spec and
implementation teams, but the idea is simple. Plugins can expose a
parameter actor. The parameter actor encapsulates the logic of
inter-parameter dependencies.
Event senders call the actor synchronously, and are immediately alerted
to things such as linked or clipped parameters.

The actor is also called from the process() loop or some other timer
mechanism. The actor can deliver events to the DSP plugin on a regular
basis to handle things like morphs or continuous randomizations. This
model allows plugins to control all their parameter input logic without
a custom UI and without violating any of the established GMPI
conventions about events and event delivery.
----------------------------------------

How does that sound?  That covers a few of the open topics, but not all
of them.

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


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