14.3 aifc -- Leer y escribir ficheros AIFF y AIFC

Este módulo proporciona soporte para leer y escribir ficheros AIFF y AIFF-C. AIFF es Formato de Fichero para Intercambio de Sonido (Audio Interchange File Format), un formato para almacenar muestras de sonido digital en un fichero. AIFF-C es una versión más nueva de ese formato que añade la capacidad de comprimir la información de sonido.

Atención: Puede que algunas funciones funcionen sólo bajo IRIX. Dichas funciones provocarán una excepción ImportError al intentar importar el módulo cl, disponible únicamente para IRIX.

Los ficheros de sonido tienen un número de parámetros que describen la información de sonido. La frecuencia de muestreo o tasa de marcos es el número de muestras por segundo que se toman del sonido. El número de canales indica si el sonido es monoaural, estereofónico o cuadrafónico. Cada marco consiste en una muestra por canal. El tamaño de muestra es el tamaño en bytes de cada muestra. Por eso un marco tiene num_canales*tamaño_muestra bytes, y un segundo de audio equivale a num_canales*tamaño_muestra*frecuencia_muestreo bytes.

Por ejemplo, el sonido de calidad CD tiene un tamaño de muestra de dos bytes (16 bits), usa dos canales (estereofónico) y tiene una velocidad de muestreo de 44.100 cuadros/segundo. Esto da un tamaño de cuadro de 4 bytes (2*2), y un segundo equivale ocupa 2*2*44100 bytes, por ejemplo 176,400 bytes.

El módulo aifc define las siguientes funciones:

open (fichero[, modo])
Abre un fichero AIFF o AIFF-C y devuelve una instancia de un objeto con los métodos posteriormente descritos. El argumento fichero es una cadena que contiene el nombre de un archivo o una instancia de objeto fichero. modo puede ser 'r' o 'rb' cuando el fichero se abre en modo lectura; o bien 'w' o 'wb' cuando se abre en modo escritura. Si se omite modo, se usa fichero.modo; y si éste no existe, se emplea 'rb'. En el modo escritura, el objeto fichero debe ser de acceso aleatorio, a menos que se sepa de antemano cuántas muestras se van a escribir en total y se use writeframesraw() y setnframes().

Los objetos devueltos por open() cuando un fichero se abre en modo lectura tienen los siguientes métodos:

getnchannels ()
Devuelve el número de canales de sonido (1 para mono, 2 para estéreo).

getsampwidth ()
Devuelve el tamaño en bytes de las muestras individuales.

getframerate ()
Devuelve la velocidad de muestreo (número de cuadros de sonido por segundo).

getnframes ()
Devuelve el número de cuadros de sonido en el fichero.

getcomptype ()
Devuelve una cadena de cuatro caracteres que describe el tipo de compresión usado en el fichero de sonido. Para ficheros AIFF, el valor de retorno es 'NONE', ninguno.

getcompname ()
Devuelve una descripción más extensa del tipo de compresión usado en el fichero de sonido. Para ficheros AIFF, el valor de retorno es 'not compressed', no comprimido.

getparams ()
Devuelve una tupla formada por todos los valores anteriores en ese mismo orden.

getmarkers ()
Devuelve una lista de marcadores del fichero de sonido. Un marcador está formado por una tupla de tres elementos. El primero es el ID del marcador (un entero); el segundo es la posición del marcador en cuadros contados desde el principio de los datos (otro entero); y el tercero es el nombre del marcador (una cadena).

getmark (id)
Devuelve la tupla descrita en getmarkers() del marcador con el id especificado.

readframes (nframes)
Lee y devuelve los siguientes nframes cuadros del fichero de sonido. Los datos devueltos consisten en una cadena que contiene para cada cuadro las muestras descomprimidas de todos los canales.

rewind ()
Rebobina el fichero. La próxima vez que se invoque el método readframes() empezará desde el principio.

setpos (pos)
Se coloca en el número de cuadro especificado.

tell ()
Devuelve el número del cuadro actual.

close ()
Cierra el fichero AIFF. Después de llamar a este método, el objeto no se puede volver a usar.

Los objetos devueltos por la función open() cuando se abre un fichero en modo escritura poseen todos los métodos anteriores, excepto readframes() y setpos(), y además disponen de los que se explican a continuación. Los métodos get*() sólo pueden ser invocados después de llamar a sus correspondientes métodos set*(). Antes de la primera llamada a writeframes() o writeframesraw(), hay que completar todos los parámetros, excepto el número de cuadros.

aiff ()
Crea un fichero AIFF. Por defecto se crea un fichero AIFF-C, a menos que el nombre del fichero termine con '.aiff', en cuyo caso el fichero será AIFF.

setnchannels (nchannels)
Especifica el número de canales del fichero de audio.

setsampwidth (width)
Especifica el tamaño en bytes de las muestras de sonido.

setframerate (rate)
Especifica la frecuencia de muestreo en cuadros por segundo.

setnframes (nframes)
Especifica el número de cuadros que se van escribir en el fichero de sonido. Si no se establece este parámetro o se hace de forma incorrecta, el fichero debe soportar búsqueda aleatoria.

setcomptype (type, name)
Especifica el tipo de compresión. Si no se establece, la información de sonido no se comprime. La compresión no es posible en ficheros AIFF. El parámetro name -nombre- se corresponde con la descripción extensa del tipo de compresión; el parámetro type -tipo- será una cadena de cuatro caracteres. Actualmente los tipos de compresión soportados son: NONE, ULAW, ALAW, G722.

setparams (nchannels, sampwidth, framerate, comptype, compname)
Establece todos los parámetros anteriores de una vez. El argumento es una tupla compuesta de los distintos parámetros. Esto significa que es posible usar el resultado de una llamada a getparams() como argumento para setparams().

setmark (id, pos, name)
Añade un marcador con el id (mayor que 0), el name -nombre- y la pos -posición- dados. Este método puede ser llamado en cualquier momento antes de close().

tell ()
Devuelve la posición de escritura actual en el fichero de salida. Útil en combinación con setmark().

writeframes (data)
Escribe datos al fichero de salida. Este método sólo puede ser llamado después de fijar los parámetros del fichero de sonido.

writeframesraw (datos)
Idéntico al método writeframes(), exceptuando que la cabecera del fichero de sonido no se actualiza.

close ()
Cierra el fichero AIFF. La cabecera del fichero se actualiza para reflejar el tamaño actual de la información de sonido. Tras llamar a este método, el objeto deja de estar disponible.

Ver Sobre este documento... para obtener información sobre sugerencias.