[gmpi] Re: 3.11 topic: Inter-parameter linkages

  • From: Mike Berry <mberry@xxxxxxxxx>
  • To: gmpi@xxxxxxxxxxxxx
  • Date: Wed, 07 Apr 2004 10:02:19 -0600



Koen Tanghe wrote:

On Tuesday, April 06, 2004 7:15 PM [GMT+1=CET],
Mike Berry <xxxmberry@xxxxxxxxxxxx> wrote:


Tim Hockin wrote:


On Mon, Apr 05, 2004 at 06:31:51PM -0600, Mike Berry wrote:


There were two use cases that were brought up for internally generated
events:

* Min and max knobs which are offset and lock in step.  Increasing min
increases max.  Max can not go above the maximum value for that param.
min can not go below the minimum value for that param.

Simply define two automatable parameters - min and width. Then when you change min, effectively max moves because width stays constant.

OK, that's a fine answer for this case, it was just one case :)

I wasn't trying to just fix the one case. I think that EVERY case of parameter linkage can be described as either one parameter with different views or two or more parameters that can be unlinked with a little thought.


I did think about doing that (min + width) too in the case the min and max
are locked (which they are not always by the way, depends on another
parameter!) some time ago.
Say min and max can both go from 0 to 1.
Now, if you use the min + width representation (when min and max are
locked), this means that:
- if min == 0.5, width can go from 0 to 0.5
- if min == 0.1, width can go from 0 to 0.9
So now you'll need to update the range of one parameter depending on the
value of another.
Also consider the following:
- width = 0.8, min = 0.1
- user clicks the min slider (or moves MIDI fader, whatever...) to set it to
position 0.5
- DSP core receives this parameter change and sees it is not allowed because
of the high value of width (max = 0.5+0.8 would be > 1)
- DSP sets min to 0.2 and needs to tell the UI about that (that was my need
in fact: also a way for the core code to tell all attached user interfaces
that a parameter has changed, not necessarily to what was requested)
The 2 parameters are not totally unlinked/independent I think.


In this situation, what I would like to see is that this parameter pair is exposed as a single opaque parameter. As the host, I do not have the information necessary to properly automate this case, because changes in one parameter may be illegal based on the state of another parameter. So I would like to not present whatever automation interface I have for single parameters. Instead, I want to always record these two values as a single unit, solving the undo and conflict cases. Then, in the plugin's custom UI, the parameters can be split out to separate controls.
This approach makes correct host behavior possible. It has several consequences, all of which I think are bearable:


- The host could not present generic UI for this plugin. Custom UI would be required.

- The plugin writer must do a bit more work to group their linked parameters into opaque units.

Mike Berry


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