[LAD] Terminology problem

Jeff McClintock jef at synthedit.com
Thu Nov 15 20:39:40 UTC 2007


>Maybe... I considered Control as well, but to me, both of those sound 
more like single instances of something (just like Ports), rather 
than the Class/Type style (ie "Voice Pitch Controls") term I'm 
looking for.

>*Some* plugin API or something somewhere must have something similar 
to this, I'd think, but I can't remember seeing one...


My plugin API has parameters , pins ( similar to ports ) and 'voices'.

The relationship is that parameters map to pins, and controllers map to
pins.

For example:

pin 0  - "Master Volume" (parameter, monophonic).
Pin 1  - "Note Pitch" (controller, polyphonic, mapped to MIDI
Note-On/Pitch).
Pin 3  - "Tempo" (monophonic, mapped to host tempo).

The host decodes MIDI and maps controllers to pins.  The plugin API need not
support MIDI at all (yay!), you could migrate to using OSC messages just as
easily with no change to your plugin code.

The end result is that the plugin API is *very* minimal, 3 functions support
most of the GMPI requirements...

class IMpPlugin : public IMpUnknown
{
public:
	// Processing about to start.  Allocate resources here.
	virtual int32_t MP_STDCALL open() = 0;

	// Notify plugin of audio buffer address, one pin at a time. Address
may change between process() calls.
	virtual int32_t MP_STDCALL setBuffer( int32_t pinId, float* buffer )
= 0;

	// Process a time slice. No Return code, must always succeed.
	virtual void MP_STDCALL process( int32_t count, MpEvent* events ) =
0;
};


Jeff




More information about the Linux-audio-dev mailing list