[alsa-devel] Individual PCM stream control
Hello,
I am new to ALSA, so some help from experienced folks would help..
We are trying to develop ALSA support for our DSP based mixer. In our architecture DSP performs the mixing, sample rate conversion etc. My question is how, can does the user space applications exercise controlling individual PCM stream to the mixer? Ex: individual stream gain control, individual stream mute, etc.. Any user space example code would be useful too..
Thanks
Hari
At Thu, 29 Mar 2007 05:56:50 -0500, Nagalla, Hari wrote:
Hello,
I am new to ALSA, so some help from experienced folks would help..
We are trying to develop ALSA support for our DSP based mixer. In our architecture DSP performs the mixing, sample rate conversion etc. My question is how, can does the user space applications exercise controlling individual PCM stream to the mixer? Ex: individual stream gain control, individual stream mute, etc.. Any user space example code would be useful too..
Most drivers create PCM volume controls with IFACE_PCM tag, and set up the volume appropriately at each PCM open, or let alsa-lib configs to set up the initial volumes. Usually, the control element index corresponds to the PCM substream number.
The controls with IFACE_PCM are not visible from normal mixer apps. (The mixer sees only IFACE_MIXER elements.) So, if you need a dynamic control of such elements, you'll likely need a special program to access the corresponding elements.
Takashi
Thanks for the advice.. Couple of inline questions below..
-----Original Message-----
I am new to ALSA, so some help from experienced folks would help..
We are trying to develop ALSA support for our DSP based mixer. In
our
architecture DSP performs the mixing, sample rate conversion etc. My question is how, can does the user space applications exercise controlling individual PCM stream to the mixer? Ex: individual
stream
gain control, individual stream mute, etc.. Any user space example
code
would be useful too..
Most drivers create PCM volume controls with IFACE_PCM tag, and set up the volume appropriately at each PCM open, or let alsa-lib configs to set up the initial volumes. Usually, the control element index corresponds to the PCM substream number.
Which alsa library API lets us to set up the PCM stream volume? And can it be used dynamically when the stream is active? I could n't figure out 'index' of the control element. Can you please explain which parameter of the 'struct snd_ctl_elem_value' you are referring to..
The controls with IFACE_PCM are not visible from normal mixer apps. (The mixer sees only IFACE_MIXER elements.) So, if you need a dynamic control of such elements, you'll likely need a special program to access the corresponding elements.
Takashi
At Fri, 30 Mar 2007 05:47:11 -0500, Nagalla, Hari wrote:
Thanks for the advice.. Couple of inline questions below..
-----Original Message-----
I am new to ALSA, so some help from experienced folks would help..
We are trying to develop ALSA support for our DSP based mixer. In
our
architecture DSP performs the mixing, sample rate conversion etc. My question is how, can does the user space applications exercise controlling individual PCM stream to the mixer? Ex: individual
stream
gain control, individual stream mute, etc.. Any user space example
code
would be useful too..
Most drivers create PCM volume controls with IFACE_PCM tag, and set up the volume appropriately at each PCM open, or let alsa-lib configs to set up the initial volumes. Usually, the control element index corresponds to the PCM substream number.
Which alsa library API lets us to set up the PCM stream volume? And can it be used dynamically when the stream is active?
It is controlled via the normal control API. Open the snd_ctl_t handle for the same card (e.g. "hw:0" or "default"), and change the value of the element. However, there is no standard name for the individual PCM volume controls, and currrently depending on the driver implementation...
I could n't figure out 'index' of the control element.
It's the index in snd_ctl_elem_id. You can access via snd_ctl_elem_id_{get|set}_index() in alsa-lib.
Takashi
participants (2)
-
Nagalla, Hari
-
Takashi Iwai