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