Re: [linux-audio-dev] questions to be resolved

New Message Reply About this list Date view Thread view Subject view Author view Other groups

Subject: Re: [linux-audio-dev] questions to be resolved
From: Karl MacMillan (karlmac_AT_peabody.jhu.edu)
Date: Mon May 21 2001 - 02:17:37 EEST


I guess I will throw in my $.02.

On Sun, 20 May 2001, Paul Davis wrote:

> I think that there are a couple of salient questions that need
> answering before we can even talk about an API. They are not unlike
> the questons raised for LADSPA, except that the overall context is
> a little different.
>
> 1) what kind of object allocates and frees buffers used to store data
> for a port? is it something more like an engine object, or
> something more like a plugin? in LADSPA and VST, all buffers are
> owned by the host, and the plugins merely use them via their
> ports.
>

Having the engine/host own the buffers seems more flexible to me and
releives the plugin of some duties (particularly if those buffers are
shared memory, etc).

> 2) are buffers associated with input ports, output ports, both or neither?
>

This could be an implementation detail assuming the plugin is not allowed
to make certain assumptions (like the input and output buffers are
different).

> 3) are multiple connections between ports allowed?
>

Yes - this seems like a _very_ useful feature and one that users will
expect.

> 4) is there a fixed or variable method that a plugin should use
> when storing a value in a buffer?
>

Fixed. I think the easiest model is for the plugin to only provide a run
method. This is
 - easier for the plugin writer (having only one method that is)
 - potentially more efficient (mixing - run_adding - is only done when
   necessary
 - doesn't have to limit the system in any way

> the answers to these questions have profound and deep implications for
> the overall design and operation of a system.
>

I would add one more question.

5) Should LADSPA like plugins be supported? Mainly for operations like
   gain and panning between plugins.

With all of the discussion about where to add gain control, I was thinking
that one thing that people will probably want to do is pan the outputs of
a plugin to different channels of a soundcard. This seems simple, but as
we all know panning is not that simple (if you want equal power panning or
something for big multi-speaker setups). So, if it is not something with
a universally satisfactory answer it should be put into a plugin. I know
this could open a whole can of worms, but I think it would be useful to
throw some gain controls, or a compressor, excitor, etc., etc. between two
apps.

Karl

> --p
>
> ps. my answers:
>
> 1) the engine/host owns (allocates, releases, assigns) all buffers.
> 2) buffers are associated with any port that allows multiple
> connections. most output ports would be multi-out, so
> typically, buffers would be associated with output
> ports. but multi-input ports would have their
> own input buffers too. when connecting up two
> such ports, it doesn't matter which one is chosen,
> as long as its done consistently.
> 3) yes.
> 4) i'm not sure.
>
>

_____________________________________________________
| Karl W. MacMillan |
| Computer Music Department |
| Peabody Institute of the Johns Hopkins University |
| karlmac_AT_peabody.jhu.edu |
| mambo.peabody.jhu.edu/~karlmac |
-----------------------------------------------------


New Message Reply About this list Date view Thread view Subject view Author view Other groups

This archive was generated by hypermail 2b28 : Mon May 21 2001 - 02:40:34 EEST