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.