[gmpi] Re: Reqs 3.8 Events - ramped events

  • From: Steve Harris <S.W.Harris@xxxxxxxxxxxxxxx>
  • To: gmpi@xxxxxxxxxxxxx
  • Date: Sun, 25 Jan 2004 10:52:07 +0000

On Sat, Jan 24, 2004 at 02:23:17 -0800, Chris Grigg wrote:
> >Many CC numbers are well known.  That is, they have a meaning that can be
> >assumed about them.  If your plugin has a 'volume' knob, and the host
> >receives a CC#7 it makes sense to make that 'just work' doesn't it?  It
> >might, depending on your host.
> 
> This is good, but if and only if the GMPI architecture does not 
> preclude the user from deciding to remap a controller's ordinary 
> destination manually, and does not preclude an idiosyncratic plug-in 
> from handling incoming MIDI-originated events in non-standard ways. 
> We need to be careful about that.  For one example, my Soundcraft 
> Ghost console does a goofy thing that I love: it responds to MIDI 
> notes by unmuting (note on) and muting (note off) its channels (notes 
> 0-31 are channels 1-32 main mutes, 32-63 are channels 1-32 'Mix B' 
> mutes) and this allows convenient creation of all kinds of 
> MIDI-driven audio collage compositions that wouldn't be as possible 
> otherwise.  If GMPI always converted MIDI note indexes to pitch, or 
> always forced certain source/dest connections, this kind of creative 
> controller re-mapping could be prohibitively difficult to do in GMPI.

This is what I mean by lossless, I agree 100% that this sort of trick
should be possbile, and I dont see any problem with it with just the GMPI
events and control sheme we've been discussing so far.

Pitch is represented in some known scale whihch has a defined mapping to
MIDI note numbers (maybe just nn = (int)pitch) and all midi values are
mapped to GMPI controls.

I see your concern about arbitaty midi packets (outside the semantics of
MIDI) but those just sound like typed ("MIDI") blobs to me. In that case
you have to do the MIDI parsing and unparsing yourself (the blobs are
opaque to GMPI itsself), but I think thats ineviatable.

> >We can make it Just Work in two ways.  If the plugin uses well-known CCs,
> >you can use a hinted name.  For example a control named 'VOLUME' might be
> >assumed to be the MIDI CC#7.
> 
> Assumptions can be the root of a significant amount of 
> non-functionality... so I would be a lot more comfortable with this 
> if there were a mechanism for the plug author to optionally supply a 
> specific MIDI CC number hint, as you expand on a bit below, to enable 
> nonstandard stuff.  I agree that if the plug author doesn't supply a 
> hint for Volume, CC7 -> Volume is a reasonable default connection.

Agreed.
 
> >We can go further by standardizing these sorts
> >of controls.  If the host knows that a control named 'VOLUME' is always a
> >float in the range [0.0, 1.0], it can transparently map incoming MIDI CC#7
> >to this control, while allowing GMPI native control at the same time.
> >
> >The second way is to provide a CC-compatibility hint on each control.  This
> >is less elegant, since you can't know the range and type a priori, but the
> >host can still do the magic to make it work.
> 
> Sure you could do it.  This is related to what I was suggesting 
> earlier with optionally stapling an aux 'MIDI In' pin to the side of 
> each real-value pin, with a built-in conversion function supplied by 
> the plug.  You could have both a 7-bit aux pin and a 14-bit aux pin 
> where useful.  And input range (MIDI CC) & destination range (plug's 
> real value) are both known to the plug at authoring time, so what's 
> unknown?  Maybe I still like that better, leaving control of the 
> conversions in the plug author's hands -- say a mixer plug author 
> likes his 0 dB at CC value 100, and a mute plug author likes his 0 dB 
> at CC value 127.  Or at least allowing the plug author to override 
> the host's default MIDI->real conversion where necessary/desired.

But this is just more complex that just hinting the control input.
 
> It's a little messy, but if you're not doing MIDI you don't need to 
> do it in your plug.  You could do something similar for OSC 
> transcoding, maybe.

I think that all plugins should be capable of handling at least MIDI cc's,
pitchbend, aftertouch, NRPNs etc. wether they know about them or not.

- Steve 

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