Audio

Explicación de la guía de Noob sobre ALSA, OSS y Pulse Audio de Linux Audio

Explicación de la guía de Noob sobre ALSA, OSS y Pulse Audio de Linux Audio
Hay una cosa en la que los usuarios de Linux nuevos y experimentados pueden estar de acuerdo: el audio de Linux es confuso. No solo varias tecnologías realizan trabajos similares, sino que la mayoría de ellas pueden ser omitidas por completo por las distribuciones de Linux y sus usuarios.

La situación es relativamente buena cuando se trata de distribuciones convencionales como Ubuntu, Debian o Fedora porque sus desarrolladores han hecho todo lo posible para que el audio funcione de inmediato, pero no se puede decir lo mismo de Arch Linux, Gentoo, y otras distribuciones minimalistas que esperan que los usuarios configuren todo desde cero.

Este artículo no lo convertirá en un experto en audio de Linux, pero, con suerte, explicará las tecnologías básicas responsables de hacer que el sonido salga de sus parlantes cuando abre un video en YouTube o juega un juego en Steam.

Arquitectura de sonido avanzada de Linux (ALSA)

Comencemos con la capa más importante del audio de Linux, ALSA. Creada en 1998 por el desarrollador de software checo Jaroslav Kysela, ALSA es responsable de dar voz a todas las distribuciones modernas de Linux. En realidad, es parte del propio kernel de Linux, que proporciona funcionalidad de audio al resto del sistema a través de una interfaz de programación de aplicaciones (API) para controladores de dispositivos de tarjetas de sonido.

El diseño original de ALSA se inspiró en gran medida en el controlador de dispositivo Linux para la tarjeta de sonido Gravis Ultrasound, que fue fabricada por Advanced Gravis Computer Technology con sede en Canadá y se hizo muy popular en la escena de demostración durante la década de 1990.

Soporte de ALSA para todo tipo de interfaces de audio gracias a controladores de sonido totalmente modularizados, puede administrar hasta ocho dispositivos de audio al mismo tiempo, acceder a la funcionalidad MIDI de hardware, realizar mezclas de hardware de múltiples canales y más.

Los usuarios suelen interactuar con ALSA utilizando alsamixer, un programa de mezcla gráfico que se puede utilizar para configurar los ajustes de sonido y ajustar el volumen de canales individuales. Alsamixer se ejecuta en la terminal y puedes invocarlo simplemente escribiendo su nombre. Un comando de teclado particularmente útil se activa presionando la tecla M. Este comando alterna el silenciamiento del canal, y es una solución bastante común para muchas preguntas publicadas en los foros de discusión de Linux.

Sistema de sonido abierto (OSS)

El sitio web oficial de ALSA menciona el soporte para Open Sound System, o OSS para abreviar. Hasta Linux 2.5, OSS era en realidad el principal y único sistema de sonido para Linux. ALSA se diseñó para superar sus diversas deficiencias, como el hecho de que no permitía que más de una aplicación acceda al hardware a la vez. En Linux 2.6 ALSA reemplazó a OSS como sistema de sonido predeterminado.

Cuando los desarrolladores de OSS anunciaron que la versión de OSS tendría una licencia propietaria, los desarrolladores de Linux tomaron rápidamente la decisión de reemplazarla con ALSA. Vale la pena señalar que OSS se convirtió nuevamente en software libre con el lanzamiento de la versión 4 en 2007. Hoy en día, OSS se distribuye bajo cuatro licencias diferentes (BSD, CDDL, GPL, propietaria).

La mayoría de las distribuciones de Linux en estos días ni siquiera se molestan en activar la capa de emulación OSS presente en ALSA porque ya casi nadie la necesita, lo que hace que OSS sea una reliquia del pasado.

PulseAudio

Si no recuerda la última vez que interactuó con ALSA al cambiar la configuración de audio, probablemente se deba a que la capa de cara al usuario del sistema de audio Linux en la mayoría de las distribuciones modernas se llama PulseAudio.

