stringtranslate.com

Arquitectura de sonido avanzada para Linux

La API de Linux está compuesta por la interfaz de llamada del sistema del kernel de Linux, la biblioteca C de GNU (de GNU ), libdrm , libalsa y libevdev (de freedesktop.org ).
ALSA es parte del núcleo de Linux , mientras que PulseAudio es middleware, una parte de los niveles inferiores de la pila de escritorio. Lo mismo ocurre con SDL .

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 en 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 las licencias GPL-2.0 o posterior y LGPL-2.1 o posterior . [5]

En Linux, los servidores de sonido, como sndio , PulseAudio , JACK (mezcla y edición de audio de nivel profesional de baja latencia) y PipeWire , y las API de nivel superior (por ejemplo, OpenAL , SDL audio , etc.) funcionan sobre ALSA y sus controladores de dispositivos de tarjeta de sonido. ALSA sucedió al antiguo puerto Linux del Open Sound System (OSS).

Historia

El proyecto de desarrollo de 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 núcleo 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 de sonido. 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 manera predeterminada en muchas distribuciones de Linux.

Características

ALSA fue diseñado con algunas características que, en el momento de su concepción, no eran compatibles con el 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 las características de los controladores a través de una interfaz de nivel superior a la interfaz proporcionada para la interacción directa con los controladores del núcleo. A diferencia de la API del núcleo, 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 entre los distintos elementos de hardware subyacentes. 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 mediante el complemento " softvol ", y el software de aplicación común no necesita preocuparse de si dicho control se implementa mediante hardware subyacente o emulación de software de dicho hardware subyacente.

Aplicaciones

Además del marco de software interno del núcleo Linux, el proyecto ALSA también proporciona herramientas de línea de comandos [8] [9] [10] y utilidades [11] alsactl , [12] amixer , [13] arecord/aplay y alsamixer[ 13] una TUI basada en ncurses .

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 e incluso más.

Conceptos

Esta sección proporciona una descripción general de los conceptos básicos relacionados con ALSA. [17] [18] [19]

Por lo general, 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 de 0; un dispositivo puede ser de tipo reproducción , lo que significa que emite sonido desde la computadora, o algún otro tipo como captura , control , temporizador o secuenciador ; [20] el dispositivo número 0 se usa de manera predeterminada cuando no se especifica ningún dispositivo en particular.

Un dispositivo puede tener subdispositivos , numerados a partir del 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 de núcleo, pero no admite mezcla de software ni adaptación de flujo. Plughw y default habilitan la salida de sonido donde la interfaz hw produciría un error.

Una aplicación normalmente describe la salida de sonido combinando todas las especificaciones mencionadas anteriormente 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 flujo más común es PCM , que debe producirse de tal manera que coincida con las características o parámetros del hardware, incluidos:

Implementaciones

La capa del sistema en chip (ASoC) de ALSA tiene como objetivo proporcionar un mejor soporte para ALSA en sistemas integrados que utilizan un diseño de sistema en chip (SoC). [21]

La versión 4 de Open Sound System puede emular ALSA. [22]

QNX utiliza un sistema de sonido derivado de ALSA, pero no directamente compatible con él. Los nombres de los archivos de encabezado y de las bibliotecas siguen siendo "asound", al igual que los nombres de ALSA. [23] La API de ALSA utiliza llamadas ioctl() de una manera que no está permitida en el núcleo de QNX. [24]

Véase también

Referencias

  1. ^ "Jaroslav Kysela - Perex suave".
  2. ^ Equipo Alsa, alsa-project.org, 29 de septiembre de 2008 , consultado el 8 de enero de 2012
  3. ^ "Página Principal Noticias - AlsaProject". 10 de junio de 2024 . Consultado el 11 de junio de 2024 .
  4. ^ "ALSA", Resumen del análisis , Ohloh , archivado desde el original el 20 de diciembre de 2013 , consultado el 8 de enero de 2012
  5. ^ ab "Introducción". alsa-project.org . Consultado el 8 de enero de 2012 .
  6. ^ Notas de la versión de Linux 2.5.5 , consultadas el 8 de enero de 2012
  7. ^ Emulación OSS, archivado desde el original el 5 de junio de 2012 , consultado el 7 de julio de 2012
  8. ^ "Proyecto Alsa/Herramientas Alsa". GitHub . 3 de abril de 2022.
  9. ^ "Alsa-tools - ALSA wiki". alsa.opensrc.org . Archivado desde el original el 18 de marzo de 2008 . Consultado el 12 de enero de 2022 .
  10. ^ "Información para usuarios de ALSA - AlsaProject".
  11. ^ "Alsa-utils". GitHub . 4 de mayo de 2022.
  12. ^ "Categoría:Alsa-utils - Wiki de ALSA". alsa.opensrc.org . Archivado desde el original el 18 de marzo de 2008 . Consultado el 12 de enero de 2022 .
  13. ^ ab "Cómo usar las utilidades de ALSA para administrar el audio de Linux desde la terminal". 14 de mayo de 2018.
  14. ^ ab "AlsaMixers - Wiki de ALSA". alsa.opensrc.org . Archivado desde el original el 4 de abril de 2008 . Consultado el 12 de enero de 2022 .
  15. ^ abc boer, maarten de. "la página de inicio de maarten". iua.upf.es . Archivado desde el original el 4 de septiembre de 2006 . Consultado el 18 de julio de 2021 . esta página contendrá una lista de mis proyectos, pero primero necesito limpiar algunas cosas. por ahora, usa los siguientes enlaces o navega por ftp: tapiir, alsamixergui, aconnectgui, polarbear
  16. ^ Boer, Maarten de. "AlsaMixerGui". Music Technology Group . Barcelona: Universitat Pompeu Fabra. Archivado desde el original el 2009-02-05 . Consultado el 18 de julio de 2021 . alsamixergui es una interfaz basada en FLTK para alsamixer. Está escrita directamente sobre el código fuente de alsamixer, dejando el código fuente original intacto, solo agregando un par de ifdefs y algunas llamadas a la parte de la interfaz gráfica de usuario, por lo que proporciona exactamente la misma funcionalidad, pero con una interfaz gráfica de usuario. (Investigador, 1999-2010)
  17. ^ Tranter, Jeff (octubre de 2004), "Introducción a la programación de sonido con ALSA", Linux Journal , consultado el 8 de enero de 2012
  18. ^ Phillips, Dave (junio de 2005), "A User's Guide to ALSA", Linux Journal , archivado desde el original el 9 de enero de 2012 , consultado el 8 de enero de 2012
  19. ^ Documentación de Doxygen de la biblioteca C de Alsa, octubre de 2007 , consultado el 8 de enero de 2012
  20. ^ "Proyecto ALSA - Referencia de la biblioteca C: Interfaz del secuenciador" www.alsa-project.org . Consultado el 30 de abril de 2019 .
  21. ^ Capa SoC de ALSA, kernel.org , 13 de julio de 2017
  22. ^ "Consejos y trucos - Sistema de sonido abierto". ossnext.trueinstruments.com .
  23. ^ "Arquitectura de audio (QNX 6.4.1)". www.qnx.com .
  24. ^ "ALSA y libasound.so". www.qnx.com .

Enlaces externos

  1. ^ "Guía de administración README". Repositorios git de Kernel.org .