Articulo de referencia

Arquitectura de sonido Linux avanzada

{{cite web | url=https://www.perex.cz/perex/ | title=Jaroslav Kysela - Perex soft }} "},"developer":{"wt":"ALSA team {{citation\n | url = http://www.alsa-project.org/main/index....

La API de Linux se compone de la interfaz de llamadas al sistema del kernel de Linux, la biblioteca C de GNU (de GNU ), libdrm , libalsa y libevdev (de freedesktop.org ).
ALSA forma parte del kernel de Linux , mientras que PulseAudio es middleware, parte de los niveles inferiores de la pila de escritorio. Lo mismo ocurre con SDL .

La arquitectura de sonido avanzada de Linux ( ALSA ) es un marco de software y forma parte del núcleo de Linux que proporciona una interfaz de programación de aplicaciones (API) para los controladores de dispositivos de tarjetas de sonido .

Algunos de los objetivos del proyecto ALSA en sus inicios fueron la configuración automática del hardware de la tarjeta de sonido y el manejo eficiente de múltiples dispositivos de sonido en un sistema. ALSA se distribuye 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 (edición y mezcla de audio 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ó a la versión anterior para Linux del Open Sound System (OSS).

Historia

El proyecto para desarrollar ALSA fue liderado 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ó de forma independiente del núcleo Linux hasta su introducción en la serie de desarrollo 2.5 en 2002 (2.5.4–2.5.5). [ 6 ]

En la versión 2.6, reemplazó por defecto al sistema anterior, Open Sound System (OSS) (aunque existe una capa de retrocompatibilidad). [ 7 ]

ALSA tiene una API más extensa y compleja que OSS, por lo que puede resultar más difícil desarrollar una aplicación que la utilice como tecnología de sonido. Si bien ALSA puede configurarse para proporcionar una capa de emulación de OSS, esta funcionalidad ya no está disponible o no viene instalada por defecto 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 software de código abierto (OSS):

Además de los controladores de dispositivos de sonido, ALSA incluye una biblioteca de espacio de usuario para desarrolladores de aplicaciones que deseen utilizar las funciones del controlador mediante una interfaz de nivel superior a la proporcionada para la interacción directa con los controladores del kernel. A diferencia de la API del kernel, que intenta reflejar directamente las capacidades del hardware, la biblioteca de espacio de usuario de ALSA presenta una abstracción que se mantiene 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 su lugar, para estos dispositivos, la biblioteca de espacio de usuario proporciona un control de volumen por software mediante el complemento " softvol ", y el software de aplicación común no necesita preocuparse de si dicho control se implementa mediante el hardware subyacente o mediante la emulación por software de dicho hardware.

Aplicaciones

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 utilidades [ 11 ]alsactl , [ 12 ]amixer , [ 13 ]arecord/aplay y alsamixer, [ 13 ] una TUI basada en ncurses .

También hay GUI programadas por desarrolladores de terceros , como GNOME-ALSAmixer [ 14 ] (que usa GTK ), Kmix, [ 14 ] XFCE4-mixer, LXpanel, QasHctl, QasMixer, Pavucontrol, AconnectGUI, [ 15 ] tapiir, [ 15 ] polarbear, [ 15 ] ALSAmixerGUI [ 16 ] (que usa FLTK ), ZynAddSubFX , Yoshimi, e incluso más.

Conceptos

[ 17 ] [ 18 ] [ 19 ]

Normalmente, ALSA admite hasta ocho tarjetas , numeradas del 0 al 7; cada tarjeta es un dispositivo del núcleo, físico o lógico, con capacidad de entrada y salida. Además, cada tarjeta puede identificarse mediante su ID , que es una cadena descriptiva como " Auriculares " o " ICH 9 ".

Una tarjeta tiene dispositivos , numerados a partir del 0; un dispositivo puede ser de tipo reproducción , lo que significa que emite sonido desde la computadora, o de algún otro tipo como captura , control , temporizador o secuenciador ; [ 20 ] el dispositivo número 0 se usa por defecto cuando no se especifica ningún dispositivo en particular.

Un dispositivo puede tener subdispositivos , numerados a partir del 0; un subdispositivo representa un punto final de sonido relevante para el dispositivo, como un par de altavoces. Si no se especifica el subdispositivo, o si se especifica el subdispositivo número -1, se utiliza cualquier subdispositivo disponible.

La interfaz de una tarjeta describe un protocolo ALSA para acceder a ella; las interfaces posibles incluyen: hw , plughw , default y plug:dmix . La interfaz hw proporciona acceso directo al dispositivo del kernel, pero no admite mezcla por software ni adaptación de flujo. Las interfaces plughw y default permiten 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 , que tiene una de las siguientes formas (que distinguen entre mayúsculas y minúsculas ):

  • Interfaz: tarjeta, dispositivo, subdispositivo
  • Interfaz: TARJETA=1, DISPOSITIVO=3, SUBDISPOSITIVO=2 .

Una secuencia ALSA es un flujo de datos que representa sonido; el formato de secuencia más común es PCM , que debe producirse de manera que coincida con las características o parámetros del hardware, incluyendo:

  • Frecuencia de muestreo : generalmente 44,1  kHz en equipos de música domésticos o 48  kHz en sistemas de cine en casa, aunque puede llegar hasta 88,2  kHz, 96  kHz o incluso 192  kHz para la producción o reproducción de audio de alta fidelidad.
  • Ancho de muestra : se mide en un número determinado de bits por muestra (por ejemplo, 8, 16, 24 o 32 bits/muestra).
  • codificación de muestra : como el orden de bytes
  • Número de canales : 1 para mono, 2 para estéreo o 6 para AC-3 / IEC958

Implementaciones

La capa ALSA System on Chip (ASoC) tiene como objetivo proporcionar un mejor soporte para ALSA en sistemas embebidos 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. Los nombres de los archivos de cabecera y las bibliotecas siguen siendo "asound", al igual que los nombres de ALSA. [ 23 ] La API de ALSA utiliza llamadas ioctl() de una forma no permitida en el kernel de QNX. [ 24 ]

Véase también

Referencias

  1. «Jaroslav Kysela - Perex suave» .
  2. Equipo Alsa , alsa-project.org, 29/09/2008 , consultado el 08/01/2012
  3. "alsa-lib,alsa-ucm-conf 1.2.16.1 release" .
  4. "ALSA" , Resumen del análisis , Ohloh , archivado del original el 20/12/2013 , consultado el 08/01/2012.
  5. 1 2 "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 del original el 5 de junio de 2012 , recuperado el 7 de julio de 2012.
  8. "Alsa-project/Alsa-tools" . GitHub . 3 de abril de 2022.
  9. "Alsa-tools - wiki de ALSA" . alsa.opensrc.org . Archivado del original el 18 de marzo de 2008. Consultado el 12 de enero de 2022 .
  10. "Información de usuario de ALSA - AlsaProject" .
  11. "Alsa-utils" . GitHub . 4 de mayo de 2022.
  12. "Categoría:Alsa-utils - Wiki de ALSA" . alsa.opensrc.org . Archivado del original el 18 de marzo de 2008. Consultado el 12 de enero de 2022 .
  13. 1 2 "Cómo usar las utilidades ALSA para administrar el audio de Linux desde la terminal" . 14 de mayo de 2018.
  14. 1 2 "AlsaMixers - wiki de ALSA" . alsa.opensrc.org . Archivado del original el 4 de abril de 2008. Consultado el 12 de enero de 2022 .
  15. 1 2 3 boer, maarten de. "Página principal de maarten" . iua.upf.es. Archivado del 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 ordenar algunas cosas. Por ahora, utilice los siguientes enlaces o explore el FTP: tapiir, alsamixergui, aconnectgui, polarbear
  16. Boer, Maarten de. "AlsaMixerGui" . Music Technology Group . Barcelona: Universitat Pompeu Fabra. Archivado del original el 5 de febrero de 2009. Consultado el 18 de julio de 2021. alsamixergui es una interfaz gráfica basada en FLTK para alsamixer. Está escrita directamente sobre el código fuente de alsamixer, dejando el código original intacto, añadiendo solo un par de directivas ifdef y algunas llamadas a la parte de la interfaz gráfica, 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), "Guía del usuario de ALSA" , Linux Journal , archivado del original el 9 de enero de 2012 , consultado el 8 de enero de 2012.
  19. Documentación de la biblioteca Alsa C en Doxygen , octubre de 2007 , consultado el 8 de enero de 2012.
  20. "Proyecto ALSA: la referencia de la biblioteca C: Interfaz del secuenciador" . www.alsa-project.org . Consultado el 30 de abril de 2019 .
  21. Capa ALSA SoC , kernel.org , 13/07/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 .
  • Sitio web oficial
  • Constable, Mark. "Alsa WIKI" . AlsaOpensrcOrg . Archivado del original el 29 de marzo de 2002. Recuperado el 18 de julio de 2021. Algunas de las razones por las que este sitio sigue existiendo son: nadie del sitio oficial de ALSA ha contribuido nunca a este sitio (antes de que existiera el oficial, este es anterior a la wiki oficial por bastantes años), nadie ha sugerido oficialmente o formalmente una fusión, nadie más ha mostrado un interés serio en ayudar a fusionarlos y, lo más importante, hay un número significativo de referencias externas y visitas de Google que llegan directamente a este sitio porque ha estado aquí durante mucho tiempo.
  1. "Guía de administración README" . Repositorios git de Kernel.org .