Servidor de sonido
# Servidor de sonido

Un servidor de sonido es un software que se encarga de la gestión del uso y acceso a los dispositivos de audio, habitualmente, las tarjetas de sonido. Normalmente se ejecutan como un proceso de segundo plano.

El mismo término puede aplicarse también para referirse a un servidor dedicado al streaming de audio, es decir, la emisión en tiempo real de un flujo de datos de audio a través de Internet o de una red local.

## Servidor de sonido en un sistema operativo

En un sistema operativo abierto de la familia GNU/Linux, o sistemas basados en UNIX, la tarea principal de un servidor de sonido es realizar la mezcla de diferentes flujos de datos y enviar una única salida unificada al dispositivo de salida de audio del sistema. Esta mezcla se hará habitualmente por software, o bien por hardware si se dispone de una tarjeta de sonido avanzada que esté soportada.

### Motivación

Los servidores de sonido aparecieron dados los problemas que existían con el antiguo sistema de sonido OSS (Open Sound System). Este es demasiado básico y solo es capaz de recibir un solo flujo de datos y reproducirse a la salida de la tarjeta de sonido. Solo algunos modelos eran capaces de reproducir más de un flujo de datos a la vez. Con esta limitación, se daba un problema común, si el programa enviaba un flujo de datos de sonido mientras se estaba reproduciendo otro, no se escuchaba, y esto suponía un problema para el usuario común de un sistema de escritorio.

Muchos de estos problemas, se solían evitar de formas poco eficientes. Algunos programas esperaban encontrar el dispositivo de audio no bloqueado, para poder utilizarlo. Otros, previamente realizaban una comprobación de estado, y si no lo encontraban libre, desactivaban las funcionalidades de sonido para evitar un posible penjament del programa.

Los servidores de audio se ejecutan trabajando en segundo plano. Reciben llamadas de programas y diferentes flujos de sonido, los mezclan, y envían la salida al dispositivo de audio a través del módulo de sonido que se utilice. En la actualidad, se aprovechan las características avanzadas que proporciona ALSA, lo que ha contribuido a reducir la cantidad de problemas de las distribuciones de GNU/Linux relacionados con el sonido, pues desde la versión 2.6 del núcleo ya se ha integrado como parte de éste.

### Diversificación y problemas

Actualmente, existen varios servidores de sonido, algunos se centran en dar muy baja latencia, y otros, en ofrecer características generales para sistemas de escritorio y el mejor soporte posible para todo tipo de aplicaciones. Esta variedad, ha dado lugar a algunas posiciones críticas que defienden que es necesaria una estandarización para una API única o centrar esfuerzos en un único servidor de sonido.

Con la diversificación de servidores, una persona puede elegir qué alternativa usar, pero los programadores deben realizar más trabajo y más líneas de código en su software para que sea compatible con los diferentes servidores disponibles.

Los programas tuvieron que dejar de enviar los sonidos directamente en el dispositivo de sonido para hacerlo hacia el servidor de sonido. Si estos no están preparados, o envían directamente un flujo de datos directamente al dispositivo de audio, es posible que se encuentren bloqueado este dispositivo y no lo puedan utilizar. En algunos casos, existen mecanismos para que el dispositivo de salida de sonido que usará un software durante su ejecución será el servidor de audio que se esté utilizando.

## Servidor de sonido para hacer streaming

Un servidor de streaming de audio es un software dedicado a gestionar las conexiones de usuarios de un mismo flujo de datos reproduciendo las muestras en tiempo real sin necesidad de copiar el archivo de audio completo al sistema receptor, aligerando el tiempo de transferencia de un archivo de audio a través de una red local o de Internet.

## Servidores de sonido

Servidor de audio de sistema:

* ESD
* aRts
* PulseAudio
* JACK
* RoarAudio

Servidor de streaming de audio:

* Icecast
* SHOUTcast
