Advanced Linux Sound Architecture ( ALSA ) es un marco de software y parte del kernel de Linux que proporciona una interfaz de programación de aplicaciones (API) para controladores de dispositivos de tarjetas de sonido .
Algunos de los objetivos del proyecto ALSA desde sus inicios eran la configuración automática del hardware de la tarjeta de sonido y el manejo elegante de múltiples dispositivos de sonido en un sistema. ALSA se publica bajo GPL-2.0 o posterior y LGPL-2.1 o posterior . [5]
En Linux, los servidores de sonido, como sndio , PulseAudio , JACK (edición y mezcla de audio de nivel profesional de baja latencia) y PipeWire , y API de nivel superior (por ejemplo, OpenAL , SDL audio , etc.) funcionan sobre ALSA y su sonido. controladores de dispositivos de tarjeta. ALSA sucedió al antiguo puerto Linux del Open Sound System (OSS).
El proyecto para desarrollar ALSA fue dirigido por Jaroslav Kysela y se basó en el controlador de dispositivo Linux para la tarjeta de sonido Gravis Ultrasound . Comenzó en 1998 y se desarrolló por separado del kernel de Linux hasta que se introdujo en la serie de desarrollo 2.5 en 2002 (2.5.4–2.5.5). [6]
En la versión 2.6, reemplazó al sistema anterior, Open Sound System (OSS), por defecto (aunque existe una capa de compatibilidad con versiones anteriores). [7]
ALSA tiene una API más grande y compleja que OSS, por lo que puede resultar más difícil desarrollar una aplicación que utilice ALSA como tecnología sólida. Si bien ALSA puede configurarse para proporcionar una capa de emulación de OSS, dicha funcionalidad ya no está disponible o no está instalada de forma predeterminada en muchas distribuciones de Linux.
ALSA fue diseñado con algunas características que, en el momento de su concepción, no eran compatibles con OSS:
Además de los controladores de dispositivos de sonido, ALSA incluye una biblioteca de espacio de usuario para desarrolladores de aplicaciones que desean utilizar funciones de controladores a través de una interfaz de nivel superior a la interfaz proporcionada para la interacción directa con los controladores del kernel. A diferencia de la API del kernel, que intenta reflejar las capacidades del hardware directamente, la biblioteca de espacio de usuario de ALSA presenta una abstracción que permanece lo más estandarizada posible en todos los elementos de hardware subyacentes dispares. Este objetivo se logra en parte mediante el uso de complementos de software ; por ejemplo, muchas tarjetas de sonido modernas o chips de sonido integrados no tienen un control de "volumen maestro". En cambio, para estos dispositivos, la biblioteca de espacio de usuario proporciona un control de volumen de software utilizando el complemento " softvol ", y el software de aplicación ordinario no necesita preocuparse si dicho control se implementa mediante hardware subyacente o emulación de software de dicho hardware subyacente.
Además del marco de software interno del kernel de Linux, el proyecto ALSA también proporciona las herramientas de línea de comandos [8] [9] [10] y las utilidades [11] alsactl
, [12] amixer
, [13] arecord/aplay
y [13] y ncurses alsamixer
. TUI basado en .
También hay GUI programadas por desarrolladores externos , como GNOME-ALSAmixer [14] (usando GTK ), Kmix, [14] XFCE4-mixer, LXpanel, QasHctl, QasMixer, Pavucontrol, AconnectGUI, [15] tapiir, [15 ] polarbear, [15] ALSAmixerGUI [16] (usando FLTK ), ZynAddSubFX , Yoshimi y aún más.
Esta sección proporciona una descripción general de los conceptos básicos relacionados con ALSA. [17] [18] [19]
Normalmente, ALSA admite hasta ocho tarjetas , numeradas del 0 al 7; Cada tarjeta es un dispositivo de núcleo físico o lógico capaz de realizar entradas y salidas. Además, cada tarjeta también puede ser direccionada por su id , que es una cadena explicativa como " Auriculares " o " ICH 9 ".
Una tarjeta tiene dispositivos , numerados a partir del 0; un dispositivo puede ser del tipo reproducción , es decir, que emite sonido desde la computadora, o algún otro tipo como captura , control , temporizador o secuenciador ; [20] El número de dispositivo 0 se utiliza de forma predeterminada cuando no se especifica ningún dispositivo en particular.
Un dispositivo puede tener subdispositivos , numerados a partir de 0; un subdispositivo representa algún punto final de sonido relevante para el dispositivo, como un par de altavoces. Si no se especifica el subdispositivo, o si se especifica el número de subdispositivo −1, se utiliza cualquier subdispositivo disponible.
La interfaz de una tarjeta es una descripción de un protocolo ALSA para acceder a la tarjeta; Las interfaces posibles incluyen: hw , plughw , default y plug:dmix . La interfaz hw proporciona acceso directo al dispositivo del kernel, pero no admite mezcla de software ni adaptación de flujo. El complemento y el valor predeterminado habilitan la salida de sonido donde la interfaz hw produciría un error.
Una aplicación generalmente describe la salida de sonido combinando todas las especificaciones antes mencionadas en una cadena de dispositivo [ cita requerida ] , que tiene una de las siguientes formas (que distinguen entre mayúsculas y minúsculas ):
Un flujo ALSA es un flujo de datos que representa sonido; El formato de transmisión más común es PCM , que debe producirse de tal manera que coincida con las características o parámetros del hardware, que incluyen:
La capa ALSA System on Chip (ASoC) tiene como objetivo proporcionar un mejor soporte para ALSA en sistemas integrados que utilizan un diseño de sistema en chip (SoC). [21]
Open Sound System versión 4 es capaz de emular ALSA. [22]
QNX utiliza un sistema de sonido derivado de ALSA, pero no directamente compatible con él. El archivo de encabezado y los nombres de la biblioteca siguen siendo "sonidos", al igual que los nombres de ALSA. [23] ALSA API utiliza llamadas ioctl() de una manera no permitida en el kernel QNX. [24]
Esta página contendrá una lista de mis proyectos, pero primero necesito limpiar algunas cosas. por ahora, utilice los siguientes enlaces o navegue por ftp: tapiir, alsamixergui, aconnectgui, polarbear
alsamixergui es una interfaz basada en FLTK para alsamixer. Está escrito directamente encima de la fuente de alsamixer, dejando la fuente original intacta, agregando solo un par de ifdefs y algunas llamadas a la parte gui, por lo que proporciona exactamente la misma funcionalidad, pero con una interfaz gráfica de usuario. (Investigador, 1999-2010)
Algunas de las razones por las que este sitio sigue existiendo son: nadie del sitio oficial de ALSA ha contribuido nunca con nada a este sitio (antes de que existiera el oficial, este es anterior a la wiki oficial por bastantes años), nadie ha contribuido oficialmente o sugirió formalmente una fusión, nadie más ha mostrado ningún interés serio en ayudar a fusionarlos y, lo más importante, hay una cantidad significativa de referencias externas y visitas de Google que llegan directamente a este sitio porque ha estado aquí durante tanto tiempo.