ALSA não funciona quando vários aplicativos são abertos

2

Eu estou escrevendo algum programa python que está relacionado a sons, então eu usei o módulo python SoundDevice que usava a biblioteca PortAudio. Estou no arch linux com deepin desktop.

Se eu apenas abri o computador e imprimi os dispositivos disponíveis, recebo:

   0 HDA Intel PCH: ALC887-VD Analog (hw:0,0), ALSA (2 in, 2 out)
   1 HDA Intel PCH: ALC887-VD Digital (hw:0,1), ALSA (0 in, 2 out)
   2 HDA Intel PCH: ALC887-VD Alt Analog (hw:0,2), ALSA (2 in, 0 out)
   3 HDA ATI HDMI: 0 (hw:1,3), ALSA (0 in, 8 out)
   4 sysdefault, ALSA (128 in, 128 out)
   5 front, ALSA (0 in, 2 out)
   6 surround40, ALSA (0 in, 2 out)
   7 surround51, ALSA (0 in, 2 out)
   8 surround71, ALSA (0 in, 2 out)
   9 iec958, ALSA (0 in, 2 out)
  10 spdif, ALSA (0 in, 2 out)
  11 pulse, ALSA (32 in, 32 out)
  12 dmixed, ALSA (0 in, 2 out)
  13 dsnooped, ALSA (2 in, 0 out)
  14 duplex, ALSA (2 in, 2 out)
  15 dmix, ALSA (0 in, 2 out)
* 16 default, ALSA (128 in, 128 out)

Ele diz que estou usando o ALSA (128 in, 128 out). Agora vou abrir um app - digamos, Chromium - e tocar algumas músicas e depois navegar pela internet. Se eu imprimir agora os dispositivos disponíveis, recebo:

   0 HDA Intel PCH: ALC887-VD Analog (hw:0,0), ALSA (2 in, 0 out)
<  1 HDA Intel PCH: ALC887-VD Digital (hw:0,1), ALSA (0 in, 2 out)
   2 HDA Intel PCH: ALC887-VD Alt Analog (hw:0,2), ALSA (2 in, 0 out)
   3 HDA ATI HDMI: 0 (hw:1,3), ALSA (0 in, 8 out)
   4 sysdefault, ALSA (128 in, 0 out)
   5 iec958, ALSA (0 in, 2 out)
   6 spdif, ALSA (0 in, 2 out)
   7 pulse, ALSA (32 in, 32 out)
   8 dsnooped, ALSA (2 in, 0 out)
   9 duplex, ALSA (2 in, 0 out)
> 10 default, ALSA (128 in, 0 out)

Diz-me que estou usando a Intel como minha saída e ALSA (128 in, 0) como minha entrada. Por que não há entrada e saída ALSA como antes?

Isso acontece em todos os aplicativos que usam som, incluindo o Audacity.

Atualmente, estou usando o pluse como alternativa, mas diz-se que o ALSA é melhor, por isso quero usá-lo mesmo que vários aplicativos sejam abertos ao mesmo tempo.

Editar

Aqui está a lista depois de editar a configuração:

>  0 HDA Intel PCH: ALC887-VD Analog (hw:0,0), ALSA (2 in, 2 out)
   1 HDA Intel PCH: ALC887-VD Digital (hw:0,1), ALSA (0 in, 2 out)
   2 HDA Intel PCH: ALC887-VD Alt Analog (hw:0,2), ALSA (2 in, 0 out)
   3 HDA ATI HDMI: 0 (hw:1,3), ALSA (0 in, 8 out)
   4 sysdefault, ALSA (128 in, 128 out)
   5 front, ALSA (0 in, 2 out)
   6 surround40, ALSA (0 in, 2 out)
   7 surround51, ALSA (0 in, 2 out)
   8 surround71, ALSA (0 in, 2 out)
   9 iec958, ALSA (0 in, 2 out)
  10 spdif, ALSA (0 in, 2 out)
  11 pulse, ALSA (32 in, 32 out)
  12 dmix, ALSA (0 in, 2 out)
< 13 default, ALSA (0 in, 128 out)
    
por Omar Ahmad 03.04.2017 / 20:11

1 resposta

3

Você precisa enviar para o dispositivo dmix ALSA em vez do dispositivo padrão; que permite que vários fluxos sejam misturados e saiam para a placa de som. Ele é configurado automaticamente em dispositivos de som que não suportam mixagem de hardware; como você pode ver, está configurado no seu sistema.

Você encontrará mais informações no wiki da ALSA .

Você pode configurar o dmix para ser o padrão com uma configuração como

pcm.!default {
    type plug
    slave.pcm "dmix"
}

Ainda será necessário configurar todos os seus aplicativos para usar o ALSA. Note também que dmix é apenas um dispositivo de saída; Se você quiser gerenciar várias entradas, precisará usar dsnoop . O wiki da ALSA detalhou exemplos de configuração para ambos que você pode adaptar às suas configurações específicas (em particular , o dispositivo de hardware subjacente padrão).

    
por 03.04.2017 / 20:15