Estou tendo um problema peculiar com o alsamixer. Eu tenho este arquivo asound.conf que executa um remapeamento de canal para o meu dispositivo "USBStreamer":
pcm.usbSTR {
type hw
card USBStreamer
device 0
}
pcm.usbREMAP {
type plug
slave.pcm usbSTR
ttable.0.8 1
ttable.1.9 1
}
pcm.!default {
type plug
slave.pcm usbREMAP
}
ctl.!default {
type plug
slave.pcm usbREMAP
}
Se eu executar o alsamixer sem argumentos de linha de comando e o arquivo asound.conf acima, o alsamixer travar com a mensagem de erro não tão útil:
ALSA lib dlmisc.c:254:(snd1_dlobj_cache_get) Cannot open shared library /usr/lib/i386-linux-gnu/alsa-lib/libasound_module_ctl_plug.so
cannot open mixer: No such device or address
Se eu apagar o arquivo asound.conf, o alsamixer funciona perfeitamente.
Infelizmente, eu preciso do remapeamento do canal para o mpd funcionar.
Existe uma maneira de ter remapeamento de canal e não ter falha de alsamixer?
FYI: se eu especificar o dispositivo USBStreamer, o alsamixer é executado corretamente. Infelizmente parece que o mpd não é tão específico quando chama o alsamixer.
edit: Se eu apagar o bloco ctl.! default do asound.conf, e reiniciar o alsa, o alsamixer é executado sem especificar um dispositivo. . . O mpd pensa que está tocando através do alsa, mas nenhum barulho sai dos meus alto-falantes. Eu acho que o bloco default ctl.! Estava fazendo algo importante.
Além disso, o teste de alto-falante não está mais funcionando. Está reclamando de um recurso ocupado:
speaker-test -c 10 -t sin -D plughw:USBStreamer
speaker-test 1.1.0
Playback device is plughw:USBStreamer
Stream parameters are 48000Hz, S16_LE, 10 channels
Sine wave rate is 440.0000Hz
Playback open error: -16,Device or resource busy
Aqui está minha parte audio_output do /etc/mpd.conf
audio_output {
type "alsa"
name "USB Streamer - LX521.4"
device "hw:USBStreamer,0"
}
Embora isso seja periférico ao meu problema, achei o arquivo asound.conf um pouco feio. Meu entendimento dos arquivos de configuração do ALSA é rudimentar, mas acredito que isso seja equivalente ao acima (com a parte padrão ctl.! Apagada):
pcm.!default {
type plug
slave.pcm {
type hw
card USBStreamer
device 0
}
ttable {
0.8 1
1.9 1
}
}
Aqui está o amixer "controles simples" para o dispositivo de som:
amixer -D hw:USBStreamer scontrols
Simple mixer control 'Mic',0
Simple mixer control 'Mic',1
Simple mixer control 'USBStreamer Clock Selector',0
Simple mixer control 'USBStreamer Output',0
Simple mixer control 'USBStreamer Output',1
Aha! Parece que talvez o mpd esteja usando o ALSA e é por isso que não posso fazer o teste do alto-falante:
sudo fuser -v /dev/snd/*
[sudo] password for rybu:
USER PID ACCESS COMMAND
/dev/snd/controlC0: mpd 935 F.... mpd
/dev/snd/pcmC1D0p: mpd 935 F...m mpd
Parece que o mpd está congelado. Solicitações para que o mpc demore para sempre e resultem em mensagens de erro como:
mpc
mpd error: Timeout
Então eu preciso matar o mpd um pouco. . . vamos ver se consigo fazer isso. Eu acredito que um "serviço sudo mpd stop" deve fazer o truque. Esse pedido está demorando muito. . . ok, o teste do alto-falante está funcionando novamente!
mas o mplayer não está funcionando:
[AO_ALSA] alsa-lib: pcm.c:2135:(snd_pcm_open_conf) type is not defined
[AO_ALSA] Playback open error: No such file or directory
Failed to initialize audio driver 'alsa'
[AO SDL] Samplerate: 44100Hz Channels: Stereo Format s16le
[AO SDL] using aalib audio driver.
[AO SDL] Unable to open audio:
Failed to initialize audio driver 'sdl:aalib'
Could not open/initialize audio device -> no sound.
Audio: no sound
Ok, eu consertei que com os argumentos do mplayer "ao = alsa: device = default" isto diz para usar o dispositivo padrão remapeado asound.conf.
Em seguida, o mpd. É bom estar progredindo.
Eu configurei o mpd para usar o dispositivo padrão ALSA (não hw: USBStreamer) para que o remapeamento do canal seja feito. Reinicie o mpd e ele funcionará perfeitamente novamente.
Obrigado, problema resolvido.