Hi,

I am trying to get my own ALSA plug-in to work with some real time controls.  ( Is this the right place to ask?)

I am successful with the PCM part of it.  What I mean is from:

http://www.alsa-project.org/alsa-doc/alsa-lib/pcm_external_plugins.html
External Plugin: Filter-Type Plugin

static snd_pcm_sframes_t
myplg_transfer(snd_pcm_extplug_t *ext,
           const snd_pcm_channel_area_t *dst_areas,
           snd_pcm_uframes_t dst_offset,
           const snd_pcm_channel_area_t *src_areas,
           snd_pcm_uframes_t src_offset,
           snd_pcm_uframes_t size)
{
// my PCM processing works
// I want to add a control parameter that can be set in real time by an app
}

SND_PCM_PLUGIN_DEFINE_FUNC(myplg)
{
// This all works for PCM processing just like the examples
...
err = snd_pcm_extplug_create(&mix->ext, name, root, sconf, stream, mode);
    if (err < 0) {
        free(mix);
        return err;
    }
...
}

SND_PCM_PLUGIN_SYMBOL(myplg);


Now I want to add a simple real time adjustment, an integer value that can be sent by an application to adjust the sound (PCM samples) in real time.  I tried some ways of doing it it but without success, I am not understanding the basics.

I first looked at doing a ctl. I was able  get separately (without PCM processing) get a control to work but that looks like ts only for hardware control?  I can't connect it to my PCM processing.

http://www.alsa-project.org/alsa-doc/alsa-lib/ctl_external_plugins.html

I looked at LADSPA but I'm not sure where that is going to take me.

I am now looking at

http://www.alsa-project.org/alsa-doc/alsa-lib/pcm_external_plugins.html
External Plugin: I/O Plugin

But, I am confused because I also see pcm type callbacks.

So, I do not have a specific coding question (yet) but I just need a general direction. ...
-Should I use ctl_external_plugins and figure out how to use it with my PCM?
-Should  I use a LADSPA example?
-Should I go wth External Plugin: I/O Plugin?
-Something else?

I hope I am clear enough about my question and thanks for any pointers you can provide.

Bob