On Wed, Jan 14, 2004 at 10:16:39PM +0000, Steve Harris wrote: > We did discuss this briefly, personally I'm against plugins implementing > polyphony in this way (though I'l admit its more a matter of taste than > anything else), but a good UI standard should probably address controlling > mutiple plugins (its quite common eg. for doubling up mono plugins to > effect stereo streams) and its possible to share data between plugins, and > even across hosts (eg. my bandlimited osc plugins share the table matrix > where possible).
What I proposed is not a way to 'implement' polyphony -- that is done in the obvious way by the host creating multiple instances. It is a way to enable plugins that care about this to discover they are used in a polyphonic way. Coming back to my original example, if you want a plugin to create its own GUI without any assistance from the host (and that is ATM the only option with LADSPA) it *has* to know this, unless you want e.g. 16 or 32 identical windows, one for each voice. > Agreed, but to be acceptable it probably needs to be transparent to the > plugin if it doesnt want to know - obvious solutions such as setting > buffers to NULL if thier disconnected are a bit awkward to use. And that's a pity. Since all ports in LADSPA are pointers, even if they only carry a single value for each call to the process fuction, setting the pointer to NULL would have been the obvious way to signal an unconnected port. But it's too late now to do adopt this obvious convention. > > Some of the functionality I want for the new AMS also requires 'metadata' along > > with the audio signals, e.g. to indicate which voices in a poly patch are active > > or have terminated. In the current AMS for example, there is a 'hidden' data path > > from the envelope generators back to the voice controller, to signal that a > > voice has terminated and can be reallocated. This is why you can't have an > > envelope generator in a plugin, as this data path is hard-wired into the engine. > > This comes back to wether you believe that the plugins should be handling > polyphony or the engine. Again, probably a matter of taste. > > FWIW I'l note that hardware modular systems dont have metadata streams :) Indeed. Emumlating analog modular synths has beem a principal aim for Matthias Nagorni, the original creator of AMS, and this will remain an essential feature in all future versions. But it's not the only goal, and I see no reasons why AMS should be limited to what is possible with analog hardware. Anyway, the metadata I plan to use is there strictly for implementation reasons only, and will functionally invisible to the user. My conclusion at this point is that ATM the scope of LADSPA is too limited to be able to say 'Module == LADSPA Plugin', even if we ignore the GUI aspect. This is not meant as criticism on LADSPA, it's just a fact, and as the 'S' implies, probably by design. -- Fons
