[gmpi] Re: 3.15 MIDI (What does it mean to be a plugin)

  • From: Chris Grigg <gmpi-public@xxxxxxxxxxxxxx>
  • To: gmpi@xxxxxxxxxxxxx
  • Date: Mon, 21 Jun 2004 17:04:45 -0700

I was relying on the assertion that 'undo' is a degenerate case of automation (inventing various Capitalized Names trying to capture that flavor), but maybe they're not the same, quite.

But no, I disagree with your conclusion because your use case isn't illustrative. Resetting the graph only ensures LFO phase synch if you also always start from the same place in the session (your T), which in media production and performance often/usually doesn't happen. Playback starts at random mid-session times, all the time, e.g. if you subsequently start playing from anywhere other than the same time, e.g. click in timeline to move 'now' cursor before hitting the spacebar, then LFO phase lock across playbacks fails. Same for the analyzer state example. Even if you reset the graph at each playback start. Not because of intentional randomization, but because the plug author didn't expose LFO phase because it's a quickie MSP patch, or she's a student, or ran out of time, or just didn't need it for the kind of host she had in mind, etc. etc. etc.

So you agree that system-wide GMPI parameter-centric undo/automation functionality does not in the general case guarantee the "same" audio at all? Even when all the rules are followed? That was my point too.

-- Chris G.

Mike said:

Chris Grigg wrote:

Consider a plug with one control input, two audio inputs, and an audio output. It does continuous signal analysis on one audio input, producing some simple or complex plug-internal state reflecting history of the audio signal, which is used as input for processing the other audio input. Separate higher-level control parameters are exposed on the control input. For this plug, rewinding state of all the published parameters to time T will not rewind the internal signal analysis state. Untotal Rewind despite following all the rules.


Consider a simple LFO plug, one control input with frequency, waveshape, and amplitude parameters. Rewinding parameter states to time T will not rewind the LFO phase. Untotal rewind despite following all the rules.

Consider a more complex LFO plug but basically like the above (but add a phase parameter to address the above scenario). Now, give it a trigger input and an EG so that when you ping the trigger you start a complex crossfade from one waveshape to another. Rewinding parameter states to time T will not rewind the LFO waveshape. Untotal rewind despite following all the rules.

I think that your concept of Total Rewind (sounds like a movie, or a tape deck feature :) does not map to my concept of undo. Here is what I need for undo:


1) The graph is reset and started at time t.
2) A parameter is changed.
-- intervening playback and such --
3) The parameter change is undone.
4) The graph is reset and started at time t.

I want the user to experience the "same" audio in step 1 as they do in step 4. If there is randomization that causes unreapeatibility, that is fine, because that is what the user expects. I expect LFO phase and reverb delay storage and all forms of history to be cleared when I reset the graph. The same for anything that does analysis on one of the inputs.
So in all of your examples I don't get your Total Rewind from the undo step. But the user gets exactly predictable behavior when they undo an action.


--
Mike Berry
Adobe Systems

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