[gmpi] Re: 3.15 MIDI

  • From: Tim Hockin <thockin@xxxxxxxxxx>
  • To: gmpi@xxxxxxxxxxxxx
  • Date: Tue, 15 Jun 2004 11:55:53 -0700

On Tue, Jun 15, 2004 at 02:42:52PM -0400, gogins@xxxxxxxxxxxx wrote:
> That's not what I have in mind. GMPI has an API library that decodes MIDI
> streams from drivers, which it tranlates to GMPI parameter changes or
> messages for plugins. These messages just have the same "word semantics" as
> MIDI (middle C is 60.0, for example, or controller numbers and ranges) and

So, it's (probably) easy to keep simple semantics like "60.0 - middle C".
It's not (IMHO) sufficient to keep semantics like "all parameters are one
big fugly byte-stream".

If I read what you said above, we're saying the same thing.  Plugins do
not handle MIDI, they handle GMPI.  The host converts from MIDI to GMPI.

As much as possible, GMPI can retain MIDI concepts, such as "60.0 = middle
C" (that might need debate, but whatever).

But the fundamental baseline point I am trying to make is this:

A plugin should *never* need to interpret a MIDI bytestream.

> map to a superset of MIDI channel and controller messages. By
> user-extensible opcodes, I mean that plugins can use a GUID to register a
> temporary user-assignable "status ID" for the host to use for certain
> gestures or score markings.

I'm not following this at all, right now..

> I'm just trying to keep the new GMPI protocol separate, with richer
> semantics, while otherwise keeping it as close to MIDI as possible.

The way I've been envisioning it, anyone who is familiar with MIDI and how
it works, will be able to grok GMPI.  It's not like it was designed on
mars or something.

But GMPI is not MIDI.  It doesn't need to be a byte-stream.  It doesn't
need to be limited.

> One thing I'm not sure we've adequately discussed is voice allocation. Does
> the host API handle this, or the host, or the plugin itself using a plugin
> API, or the plugin however it can (as with VST now)? I guess the note ID
> idea implies that the host manages voice allocation -- that the host
> instantiates a new instance of a voice for each new note, using a plugin
> clone method, or just resetting all parameters, or something. That would be
> fine, I think.

Let's get there when we get there :)  Too many arguments at once makes my
head spin.

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