Audio (mpd) direto para ALSA sem pulseaudio (Debian 8 no antigo laptop Mac)

0

Instalei o Debian 8.6 em um antigo laptop Mac (PowerBook G4) como um player de música da sala de estar. Esta máquina fica em uma prateleira e faz exatamente uma coisa: tocar música usando o mpd. Então eu quero que faça uma coisa bem . ; -)

(Este portátil é de 2005: tem um processador G4 de 1,5 GHz e 768 MB de RAM. Muita potência para reproduzir música, mas não muito mais!)

E isso funciona principalmente ... exceto algumas vezes por hora, a música gagueja por talvez meio segundo. Eu suspeito strongmente que o processo que fornece dados de áudio (mpd) é incapaz de manter seu buffer de saída cheio, então algo (ALSA? O hardware?) Toca aquele pequeno trecho de áudio em um loop apertado até que o mpd retorne a alimentação de áudio. p>

Eu ainda suspeito que o problema é a falta de CPU: algo está impedindo que o mpd seja executado por uma grande fração de segundo. Minha evidência para isso vem de executar "no topo" durante a reprodução de áudio para capturar um instantâneo do estado do sistema a cada segundo. Quando reviso esses instantâneos, não vejo qualquer aumento no uso da memória ou da E / S, mas vejo um aumento no uso da CPU: o pulseaudio dispara até 40 a 60% do uso da CPU. Isso se encaixa bem com a minha observação "grande fração de segundo": se pulseaudio está consumindo todo o CPU por 400 ms, isso provavelmente mostraria 40% de uso durante um intervalo de 1 s, e se ele privar o CPU de 400 ms, que poderia explicar a gagueira.

Então, isso me faz pensar: por que eu preciso pulseaudio para tocar música sobre essa coisa? Eu quero que esse laptop faça uma coisa, toque música e não quero nenhum outro processo além do mpd para usar o hardware de áudio. Então eu gostaria que o mpd simplesmente usasse o ALSA diretamente, sem passar pelo pulseaudio. E não consigo descobrir como.

Ainda mais irritante, eu não posso nem obter utilitários ALSA (aplay) para reproduzir áudio sem passar por pulseaudio! Parece que qualquer processo que reproduz áudio acaba causando pulseaudio para executar. Além disso, parece que o systemd está envolvido nessa conspiração, já que nunca há mais de um pulseaudio por usuário, e seu PID pai é sempre 1 (/ sbin / init, que é systemd).

Neste momento, não tenho certeza se essa é uma pergunta da ALSA, uma questão do pulseaudio, uma pergunta do Debian ou uma pergunta do systemd. Tenho quase certeza que não é uma questão do mpd, já que eu não posso nem tocar a reprodução sem passar por pulseaudio.

Então: como eu desabilito o pulseaudio no Debian 8.6, se essa é realmente a fonte do meu problema de gagueira de áudio?

    
por Greg Ward 04.11.2016 / 02:31

1 resposta

1

Ah-ha! Eu acho que descobri. Não é suficiente usar explicitamente o nome do dispositivo ALSA correto, e não é suficiente desinstalar o pulseaudio. Eu tive que fazer ambos dessas coisas. Especificamente:

  1. sudo apt remove pulseaudio
  2. reinicialize para garantir que nenhum processo pulseaudio seja executado
  3. execute aplay -L e tente aleatoriamente nomes de dispositivos promissores até que algo funcione: o padrão "CARD = Audio" é o nome de dispositivo correto a ser usado. Isso funciona tanto com aplay quanto com mpd.

O trecho relevante do /etc/mpd.conf:

audio_output {
  type      "alsa"
  name      "ALSA default"
  device    "default:CARD=Audio"
}
    
por 04.11.2016 / 02:44