Modelo arquitectónico de ALSA
(Advanced Linux Sound Architecture)
Ficheros de Configuración

por David García Garzón (Vokimon), david punto garcia en upf punto edu

Ficheros de configuración
  1. Conceptos mínimos
    1. Función y alcance
    2. Sintaxis básica
    3. Arrays
    4. Referencias a objetos con parámetros
  2. Uso avanzado
    1. Inclusiones
    2. Modos de edición de propiedades
    3. Definiendo objetos paramétricos
  3. Referencias y enlaces

Nota: Este manual está en construcción y es muy posible que haya erratas y secciones incompletas. Si quieres ayudar, puedes ver algunos temas a resolver activando la hoja de estilo Default with TODO's. Normalmente en el menu Ver o Visualizar de tu navegador.

Conceptos mínimos

Se recomienda a los lectores leer al menos estos apartados de la sección sobre funcionalidad y sintaxis básica para entender los ejemplos que se dan más adelante. El resto són detalles que se pueden consultar a modo de referencia según se necesite.

Función y alcance

Los ficheros de configuración se cargan cada vez que se inicia una aplicación que usa ALSA. Estos ficheros definen nombres de los dispositivos, sus paràmetros, plugíns alternativos, servidores remotos de audio...

Estas definiciones tendrán diferente alcance segun donde se hagan:

Sintaxis básica

Los ficheros de configuración siguen una sintaxis determinada. Si hay cualquier error las aplicaciones ALSA daran errores al iniciarse.

El archivo de configuración define una serie de propiedades en forma de árbol.

Para dar valores a las propiedades de un dispositivo hay dos sintaxis:

pcm.midispositivo.propiedad1 = valor;
pcm.midispositivo.propiedad2.subPropiedad1 = otroValor;
pcm.midispositivo.propiedad2.subPropiedad2 = "Un valor con espacios";

o podemos hacer

pcm
{
	midispositivo
	{
		propiedad1 = valor;
		propiedad2
		{
			subPropiedad1 = otroValor;
			subPropiedad2 = "Un valor con espacios";
		}
	}
}

Normalmente se combinan las dos sintaxis a conveniencia, por ejemplo:

pcm.midispositivo
{
	propiedad1 = valor;
	propiedad2.subPropiedad1 = otroValor;
	propiedad2.subPropiedad2 = "Un valor con espacios";
}

El signo igual y los puntos y coma son opcionales, Yo prefiero ponerlos pues facilitan la localización de errores de sintaxis.

Arrays

En un fichero de configuración de ALSA, un array es equivalente a un valor compuesto que tiene las propiedades '0', '1', '2'... Se pueden entrar facilmente solo los valores poniendolos en secuencia entre [corchetes].

objeto
[
	valor0
	valor1
	valor2
	valor3
]

que es equivalente a

objeto
{
	0 valor0
	1 valor1
	2 valor2
	3 valor3
}

y que a su vez lo es de

objeto.0 valor0
objeto.1 valor1
objeto.2 valor2
objeto.3 valor3

Referencias a objetos con parámetros

ALSA nos permite definir objetos a los cuales cuya definición depende del valor de unos parámetros fijados cuando se usan. Para usar un objeto que se ha definido con parámetros (ver más adelante como se definen), estos se pueden:

Uso por posición:

objeto               # todos los parametros, por defecto
objeto:valor1        # todos menos el primer valor, por defecto
objeto:valor1,valor2 # cuando hay mas, separados por comas
objeto:"valor dado"  # comillas si un valor tiene espacios o caracteres especiales

Uso por nombre: los parámetros se especifican con la misma sintaxi que si fueran propiedades.

objeto:{ARG1 valor1 ARG2 valor2} # con las llaves podemos usar espacios
objeto:ARG1=valor1,ARG2=valor2  # con los signos '=' y ',' como separadores

Uso avanzado

Inclusiones

Los ficheros de configuración permiten incluir otros ficheros simplemente poniendo el nombre del fichero entre <angulos>. Algunos ficheros de configuración de ALSA estan en un directorio especial que puede cambiar de localización según la distribución de Linux. Para referenciar ese directorio esté donde esté se usa el prefijo confdir:.

</home/miuser/.morealsarc>
<confdir:pcm/surround.conf>

Modos de edición de propiedades

Cuando damos un valor a una propiedad el resultado dependerá de si esa propiedad existía antes, del contenido previo y de cual sea el modo de edición. El modo de edición se selecciona insertando un signo antes del nombre de la propiedad:

Por ejemplo, en la siguiente configuración:

pcm.midispositivo.propiedad.subpropiedad1 unvalor
pcm.midispositivo.propiedad.subpropiedad2 otrovalor
pcm.midispositivo.!propiedad.subpropiedad3 otrodiferente

la tercera linea elimina las subpropiedades 1 y 2.

Definiendo objetos paramétricos

Una definición dentro de un fichero de configuración puede estar parametrizada por diferentes argumentos.

TODO: Que tipos hay disponibles para los argumentos (integer, string...)
TODO: Ámbitos de objetos que se pueden definir: dispositivos, tipos de plugins...
TODO: Explicar el modo de edición por defecto en conceptos minimos

Referencias y enlaces

Lo principal de este apartado lo he obtenido de la misma documentación del API de la librería ALSA. Concretamente:

Otros temas no cubiertos en este manual:

TODO: Dar una idea de lo que son los hooks y para que sirven las funciones externas