14.3 aifc -- Lettura e scrittura di file AIFF e AIFC

Questo modulo fornisce il supporto per la lettura e la scrittura dei file AIFF e AIFF-C. AIFF è l'Audio Interchange File Format, un formato per salvare campioni di audio digitale in un file. AIFFC-C è la nuova versione del formato, che include la capacità di comprimere l'audio.

Avvertenze: Alcune operazioni possono funzionare soltanto sotto IRIX; questo solleverà un'eccezione ImportError quando si tenterà di importare un modulo cl, che è disponibile solo su IRIX.

I file audio hanno un numero di parametri che descrivono i dati audio. Il tasso di campionamento o il tasso di frammentazione è il numero di volte per secondo in cui il suono viene campionato. Il numero di canali indica se l'audio è mono, stereo o quadro. Ogni frammento consiste di un campione per canale. La misura del campione è la misura in byte di ogni campione. Così un frammento consiste di ncanali*dimensionecampione byte, ed il secondo valore audio consiste di ncanali*dimensionecampione*framerate byte.

Per esempio, i CD hanno una qualità audio con una misura di campionamento di 2 byte (16 bit), usano due canali (stereo) ed hanno un frame rate di 44.100 frames/per secondo. Questo dà una dimensione del frame di 4 byte (2*2) ed il valore dei secondi occupa 2*2*44100 byte (176.400 byte).

Il modulo aifc definisce la seguente funzione:

open( file[, mode])
Apre un file AIFF o AIFF-C e restituisce un oggetto istanza con i metodi che sono descritti qui sotto. L'argomento file è sia un file stringa che un file oggetto. mode deve essere 'r' o 'rb' quando il file deve essere aperto per la lettura, o 'w', 'wb' quando il file deve essere aperto per la scrittura. Se omesso, viene usato file.mode se esiste, altrimenti viene usato 'rb'. Quando usato per la scrittura, il file oggetto dovrebbe essere disponibile per le ricerche, a meno che non si conosca quanti campioni si sta andando a scrivere in totale ed usare writeframesraw() e setnframes().

Gli oggetti restituiti da open() quando un file viene aperto per la lettura hanno i seguenti metodi:

getnchannels( )
Restituisce il numero dei canali audio (1 per mono, 2 per stereo).

getsampwidth( )
Restituisce la misura in byte del campione individuale.

getframerate( )
Restituisce la frequenza di campionatura (il numero dei frammenti audio per secondo).

getnframes( )
Restituisce il numero dei frammenti audio nel file.

getcomptype( )
Restituisce una stringa di quattro caratteri che descrive il tipo di compressione usata nel file audio. Per i file AIFF, il valore restituito è 'NONE'.

getcompname( )
Restituisce una descrizione comprensibile del tipo di compressione usata nel file audio. Per i file AIFF, il valore restituito è 'not compressed'.

getparams( )
Restituisce una tupla che consiste in tutti i suddetti valori nello stesso ordine.

getmarkers( )
Restituisce una lista di marcatori del file audio. Un marcatore è composto da una tupla di tre elementi. Il primo viene indicato come ID (un intero), il secondo è la posizione indicata nel frammento dall'inizio dei dati (un intero), il terzo è il nome dell'indicatore (stringa).

getmark( id)
Restituisce una tupla come descritto in getmarkers() per il marcatore con l'id passato.

readframes( nframes)
Legge il prossimo frammento nframes restituito dal file audio. Il dato restituito è una stringa contenente i campioni non compressi di tutti i canali.

rewind( )
Torna all'inizio del punto letto. Il prossimo readframes() partirà dall'inizio.

setpos( pos)
Cerca il frammento con il numero specificato.

tell( )
Restituisce il numero del frammento corrente

close( )
Chiude il file AIFF. Dopo avere chiamato questo metodo, l'oggetto non può essere più usato.

Gli oggetti restituiti da open() quando un file viene aperto in scrittura, hanno tutti gli stessi metodi, con l'eccezione di readframes() e setpos(). In aggiunta esistono altri metodi. I metodi get*() possono essere chiamati solo dopo che i metodi corrispondenti set*() vengono chiamati. Prima del primo writeframes() o writeframesraw(), tutti i parametri, eccetto il numero dei frammenti, devono essere riempiti.

aiff( )
Crea un file AIFF. In modo predefinito viene creato un file AIFF-C, anche se il nome del file non termina con l'estensione '.aiff', viene comunque creato un file AIFF.

aifc( )
Crea un file AIFF-C. In modo predefinito viene creato un file AIFF-C, anche se il nome del file non termina con l'estensione '.aiff', viene comunque creato un file AIFF.

setnchannels( nchannels)
Specifica il numero dei canali nel file audio.

setsampwidth( width)
Specifica la misura in byte del campione audio.

setframerate( rate)
Specifica la frequenza di campionamento in frammenti per secondo.

setnframes( nframes)
Specifica il numero di frammenti che devono essere scritti nel file audio. Se questo parametro non viene impostato, o viene impostato non correttamente, il file ha bisogno del supporto per la ricerca.

setcomptype( type, name)
Specifica il tipo di compressione. Se non specificato, i dati audio non saranno compressi. Nei file AIFF, la compressione non è possibile. Il parametro name dovrebbe essere una descrizione comprensibile del tipo di compressione, il parametro type dovrebbe essere una stringa composta da quattro caratteri. Correntemente vengono supportate le seguenti tipologie di compressione: NONE, ULAW, ALAW, G722.

setparams( nchannels, sampwidth, framerate, comptype, compname)
Imposta tutti i parametri in una volta. L'argomento è una tupla consistente nei vari parametri. Questo significa che è possibile usare il risultato di getparams() chiamato come argomento di setparams().

setmark( id, pos, name)
Aggiunge un marcatore con l'id passato (più grande di 0), il nome name passato e la posizione pos passata. Questo metodo può essere chiamato in qualsiasi momento prima di close().

tell( )
Restituisce la corrente posizione di scrittura nel file di output. Utile in combinazione con setmark().

writeframes( data)
Scrive i dati nel file di output. Questo metodo può essere chiamato solo dopo che i parametri del file audio siano stati impostati.

writeframesraw( data)
Come writeframes(), eccetto che l'header del file audio non è aggiornato.

close( )
Chiude il file AIFF. L'intestazione del file viene aggiornata e riflette la dimensione attuale dei dati audio. Dopo aver chiamato questo metodo, l'oggetto non può più essere usato.
Vedete Circa questo documento... per informazioni su modifiche e suggerimenti.