[gmpi] Re: 3.11 topic: Multi-timbrality and parameters

  • From: David Olofson <david@xxxxxxxxxxx>
  • To: gmpi@xxxxxxxxxxxxx
  • Date: Wed, 28 Apr 2004 14:36:23 +0200

On Wednesday 28 April 2004 10.11, Chris Grigg wrote:
[...]
> E.g. the three
> GMPI parameters LpfFreq[ 2 ], LpfGain[ 2 ], and LpfQ[ 2 ] could
> characterize the bass EQ band for the mixer plug-in's channel 2. 
> (Somebody suggested using ".2" as part of the parameter name, but
> I'm not so sure that's the best, seems you'd have to do unnecessary
> string conversions, memory-burning catenations, etc.)

Though it's probably a bad idea to build anything that's inherently 
very resource intensive into the API, I don't think this is an issue, 
unless we actually use an string as the address field of every single 
event.

If we use these strings only when making connections, we can implement 
grouping, indexing, hints and whatnot on that level. Plugins could 
have an interface looking something like this:

        GMPI_target *connect(GMPI_plugin *p, const char *name);

where 'name' is this OSC style parameter name, and the result is an 
"event target", looking something like this:

        typedef struct
        {
                GMPI_queue      *queue;
                uint32_t        id;
        } GMPI_target;

So, the plugin gets to pick an event queue and an ID for each control. 
The plugin can have separate queues for separate internal loops to 
avoid internal event dispatching, and to reduce the need for 
sort/merge operations when sending events from other plugins. The 
'id' can be a plain index, a few bitfields for multidimensional 
indexing, or whatever fits the internal design best. No need to 
explicitly define a number of indexing dimensions - anything that can 
be described with the OSC style addressing scheme will work just 
fine.


As to specifically dealing with GM, beyond just hinting what 
corresponds to a MIDI channel, and which parameters correspond to 
what MIDI CCs, that seems like a bad idea to me. Such a feature would 
be of use only to host authors who want to send MIDI to synth plugins 
without doing their homework - and it would only work with synths 
that actually care to implement it. Other synths wouldn't work at all 
with such hosts, even if the user is willing to connect CCs to 
parameters manually.

Or maybe I'm just not getting it...?


//David Olofson - Programmer, Composer, Open Source Advocate

.- Audiality -----------------------------------------------.
|  Free/Open Source audio engine for games and multimedia.  |
| MIDI, modular synthesis, real time effects, scripting,... |
`-----------------------------------> http://audiality.org -'
   --- http://olofson.net --- http://www.reologica.se ---


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