[gmpi] Re: 3.11 topic: Dynamic plugin structure

On Wed, Apr 28, 2004 at 11:03:13PM +0200, David Olofson wrote:
> Yes, that's a good point. I'm beginning to really rather like the 
> "hardwired" 1D indexing variant, assuming it really does meet the 
> requirements.

Ehh, which variant is that?  :)

> > I would suggest it's a mistake to see channel-based internal
> > organization primarily as a MIDI thing.  Yes, MIDI has a
> > channel-oriented message structure, but mixers have the same
> > structure.
> 
> I was rather thinking the other way around; *more* dimensions, not 
> fewer. How about module/group/subgroup/channel/unit? ;-)

nonono. You want groups?  Arbitrary grouping.  We provide channels for
plugins that find that to make sense for them.  GM synths will use them.
Maybe big-boys will use them.  Some other plugs, like a mixer, might use
them.  Most plugs won't.  Groups, however, are nice for all sorts of
plugins. 

> > All that /-fu for channel indexing and slot type specification is
> > unnecessary and just needs to get unpacked later.
> 
> Yeah, it's quite pointless as long as only one level of 1D indexing is 
> needed anyway...

Just because we export a 1-dimensional array of strings, doesn't mean
there is not deep structure.

> > Minor point: There's more room for transcription errors in the one
> > big literal string table you suggest, whereas this approach
> > actually enforces the plug structure in the param names table.
> 
> Yeah, another good point.

red herring.  You store internally an array of params for each 'module'.
When you want to load a new module you insert copies of those strings.  I
think the right answer may be a hybrid of the two.

/* internal */
static char *master_params[] = {
        "gain", "pan", NULL
};
static char *channel_params[] = {
        "osc/shape", "osc/octave", "filter/cutoff", "filter/resonance",
        NULL
};

/* exposed somehow */
char **all_params[] {
        master_params,
        channel_params,
        channel_params,
        channel_params,
};

This results in a synth with 4 channels (well, master + 3 channels,
assuming master is always 0).  It doesn't need to have 3 or 4 paralell
interlinked arrays.

Really though, a channel might have more info than just parameters.  How
about IOs?  Any meta data?  Better perhaps to just call it an array of
channels?  We can then define a channel as some structure encapsulating it
all.

Tim

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

Other related posts: