Compartiendo los altavoces

Actualmente en el despacho tenemos 2 equipos en los que interesa reproducir audio y sólo 1 par de altavoces conectados a un equipo. Había 2 opciones o bien comprar un selector de señales de audio y conmutar entre un equipo y el otro o bien compartir los altavoces/tarjeta de sonido.

Como en tiempos había conseguido hacer que un xmms mandase la salida de audio a un esound remoto decidí probar por el camino de compartir altavoces.

Resulta que esound actualmente está viejo/desfasado/deprecated/oxidado, buscando un poco encontré en Pulseaudio la solución perfecta. Pulseaudio es un servidor de audio con soporte de red, con la ventaja de estar soportado por el propio ALSA, con lo cual no sólo ciertas aplicaciones se escucharán en los altavoces remotos, si no que todo lo que soporte ALSA ó OSS (ALSA nos ayuda a emular OSS) podrá ser escuchado en nuestros altavoces compartidos.

Manos a la obra, en el equipo que posee los altavoces y tarjeta de sonido deberemos de tener el demonio de Pulseaudio funcionando y admitiendo conexiones via TCP/IP. En mis gentoo es algo así:

  1. emerge pulseaudio (con USE=”alsa” como mínimo para que pueda mandar el audio a la tarjetea de sonido, que en mi caso lo tengo definido en /etc/make.conf)
  2. editamos /etc/pulse/default.pa y descomentamos la siguiente línea para que la salida de Pulseaudio sea el ALSA del equipo que tiene la tarjeta de sonido funcionando:
    • load-module module-alsa-sink
  3. en el mismo /etc/pulse/default.pa añadimos las siguientes líneas para admitir conexiones entrantes desde localhost y la red local (192.168.0.0/24 en mi caso):
    • load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1;192.168.0.0/24
    • load-module module-esound-protocol-tcp auth-ip-acl=127.0.0.1;192.168.0.0/24
  4. Arrancamos pulseaudio: /etc/init.d/pulseaudio start

En los equipos cliente deberemos de hacer lo siguiente:

  1. Añadimos pulseaudio al USE del /etc/make.conf e instalamos pulseaudio, xine-lib (si ya está instalado la reinstalamos para que vaya con soporte de pulseaudio) y alsa-plugins: emerge pulseaudio xine-lib
  2. Editamos /etc/pulse/client.conf y añadimos la siguiente línea para que el pulseaudio de los clientes mande el audio al pulseaudio que si tiene tarjeta de sonido como salida (multivac en mi caso):
    • default-server = multivac
  3. Configuramos ALSA para que utilice pulseaudio por defecto añadiendo las siguientes líneas a /etc/asound.conf:
    • pcm.pulse { type pulse }
    • ctl.pulse { type pulse }
    • pcm.!default { type pulse }
    • ctl.!default { type pulse }

Una vez hecho esto he comprobado que el amarok ejecutado en los clientes, que usa xine-lib, usa pulseaudio tanto si elegimos como salida ALSA o Pulseaudio, así que teoricamente cualquier cosa que sea capaz de usar ALSA la escucharemos en el equipo con salida de altavoces

Recent Entries

Leave a Reply