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.
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.
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:
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.
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
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
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>
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.
Una definición dentro de un fichero de configuración puede estar parametrizada por diferentes argumentos.
objeto.@args [ARG1 ARG2 ARG3]
objeto.@arg.ARG1 { type string default "un valor por defecto" }
objeto.otraPropiedad.subpropiedad "el valor es $ARG1"
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: