[linux-audio-dev] An attempt to a simpler, more powerful LADSPA

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

Subject: [linux-audio-dev] An attempt to a simpler, more powerful LADSPA
From: Abramo Bagnara (abramo_AT_alsa-project.org)
Date: Thu May 17 2001 - 09:21:19 EEST


Paul Davis wrote:
>
> >About approaches: I think that the API need to be designed having in
> >mind both approaches. It have to be designed leaving the approach as an
> >implementation detail, I know that this may be more difficult but to
> >fail here means to prejudice near future possibilities.
>
> Abramo, I'd like to ask that you look carefully at the LADSPA
> API. Karl has made the observation that we could almost support
> everything that has been spoken about here with LADSPA. Jim and myself
> have noted that there are two problems with LADSPA 1.0 for this:
>
> * no dynamic changes in the number of inputs and outputs
> that a plugin is, which is no good for complex plugins
> * all ports are float data; some plugins need other types
> (strings being the most obvious example)
>
> When I look at LADSPA, I don't see any parts of it that I can map onto
> any part of the ALSA API. You've been a good advocate of using some
> API within ALSA, and I'd like you comment on:
>
> 1) if you don't think that a LADSPA-like API is usable, why not?
> 2) if you think it is, which part of ALSA, if any, corresponds to LADSPA?

Ok, as these last few nights I was unable to sleep because this stuff
that's moving in my mind from some days, I've decided at 4 am to write
what I think to be an improvement of LADSPA.

Note however that this is different from ladspa.h: where in ladspa.h all
is seen from the point of view of plugin implementation, I've started
from the opposite side, the host's and the GUI's point of view.

You're one of the culprit of my insomnia and this is the sanction:

int snd_plugin_open(snd_plugin_t **handle, snd_plugin_id_t id);
int snd_plugin_close(snd_plugin_t *plugin);
int snd_plugin_prepare(snd_plugin_t *plugin);
int snd_plugin_relax(snd_plugin_t *plugin);
int snd_plugin_set_property(snd_plugin_t *plugin,
                            snd_plugin_property_id_t property,
                            const snd_plugin_property_value_t *value);
int snd_plugin_get_property(snd_plugin_t *plugin,
                            snd_plugin_property_id_t property,
                            snd_plugin_property_value_t *value);
int snd_plugin_query_property(snd_plugin_t *plugin,
                              snd_plugin_property_id_t property,
                              snd_plugin_property_info_t *info);
int snd_plugin_set_parameter(snd_plugin_t *plugin,
                             snd_plugin_parameter_id_t parameter,
                             const snd_plugin_parameter_value_t *value);
int snd_plugin_get_parameter(snd_plugin_t *plugin,
                             snd_plugin_parameter_id_t parameter,
                             snd_plugin_parameter_value_t *value);
int snd_plugin_query_parameter(snd_plugin_t *plugin,
                               snd_plugin_parameter_id_t parameter,
                               snd_plugin_parameter_info_t *info);
int snd_plugin_parameters_write_begin(snd_plugin_t *plugin);
int snd_plugin_parameters_write_commit(snd_plugin_t *plugin);
int snd_plugin_parameters_read_begin(snd_plugin_t *plugin);
int snd_plugin_parameters_read_commit(snd_plugin_t *plugin);
int snd_plugin_start(snd_plugin_t *plugin, int worker
                     snd_uframes_t offset, snd_uframes_t frames);
snd_sframes_t snd_plugin_wait(snd_plugin_t *plugin, int worker);

/* Not complete list of properties */

SND_PLUGIN_PROPERTY_NAME
SND_PLUGIN_PROPERTY_COPYRIGHT
SND_PLUGIN_PROPERTY_AUTHOR
SND_PLUGIN_PROPERTY_CHANNELS
SND_PLUGIN_PROPERTY_FORMAT
SND_PLUGIN_PROPERTY_XFER_MODE /* set, add, in_place */
SND_PLUGIN_PROPERTY_WORKERS_MODE /* channel, frame */
SND_PLUGIN_PROPERTY_WORKERS
SND_PLUGIN_PROPERTY_SOURCE(worker)
SND_PLUGIN_PROPERTY_DESTINATION(worker)
SND_PLUGIN_PROPERTY_SHM
SND_PLUGIN_PROPERTY_SHM_ID

I know there is a bit less documentation than ladspa.h, but I hope that
this will improve.

However *before* to flame (and I know I'll make you piss off ;-), please
give me a chance to answer your questions, doubt, etc.

I need to credit LADSPA authors in first place, recent discussions on
lad list and ALSA of course.

Perhaps now I'll be able to sleep again...

-- 
Abramo Bagnara                       mailto:abramo_AT_alsa-project.org

Opera Unica Phone: +39.546.656023 Via Emilia Interna, 140 48014 Castel Bolognese (RA) - Italy

ALSA project http://www.alsa-project.org It sounds good!


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

This archive was generated by hypermail 2b28 : Thu May 17 2001 - 09:51:35 EEST