[gmpi] Re: MIDI: Common event coding
- From: Chris Grigg <gmpi-public@xxxxxxxxxxxxxx>
- To: gmpi@xxxxxxxxxxxxx
- Date: Wed, 23 Jun 2004 22:23:43 -0700
Conversions as you describe would certainly be available, but I don't
think it .is. better to re-create the MIDI bytes every time you need
it, when you could just include it. You're talking about taking a
source, converting it, throwing away the original, and then getting
it back again at every plug, for no actual purpose. For some classes
of plug, that some of us here of think will be very common for the
forseeable future, and for MIDI routing purposes, performing
MIDI->GMPI->MIDI conversions at every plug is only inefficiency, pure
cruft. Stapling the source message is free to those who don't want
to use it, so why disallow it?
We don't powerful for this, we just need lack of interference.
-- Chris G.
Jack wrote:
Chris Grigg <gmpi-public@xxxxxxxxxxxxxx> writes:
See, for Mike the important thing is that the expanded message and
the stapled MIDI are in sync, have the same info, which I .think. is
what I showed, I hope, whereas it could be hard to make that promise
with a free-form message code set -- not just OSC, but any protocol
with that characteristic.
AFAICT, you have demonstrated that MIDI can exactly encode a proper
subset of GMPI messages. Given that, it seems cleaner, better and
more powerful *not* to include the equivalent MIDI with every message,
but instead to provide explicit encoding routines in the plugin's
runtime environment...
int gmpi_encode_midi_exact(gmpi_message_t *msg, char *midi_buf, int buf_len);
int gmpi_encode_midi_approx(gmpi_message_t *msg, char *midi_buf,
int buf_len);
The first would return the equivalent midi byte string only if the
`msg' has an exact MIDI representation. The second would round
appropriate values to the nearest MIDI equivalent. We might need to
include several variants or options, depending on the types of
rounding desired. In either case, a return code would report whether
or not the conversion was successful.
This is more powerful, because it gives the plugin control over what
approximations are desired, and is not limited by the host's view of
which (if any) are appropriate.
It is cleaner, because there is no need to generate MIDI equivalents
for plugins that don't need them.
And it is better (IMHO), because it gently encourages plugin
developers to focus on the native GMPI representation.
--
joq
----------------------------------------------------------------------
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
- Follow-Ups:
- [gmpi] Re: MIDI: Common event coding
- From: Tim Hockin
- [gmpi] Re: MIDI: Common event coding
- From: Jack O'Quin
- [gmpi] Re: MIDI: Common event coding
- From: Steve Harris
- References:
- [gmpi] Re: MIDI: Common event coding
- From: jeffmcc
- [gmpi] Re: MIDI: Common event coding
- From: Chris Grigg
- [gmpi] Re: MIDI: Common event coding
- From: Steve Harris
- [gmpi] Re: MIDI: Common event coding
- From: Chris Grigg
- [gmpi] Re: MIDI: Common event coding
- From: Jack O'Quin
Other related posts:
- » [gmpi] MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
- » [gmpi] Re: MIDI: Common event coding
See, for Mike the important thing is that the expanded message and the stapled MIDI are in sync, have the same info, which I .think. is what I showed, I hope, whereas it could be hard to make that promise with a free-form message code set -- not just OSC, but any protocol with that characteristic.
AFAICT, you have demonstrated that MIDI can exactly encode a proper subset of GMPI messages. Given that, it seems cleaner, better and more powerful *not* to include the equivalent MIDI with every message, but instead to provide explicit encoding routines in the plugin's runtime environment...
int gmpi_encode_midi_exact(gmpi_message_t *msg, char *midi_buf, int buf_len);
int gmpi_encode_midi_approx(gmpi_message_t *msg, char *midi_buf, int buf_len);
The first would return the equivalent midi byte string only if the `msg' has an exact MIDI representation. The second would round appropriate values to the nearest MIDI equivalent. We might need to include several variants or options, depending on the types of rounding desired. In either case, a return code would report whether or not the conversion was successful.
This is more powerful, because it gives the plugin control over what approximations are desired, and is not limited by the host's view of which (if any) are appropriate.
It is cleaner, because there is no need to generate MIDI equivalents
for plugins that don't need them.
And it is better (IMHO), because it gently encourages plugin developers to focus on the native GMPI representation. -- joq
---------------------------------------------------------------------- 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.
- [gmpi] Re: MIDI: Common event coding
- From: Tim Hockin
- [gmpi] Re: MIDI: Common event coding
- From: Jack O'Quin
- [gmpi] Re: MIDI: Common event coding
- From: Steve Harris
- [gmpi] Re: MIDI: Common event coding
- From: jeffmcc
- [gmpi] Re: MIDI: Common event coding
- From: Chris Grigg
- [gmpi] Re: MIDI: Common event coding
- From: Steve Harris
- [gmpi] Re: MIDI: Common event coding
- From: Chris Grigg
- [gmpi] Re: MIDI: Common event coding
- From: Jack O'Quin