[linux-audio-dev] Project: modular synth editor

Dave Robillard drobilla at connect.carleton.ca
Mon Jan 19 02:03:45 UTC 2004


On Sun, 2004-01-18 at 20:40, Fons Adriaensen wrote:
> On Sun, Jan 18, 2004 at 06:50:19PM -0500, Dave Robillard wrote:
> 
> > Well, regardless of what the voice does after note release, the voice
> > you want to 'take over' is /probably/ the one with the oldest note-off.
> > I actually implemented an (un-released) quasi-polyphonic MIDI plugin for
> > SSM that worked like this, and it was fine (and I played alot of keys on
> > it).  I can't really think of a case where this isn't sufficient.
> 
> For most (99%) types of music/instrument, that will work perfectly. But I
> can easily imagine situations were this will break down.

You can probably imagine situations where trying to determine is a voice
is "done" (AMS-style) with metadata streams will break down too. ;)

> > I'm saying all sound generating/modifying modules could be.
> 
> Yes and no. The sound processing part can be, but a module needs some
> other components. There's also the data required to manage connections,
> polyphony, and maybe other things. The object-oriented, C++ way to write
> such a system is to create a base class that takes care of all this, and
> define a module as anything you like as long as it derives from that
> base class. That means that everything a module cq. plugin needs is
> *inside* the module cq. plugin, [snip]

Well, from the code perspective, the modules themselves will have to be
wrapped with something, yes.  I was talking about from the user
perspective.  Basically, you "load a LADSPA module" and not some other
crazy format.

So all the audio stuff would be just a plain old LADSPA plugin (which is
a good thing - we've certainly shown LADSPA is capable of this) and
anything else is just a part of your wrapper code (which should be the
same for every plugin thus doesn't need to be stored on disk) 

> 
> Now if you say module == LADSPA plugin, that would mean that
> - either you abandon that architecture, put the sound processing part
> into the LADSPA part and let the host add the base_class functionality
> for each module that is loaded

Doesn't sound like a bad idea to me, unless I misunderstand you. 
Essentially you have a "module" class that contains a LADSPA plugin. 
The host itself will indeed take care of connections and whatnot.

I say putting "who I'm connected to" and information like that in the
plugin is a bad design decision, LADSPA or not.  Store that in the
patch.

-Dave




More information about the Linux-audio-dev mailing list