Hello Clemens.
I tested the patch you sent me and it works perfectly.
I am now able to change the volume of capture!
I add a little more information:
Alsamixer in the playback section shows three volume controls:
- Master: Controls the playback volume of the 4 outputs at the same time.
- Line0: I thought this controlled the volume of the first pair of stereo
playback, but does not. It seems that controls the playback level of the
capture, the playback volume of what is being recorded. For me it is
useless, but it exists. When recording with these controls at high volume,
I listen a little feedback noise.
- Line1: same as line 0 but for the second stereo pair.

Alsamixer, in the capture section, only shows a control LINE. This controls
the volume of the capture for all capture channels, which is what I needed.
It controls the 4 channels at same time, you cannot adjust the capture
volume individually for each channel.

I add amixer output:

mint mint # amixer -c 2
Simple mixer control 'Master',0
  Capabilities: pvolume pswitch pswitch-joined
  Playback channels: Front Left - Front Right
  Limits: Playback 0 - 255
  Mono:
  Front Left: Playback 255 [100%] [0.99dB] [on]
  Front Right: Playback 255 [100%] [0.99dB] [on]
Simple mixer control 'Line',0
  Capabilities: pvolume cvolume pswitch pswitch-joined cswitch
cswitch-joined
  Playback channels: Front Left - Front Right
  Capture channels: Front Left - Front Right
  Limits: Playback 0 - 255 Capture 0 - 255
  Front Left: Playback 255 [100%] [0.99dB] [off] Capture 221 [87%] [0.85dB]
[on]
  Front Right: Playback 255 [100%] [0.99dB] [off] Capture 221 [87%]
[0.85dB] [on]
Simple mixer control 'Line',1
  Capabilities: pvolume pswitch pswitch-joined
  Playback channels: Front Left - Front Right
  Limits: Playback 0 - 255
  Mono:
  Front Left: Playback 255 [100%] [0.99dB] [off]
  Front Right: Playback 255 [100%] [0.99dB] [off]

mint mint # amixer -c 2 controls
numid=7,iface=MIXER,name='Master Playback Switch'
numid=8,iface=MIXER,name='Master Playback Volume'
numid=3,iface=MIXER,name='Line Playback Switch'
numid=5,iface=MIXER,name='Line Playback Switch',index=1
numid=4,iface=MIXER,name='Line Playback Volume'
numid=6,iface=MIXER,name='Line Playback Volume',index=1
numid=9,iface=MIXER,name='Line Capture Switch'
numid=10,iface=MIXER,name='Line Capture Volume'
numid=2,iface=PCM,name='Capture Channel Map'
numid=1,iface=PCM,name='Playback Channel Map'


You can include this patch in the Linux kernel, and thus no need to patch
each kernel individually?


Finally, Clemens thanks for your help and your time, I really appreciate it.
I'm happy with my "new" sound card!

Greetings.





2015-05-22 4:37 GMT-03:00 Clemens Ladisch <cladi...@googlemail.com>:

> nightmixes wrote:
> > kernel: usb 3-2: [4] FU [Line Playback Switch] ch = 1, val = 0/1/1
> > kernel: usb 3-2: [4] FU [Line Playback Volume] ch = 2, val = 0/255/1
> > kernel: usb 3-2: [2] FU [Line Playback Switch] ch = 1, val = 0/1/1
> > kernel: usb 3-2: [2] FU [Line Playback Volume] ch = 2, val = 0/255/1
> > kernel: usb 3-2: [7] FU [Master Playback Switch] ch = 1, val = 0/1/1
> > kernel: usb 3-2: [7] FU [Master Playback Volume] ch = 2, val = 0/255/1
> > kernel: usb 3-2: MU 11 has no bmControls field
>
> There's the culprit.  Ignoring mixer unit 11 also ignores all other
> units connected as sources.
>
> Try moving the bmControls check until after the source units have
> been parsed, as in the patch below.
>
>
> Regards,
> Clemens
>
>
> --- a/sound/usb/mixer.c
> +++ b/sound/usb/mixer.c
> @@ -1582,18 +1582,15 @@ static int parse_audio_mixer_unit(struct
>                               unitid);
>                 return -EINVAL;
>         }
> -       /* no bmControls field (e.g. Maya44) -> ignore */
> -       if (desc->bLength <= 10 + input_pins) {
> -               usb_audio_dbg(state->chip, "MU %d has no bmControls
> field\n",
> -                             unitid);
> -               return 0;
> -       }
>
>         num_ins = 0;
>         ich = 0;
>         for (pin = 0; pin < input_pins; pin++) {
>                 err = parse_audio_unit(state, desc->baSourceID[pin]);
>                 if (err < 0)
>                         continue;
> +               /* no bmControls field (e.g. Maya44) -> ignore */
> +               if (desc->bLength <= 10 + input_pins)
> +                       continue;
>                 err = check_input_term(state, desc->baSourceID[pin],
> &iterm);
>                 if (err < 0)
>
------------------------------------------------------------------------------
_______________________________________________
Alsa-user mailing list
Alsa-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/alsa-user

Reply via email to