[gmpi] MIDI: Stapling
- From: Chris Grigg <gmpi-public@xxxxxxxxxxxxxx>
- To: gmpi@xxxxxxxxxxxxx
- Date: Fri, 2 Jul 2004 15:38:22 -0700
Back again, sorry for the absence. I'm going to try to roll together
responses to all the comments on stapling original MIDI to those GMPI
messages that started out as MIDI events.
I think I see five arguments against stapled MIDI (SM):
1. It's inefficient/cumbersome architecturally to carry the SM along
with the pure GMPI message
2. Most plugs will prefer pure GMPI over SM, so for most situations
supporting SM is on balance inefficient
3. Plug developers will use the SM) instead of the pure GMPI part of
the message
4. Plugs that use only the SM will fail, causing user confusion/frustration
5. GMPI's equivalent to MIDI note-on may be spread over multiple GMPI
messages, so which one gets the SM?
Some of these contradict one another, but that's OK, they didn't all
come from the same person. However I'm not sold by any of them.
Taking them one at a time:
1. It's inefficient/cumbersome architecturally to carry the SM along
with the pure GMPI message
Depends on the implementation. We already have stapled MIDI SysEx,
so there will be some sort of mechanism in place, and I see no reason
why the same mechanism couldn't also handle the 1-, 2-, and 3-byte
MIDI messages. The mechanism could well involve the host holding one
copy of the SM, it wouldn't necessarily have to appear literally in a
message packet (though for renderfarm-type distributed architectures
that would have clear advantages).
2. Most plugs will prefer pure GMPI over SM, so for most situations
supporting SM is on balance inefficient
The premise is untestable, there is no way to know that most plugs
will in fact prefer pure GMPI. I really doubt it will be true,
especially at first. Also nearly all hosts that are music event
sequencers are already using heavily MIDI-modelled event
representation internally, often actual MIDI bytes, even if
automation track data is stored as floats. Saying it's better for
developers to use pure GMPI is not really an answer to the factual
issue of what % of real-world plugs will prefer pure GMPI vs. SM.
3. Plug developers will use the SM instead of the pure GMPI part of the
message
I agree this is probably true, at least at first, but don't see that
this is in any sense a problem, much less a reason to exclude SM --
quite the opposite, if people genuinely want to do this, we should be
responsive to that and give it to them. If pure GMPI really is
better across the board, which I don't necessarily dispute, then
there will be a natural migration away from SM over time, and there
will be future GMPI versions, at which time deprecation of SM will,
doubtless, be discussed.
4. Plugs that use only the SM will fail, causing user confusion/frustration
The premise makes unwarranted assumptions. Consider an existing VST2
plug that processes MIDI; assume the developer wants to port to GMPI
because there's a user community that wants to keep using those plugs
as hosts start to support GMPI. The plug looks for stapled MIDI in
incoming GMPI events; if there's SM there, it uses it (very
efficient, minimal disruption, status quo); if no SM is there, plug
has three choices: a) Strict-convert the GMPI to MIDI and use the
reconstituted MIDI message (wasteful for the huge number of cases in
which the message originated as live-from-HW or stored-in-sequences
MIDI, but at least possible); b) Ignore the event and do nothing
(resulting in user complaints, so either it's eventually fixed, or
the developer just doesn't care so there's nothing you can do about
it anyway); or c) Complain to the host somehow, so the host can
automatically do the strict-conversion before the plug sees the GMPI
message. Alternate option: At init time, plug has some way to let
the host know that for a given parameter, "Wants Stapled MIDI" and
again the host auto-provides the SM.
5. GMPI's equivalent to MIDI note-on may be spread over multiple GMPI
messages, so which one gets the SM?
To me, this is the only one of the five that seems to have any actual
potential issue at the core, however a) Premise is untestable, since
have neither requirements nor design proposals for note events in
pure GMPI; and b) Multiple simple workarounds suggest themselves,
e.g. if there are three GMPI messages with the same note-id and the
same stapled MIDI, then a plug that only cares about the MIDI can
launch the whole note on the first GMPI message and ignore the other
ones (so it doesn't matter whether the others have SM or not); if the
host knows that a plug wants SM, there may be no need to even
generate the additional GMPI messages; etc.
-- Chris G.
----------------------------------------------------------------------
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: