[PATCH] Add support to expose controls of ladspa plugin

Camel Guo camelg at axis.com
Tue Feb 2 09:12:25 CET 2021



On 2/1/21 4:32 PM, Jaroslav Kysela wrote:
> Dne 01. 02. 21 v 16:03 Camel Guo napsal(a):
>> From: Camel Guo <camelg at axis.com>
>> 
>> In order for external software components to adjust ladspa plugin
>> dynamically, this commit adds an option to exposes the control array of
>> input control ports of a ladspa plugin to a file, through which any
>> applications with proper permission can control this plugin.
> 
> It looks like a pure hack (although the implementation is interesting). The
> controls may be exposed via the ctl (control) API like we do in
> src/pcm/pcm_softvol.c for example. The floats can be mapped to integer64 
> or we
> may discuss to add the float type to the control API elements.

If there are not so many input controls of a ladspa plugin, I think it 
is okay to implement it like pcm_softvol.c. But the problem is that some 
plugins might have more than 100 input controls. For every input 
control, there will be a system call ioctl in order to get its value. 
This will make performance really bad. If a ladspa plugin like this 
needs to support per-channel control, that will make it even worst.

But with shared memory like this, it will become a pure memory read, 
this will make performance acceptable.

Another benefit of exposing ladspa control array to shared memory  is 
that it makes it possible for any algorithms to connect with these 
ladspa plugins. The ladspa control array is basically a float-array, 
which is exactly the input, output of lots of machine learning, deep 
learning algorithm. Imagine an algorithm listening to the audio stream 
automatically applies privacy masks on audio stream to mask human voice 
via ladspa plugins.

> 
>                                                  Jaroslav
> 
> -- 
> Jaroslav Kysela <perex at perex.cz>
> Linux Sound Maintainer; ALSA Project; Red Hat, Inc.


More information about the Alsa-devel mailing list