PulseAudio se lanzó inicialmente en 2004, y ahora está incluido y habilitado de forma predeterminada en Ubuntu, Linux Mint, openSUSE y otras distribuciones importantes. El trabajo de PulseAudio es pasar datos de sonido entre sus aplicaciones y su hardware, dirigiendo los sonidos provenientes de ALSA a varios destinos de salida, como los altavoces o auriculares de su computadora. Es por eso que comúnmente se lo conoce como servidor de sonido.

A primera vista, podría parecer que PulseAudio realmente no agrega nada críticamente importante al audio de Linux, y muchos de sus críticos comparten la misma opinión. En realidad, hay muchas cosas que serían imposibles o difíciles de lograr sin él, como mezclar varios sonidos en uno, transferir audio a una máquina diferente o cambiar el formato de muestra o el número de canales.

PulseAudio también ofrece compatibilidad multiplataforma (FreeBSD, NetBSD, OpenBSD, Linux, Illumos, Solaris, macOS y, de forma limitada, Microsoft Windows). Si desea controlar PulseAudio directamente, en lugar de interactuar con él a través de un widget de control de volumen o un panel de algún tipo, puede instalar PulseAudio Volume Control (llamado pavucontrol en la mayoría de los repositorios de paquetes).

Si cree que no puede utilizar las funciones proporcionadas por PulseAudio, puede usar ALSA puro o reemplazarlo con un servidor de sonido diferente.

PulseAudio vs. JACK

PulseAudio no es el único servidor de sonido para Linux. También está JACK, que es un acrónimo recursivo de JACK Audio Connection Kit. Mientras que PulseAudio se desarrolló teniendo en cuenta las necesidades de los usuarios generales de Linux, JACK está destinado a DJ y profesionales del audio, ya que proporciona conexiones en tiempo real y de baja latencia para datos de audio y MIDI.

Debido a que JACK le permite conectar las entradas y salidas de audio de todas y cada una de sus aplicaciones juntas, puede hacer algunas cosas geniales con ella, como monitorear su propia voz, agregarle efectos en tiempo real y más. De hecho, el nombre de este sistema de sonido se inspiró en los cables utilizados en los estudios de grabación reales para construir conexiones intrincadas entre instrumentos, sintetizadores, controladores MIDI y multipistas.

Podría decirse que el mayor inconveniente de JACK es que, por lo general, funciona perfectamente o de manera horrible, debido al hecho de que su objetivo principal es proporcionar audio de baja latencia. También requiere una potencia de CPU considerablemente mayor en comparación con PulseAudio, por lo que lo encontrará principalmente en estaciones de trabajo profesionales dedicadas a la edición de audio.

Comprobación de Pulse Audio y ALSA

Quizás se esté preguntando, ¿cómo puedo saber qué software de audio está usando mi computadora?? Para verificar si tanto Pulse Audio como ALSA están presentes en su sistema, use los siguientes dos comandos:
Comprobando PulseAudio:

$ lista pactl


Comprobando ALSA:

$ aplay -l

Conclusión

El audio en Linux parece complicado porque realmente lo es. Desenredar la red de tecnologías heredadas y capas de abstracción puede ser un verdadero desafío incluso para los usuarios experimentados de Linux que conocen de memoria los entresijos del sistema operativo. Con suerte, nuestro artículo lo ayudó a comprender mejor los componentes más importantes del sistema de audio Linux, incluidos ALSA, OSS y PulseAudio.

Las 5 mejores cartas de captura de juegos
Todos hemos visto y amado la transmisión de juegos en YouTube. PewDiePie, Jakesepticye y Markiplier son solo algunos de los mejores jugadores que han ...
Cómo desarrollar un juego en Linux
Hace una década, no muchos usuarios de Linux predecían que su sistema operativo favorito algún día sería una plataforma de juegos popular para videoju...
Puertos de código abierto de motores de juegos comerciales
Las recreaciones gratuitas, de código abierto y de motores de juegos multiplataforma se pueden usar para jugar títulos de juegos antiguos y también al...