14.3 aifc --- Lit et écrit les fichiers AIFF and AIFC

Ce module fournit le support pour lire et écrire des fichiers AIFF et AIFF-C. AIFF signifie Audio Interchange File Format (Format d'Echange de Fichiers Audio), c'est un format qui permet de stocker des échantillons audio numériques dans un fichier. AIFF-C est une version plus récente de ce format, qui inclut la possibilité de compresser les données audio.

Avertissement: Il se peut que certaines opérations ne fonctionnent que sous IRIX ; elles déclencheront ImportError quand on cherchera à importer le module cl, qui n'est disponible que sur IRIX.

Les fichiers audio possèdent un certain nombre de paramètres qui décrivent les données audio. La fréquence d'échantillonage, ou fréquence de bloc est le nombre de fois par seconde où le son est échantillonné. Le nombre de canaux indique si le son est mono, stéréo ou quadriphonique. Chaque bloc est constitué d'un échantillon par canal. La taille d'échantillon est le nombre d'octets pour chaque échantillon. Ainsi, un bloc compte nbcanaux*tailleechantillon octets, et une seconde de son compte nbcanaux*tailleechantillon*frequenceechantillonage octets.

Par exemple, un son de qualité CD a une taille d'échantillon de deux octets (16 bits), utilise deux canaux (stéréo) et a une fréquence d'échantillonnage de 44.100 blocs par seconde. Ceci donne une taille de bloc de 4 octets (2*2), et une seconde comprend 2*2*44.100 soit 176.400 octets.

Le module aifc définit la fonction suivante:

open(fichier[, mode])
Ouvre un fichier AIFF ou AIFF-C et retourne une instance d'objet avec les méthodes décrites ci-dessous. L'argumentfichier est soit une chaîne de caractères avec un nom de fichier, soit un objet fichier. mode doit prendre les valeurs 'r' ou 'rb' pour ouvrir le fichier en lecture, 'w' ou 'wb' pour ouvrir le fichier en écriture. Par défaut, fichier.mode est utilisé s'il existe, sinon on utilise 'rb'. En écriture, l'objet fichier doit être cherchable, à moins que vous ne sachiez à l'avance combien d'échantillons vous allez écrire au total et que vous n'utilisiez writeframesraw() et setnframes().

Les objets retournés par open() quand un fichier est ouvert en lecture possèdent les méthodes suivantes :

aifcgetnchannels()
Retourne le nombre de canaux audio (1 pour mono, 2 pour stéréo).

aifcgetsampwidth()
Retourne la taille des échantillons, exprimée en nombre d'octets.

aifcgetframerate()
Retourne la fréquence d'échantillonnage (nombre de blocs audio par seconde).

aifcgetnframes()
Retourne le nombre de blocs audio dans le fichier.

aifcgetcomptype()
Retourne une chaîne de 4 caractères décrivant le type de compression utilisé dans le fichier audio. Pour les fichiers AIFF, la valeur retournée est 'NONE'.

aifcgetcompname()
Retourne une description lisible du type de compression utilisé pour le fichier audio. Pour les fichiers AIFF, la valeur retournée est 'not compressed'.

aifcgetparams()
Retourne un tuple constitué de toutes les valeurs ci-dessus dans l'ordre où elles sont décrites.

aifcgetmarkers()
Retourne une liste de marqueurs dans le fichier audio. Un marqueur consiste en un tuple de trois éléments. Le premier est l'ID de la marque (un entier), le second est la position de la marque exprimée en blocs depuis le début des données (un entier), le troisième est le nom de la marque (une chaîne de caractères).

aifcgetmark(id)
Retourne le tuple décrit dans getmarkers() pour la marque avec l'id donné.

aifcreadframes(nbblocs)
Lit et retourne les nbblocs blocs suivants du fichier audio. Le résultat retourné est une chaîne de caractères contenant pour chaque bloc les échantillons décompressés de tous les canaux.

aifcrewind()
"Rembobine" le pointeur de lecture. Le readframes() suivant commencera au début du fichier.

aifcsetpos(pos)
Recherche le bloc ayant le numéro indiqué.

aifctell()
Retourne le numéro du bloc courant.

aifcclose()
Ferme le fichier AIFF. Après un appel à cette méthode, l'objet ne peut plus être utilisé.

Les objets retournés par open() quand un fichier est ouvert en écriture possèdent toutes les méthodes ci-dessus, sauf readframes() et setpos(). Ils possèdent en outre les méthodes suivantes. Les méthodes get*() ne peuvent être appelées qu'après que les méthodes set*() correspondantes ont été appelées. Avant le premier appel à writeframes() ou à writeframesraw(), tous les paramètres sauf le nombre de blocs doivent être fournis.

aifcaiff()
Crée un fichier AIFF. Par défaut c'est un fichier AIFF-C qui est créé, à moins que le nom de fichier se termine par '.aiff', auquel cas le fichier créé est au format AIFF.

aifcaifc()
Crée un fichier AIFF-C. Par défaut c'est un fichier AIFF-C qui est créé, à moins que le nom de fichier se termine par '.aiff', auquel cas le fichier créé est au format AIFF.

aifcsetnchannels(nbcanaux)
Spécifie le nombre de canaux dans le fichier audio.

aifcsetsampwidth(taille)
Spécifie la taille en octets des échantillons sonores.

aifcsetframerate(frequence)
Spécifie la fréquence d'échantillonnage en nombre de blocs par seconde.

aifcsetnframes(nbblocs)
Spécifie le nombre de blocs qui doivent être écrits dans le fichier audio. Si ce paramètre n'est pas déterminé, ou pas déterminé correctement, le fichier doit autoriser la recherche.

aifcsetcomptype(type, nom)
Spécifie le type de compression. Si le type n'est pas spécifié, les données audio ne seront pas compressées. Dans les fichiers AIFF, la compression n'est pas possible. Le paramètre "nom" doit être une description lisible du type de compression, le paramètre "type" doit être une chaîne de 4 caractères. Actuellement les types de compression suivants sont supportés : NONE, ULAW, ALAW, G722.

aifcsetparams(nbcanaux, tailleech, freqech, typecompr, nomcompr)
Définit tous les paramètres ci-dessus en une seule fois. L'argument est un tuple constitué des divers paramètres. Ceci signifie qu'il est possible d'utiliser le résultat d'un appel à getparams() comme argument pour setparams().

aifcsetmark(id, position, nom)
Ajoute une marque avec l'identifiant id (supérieur à 0) et le nom donné à la position indiquée. Cette méthode peut être appelée à tout moment avant close().

aifctell()
Retourne la position courante d'écriture dans le fichier en sortie. Utile quand on le couple avec setmark().

aifcwriteframes(donnees)
Ecrit des données dans le fichier en sortie. Cette méthode ne peut être appelée qu'après que les paramètres du fichier audio ont été définis.

aifcwriteframesraw(donnees)
Comme writeframes(), sauf que l'en-tête du fichier audio n'est pas mis à jour.

aifcclose()
Ferme le fichier AIFF. L'en-tête du fichier est mis à jour pour refléter la taille exacte du fichier audio. Après un appel à cette méthode, l'objet ne peut plus être utilisé.