[gmpi] Re: Parameters / controls / GMPI event system - refreshment

  • From: "Koen Tanghe" <koen@xxxxxxxxxxxxxxxxxxx>
  • To: <gmpi@xxxxxxxxxxxxx>
  • Date: Mon, 28 Nov 2005 11:29:05 +0100

Sorry for the delay. Comments inline:

On Thursday, November 24, 2005 10:00 PM [GMT+1=CET],
thockin@xxxxxxxxxx <xxxthockin@xxxxxxxxxxxxx> wrote:

Think of an event as a packet on the control wire.

So: "event" = "control data", and it might be coming into or going out of a plugin.

Then, in section 3.11 we talk about "parameters" and say that
plugins expose their parameters to the host and that parameters are
automatable (thus directly modifiable by the host).

We weren't clear on this. I see it one of two ways:

"Parameters" are the sinks for control data - when you send control
data it must terminate at a parameter.  For example, the cutoff
frequency knob of a filter plugin would be a parameter, as would be
the host-to-plugin tempo syncronization of an LFO plugin.

"Control inputs" are the sinks for control data.  Control streams are
made between control outs and control ins.  "Parameters" are the
user-interactive control inputs.  For example, the cutoff frequency
knob of a filter plugin would be a parameter, where as the
host-to-plugin tempo syncronization of an LFO plugin would not.

Of these, I think I prefer the first - "parameter" is just an alias
for "control input".  What think?  I am trying to keep track of these
clarifications for the fledgeling specification.

In the first case, I was just wondering: what do we do with a "start new note" event (= control data packet)? Does that terminate in a parameter too? There is no fixed number of notes, so how can the plugin then export its list of parameters to the host, as required by the spec? Or do we use the polyphony limit and just export all possible parameters (might be a bit much sometimes I guess)?
If it's not terminating in a parameter, then what is it?

Also, for each started note, we would like to influence that note while it's being played, right? We even want to do that on a note per note basis, even if there are several notes with the exact same pitch (3 C4 notes, all separately controllable in pitch bend for example)..
Let's say we have a very simple synth that starts playing a tone when it receives a "start note" event and stops playback of a note when it receives a "stop note" event. Let's also say that each note being played can be controlled in pitch, volume, vibrato and brightness (controlled by transmitting the appropriate event). That makes 6 types of events (control data) per note.
Let's also say that the plugin has a polyphony limit of 64 simultaneous notes.

A few questions I aks myself:
Does the plugin have 64*6 = 256 parameters?
Does it then also have 256 control in ports?
Is that so even if there are only 2 note being played?
Or do we only have one control in port per note (64) and use parameterized events?
Or do other way around, but also using parameterized events: 6 control in ports, one for each type of event?
Can't remember exactly what we decided about that, and it doesn't seem 100% clear from the spec now...

Now, do I remember correctly that:
- GMPI events and controls are one and the same?

An event is a packet on the control wire.

- parameters can only be changed through GMPI events/controls?



- a GMPI plugin can only have two types of inputs and outputs: audio
and events (= controls)?

pretty much, modulo MIDI stuff

Of course.

- parameter changes (either incoming or outgoing) all come through
GMPI events (= controls)?


a. "start audio sample generation for a new C4 note"
b. "signal a snare drum event detection at time offset xyz"
c. "change the cutoff frequency of the filter to 200 Hz"
must come in to (a and c), respectively out off (b) the plugin using
GMPI events through a control port (aarghh, another term...)?

Pretty much. Whenever you go between plugins, you need some sort of "wire". That wire is a control signal which starts at a control output and ends at a control input. (we could switch to "source" and "sink" terminology if that is clearer to people..)

Or can a parameter change be done without going through a control
port using GMI events?

Do you mean internal to a plugin or between plugins?

I was thinking from host to plugin, but since all parameter changes must go through GMPI events the answer is "no".

Talking about "internal to plugins": does this imply that "automatic parameter changes" (like morphing or random changes) are done by the plugin (proxy?) sending GMPI events to itself? Or do we allow short-circuits for these things (I would think not)?

There's also the "clock/time related" input and output, but this will
probably be handled through special controller messages, but I could
be wrong, and for this post it doesn't matter really...

Clock stuff can be just another control signal

Yes, I thought so too.

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: