Dependiendo del software de sonido, la versión y distribución de GNU/Linux puede que dos aplicaciones que intenten acceder al mismo dispositivo de sonido de forma simultanea no funcione. La solución que se propone aquí no tiene porque funcionar en todos los casos, ya que depende de muchos otros factores, como por ejemplo tener pulseaudio funcionando o no.
Lo primero que se debe hacer es identificar la tarjeta que queremos utilizar.
aplay -l **** List of PLAYBACK Hardware Devices **** card 0: HDMI [HDA Intel HDMI], device 3: HDMI 0 [HDMI 0] Subdevices: 1/1 Subdevice #0: subdevice #0 card 0: HDMI [HDA Intel HDMI], device 7: HDMI 1 [HDMI 1] Subdevices: 1/1 Subdevice #0: subdevice #0 card 0: HDMI [HDA Intel HDMI], device 8: HDMI 2 [HDMI 2] Subdevices: 1/1 Subdevice #0: subdevice #0 card 1: PCH [HDA Intel PCH], device 0: ALC892 Analog [ALC892 Analog] Subdevices: 1/1 Subdevice #0: subdevice #0
Editar el fichero /etc/asound.conf y agregar una de las siguientes lineas dependiendo lo que se quiera hacer.
Opción 1: Solo una aplicación puede utilizar la tarjeta, el flujo de sonido va directo a la tarjeta de audio.
pcm.default "hw:PCH"
Opción 2: Utiliza todos los plugins predeterminados, entre otros, el que permite mezclar sonidos de diferentes aplicaciones a la vez.
pcm.default "sysdefault:PCH"
La segunda opción sería la que interesa para poner de tarjeta predeterminada card 1: PCH [HDA Intel PCH] y que permita a múltiples aplicaciones sacar sonido al mismo tiempo.
Editamos el fichero alsa.conf y editamos la siguiente linea.
defaults.ctl.card 1
Es posible que tras actualizar el sistema y reiniciarlo, se pierda el sonido. Esto puede deberse a que la tarjeta predeterminada es otra diferente a la configurada (mirar apartado anterior) o que simplemente está el mute activado, para desactivar / activar el silencio se pueden ejecutar estos comandos.
amixer set Master mute amixer set Master unmute # Activa / desactiva amixer set Master toggle
Es el equivalente en Alsamixer a pulsar sobre el volumen “Master” la letra M.
NOTA: Aunque suele denominarse Master, esto no siempre es así y depende del dispositivo en uso, se puede ejecutar sencillamente amixer para conocer el nombre correspondiente, en este caso “Speaker” y “Mic”.
amixer Simple mixer control 'Speaker',0 Capabilities: pvolume pvolume-joined pswitch pswitch-joined Playback channels: Mono Limits: Playback 0 - 48 Mono: Playback 48 [100%] [12.00dB] [on] Simple mixer control 'Mic',0 Capabilities: pvolume pvolume-joined cvolume cvolume-joined pswitch pswitch-joined cswitch cswitch-joined Playback channels: Mono Capture channels: Mono Limits: Playback 0 - 29 Capture 0 - 4 Mono: Playback 1 [3%] [-40.00dB] [off] Capture 2 [50%] [0.00dB] [on]
Errores.
ffplay.
ALSA: Couldn't open audio device: No such file or directory
mplayer.
[AO_ALSA] alsa-lib: pcm_dmix.c:1108:(snd_pcm_dmix_open) unable to open slave
speaker-test.
ALSA lib pcm_dmix.c:1108:(snd_pcm_dmix_open) unable to open slave
Solución.
Test.
rmmod snd_hda_intel modprobe snd_hda_intel index=1 # Probar el sonido, por ejemplo "speaker-test -c2"
Cargar el módulo desde el arranque: /etc/modprobe.d/default.conf
options snd_hda_intel index=1
Opción 1.
speaker-test -c2
Opción 2: Se debe buscar el dispositivo de sonido, por ejemplo /dev/audio y enviarle un par de bytes para ver si se emite sonido.
cat file > /dev/audio1
Enlaces de interés: https://wiki.archlinux.org/index.php/Advanced_Linux_Sound_Architecture_(Espa%C3%B1ol)