Re: [linux-audio-dev] LAAGA - how are we doing ?

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

Subject: Re: [linux-audio-dev] LAAGA - how are we doing ?
From: Jim Peters (jim_AT_aguazul.demon.co.uk)
Date: Sun May 06 2001 - 16:37:27 EEST


Kai Vehmanen wrote:
> It doesn't make sense to demand that all LAAGA servers must use
> ardour's/gstreamer's/arts'/ecasond's internal signalflow structure.
> It's true that all servers must provide a solution to this, but
> doesn't affect the LAAGA API.

You say `servers' (plural) as if there might be more than one of them.
However, my impression was that there was going to be just one of
them, and that we (one way or another) were going to write it. I
thought the ambition was a bit bigger than creating another LADSPA.
Since there seems to be some difference of emphasis here, let me
describe the `plan' as I understand it (so far):

  We are aiming to design and build a low-latency audio server using
  everything that Paul has learned from writing AES and `ardour'.
  This is going to be rock-solid through being tested to death and
  will provide a foundation on which all kinds of other interesting
  low-latency apps may be built without concerning themselves about
  all the framework details. (It can also act as a common audio
  communications exchange for other apps even if they do not wish to
  provide plugins.)

  This server will have some kind of port to which external
  applications can connect to request that a plugin of theirs (fitting
  our LAAGA plugin spec) be loaded up into this extreme low-latency
  environment. The plugin will then set up its channels, shared
  memory and other resources, and then be ready to run.

  Connections between plugin ports might be setup either by the
  plugins themselves, or through commands sent to the main server
  port. Maybe we could allow an external patching app to ask to load
  up a plugin which it can use to monitor and update the connections -
  this keeps the patching UI independent from the server, allowing
  anything from a command-line tool up to a fully visual patchbay or
  flow graph to be developed independently.

The way you are talking, it is as if ecasound might host these
plugins, or that ardour might host them, or anything else that fancied
doing it. But this is going to get us in a mess. What if we want to
use two of these hosts together ? What if I want to record my
ecasound output to ardour ? The host itself needs to be independent
of any of the applications that use it in order to be the general
solution that I believe we are aiming at. It needs to be the neutral
centre-ground.

> Now the point is that the above design is very different from for
> instance Ardour's bus-concept. But the LAAGA API should handle both
> cases.

Oh dear. I've been checking back through the discussion, and I think
you have been thinking in terms of a LADSPA-like system with the host
controlling the connections, and Paul has been thinking in terms of
AES busses. For instance, you wrote in your spec:

  int (*request_channel)(int direction);
  void (*release_channel)(int direction, int channel);

and Paul wrote in his revised spec:

  int request_channel (int direction, channel_id_t channel);
  void release_channel (int direction, channel_id_t channel);

My impression is that in Paul's spec, the plugin requests a specific
channel number, and if that channel number is also used by another
plugin, then those two plugins are now connected !

If there really is this difference in approach, we do need to get this
sorted out. As I say, it affects everything all the way up to the
top-level user interface.

Jim

-- 
 Jim Peters         /             __   |  \              Aguazul
                   /   /| /| )| /| / )||   \
 jim_AT_aguazul.      \  (_|(_|(_|(_| )(_|I   /        www.aguazul.
  demon.co.uk       \    ._)     _/       /          demon.co.uk


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

This archive was generated by hypermail 2b28 : Sun May 06 2001 - 17:02:52 EEST