File WAV e loro strutturazione


I file WAV costituiscono uno dei tanti tipi di file multimediali che contengono registrazioni acustiche.
Per capirne la strutturazione nei minimi dettagli potremmo suddividerlo in tre parti:
1. Intestazione
2. Parte sonora
3. Informazioni registrazione


Strutturazione intestazione
L'intestazione contiene alcuni attributi che riguardano il tipo di registrazione.
In questo modo quando un software multimediale apre un file WAV possiede già le informazioni necessarie per poter riprodurre o modificare correttamente la registrazione.
Questa intestazione assume una lunghezza che generalmente varia dai 44 ai 46 byte, ed è essenzialmente costituita dai seguenti record:


In questa immagine tratta da Edit si può osservare l'intestazione di una registrazione WAVE con frequenza 44100Hz (campo 7), 16 bit (campo 10), stereo (campo 6).
Trovare la strutturazione dell'intestazione di un file WAV è stato possibile facendo il confronto tra più file.
Questo metodo consiste nel creare alcune registrazioni vuote ma con attributi diversi.
Gli attributi di una registrazione sono:
- Frequenza
- Bit per campione
- Fonia

I file di prova, che consistono in registrazioni vuote ma con diverse proprietà, si trovano nella directory "Test"


Dopo di questo se si effettuano dei confronti tra questi piccolissimi file (per es. tra una registrazione mono e una stereo), si riesce a notare quali sono i byte all'interno del file, quindi i campi, che cambiano.


1.
- Descrizione: parola riservata
- Dimensione dato: 4 byte
- Tipo di dato: stringa da 4 caratteri
- Valore predefinito: "RIFF"

2.
- Descrizione: dimensione file (espressa in byte)
- Dimensione dato: 4 byte
- Tipo di dato: intero a 32 bit

3.
- Descrizione: parola riservata
- Dimensione dato: 8 byte
- Tipo di dato: stringa da 8 caratteri
- Valore predefinito: "WAVEfmt "

4.
- Descrizione: dimensione (espressa in byte) campi successivi fino al campo 11 escluso
- Dimensione dato: 4 byte
- Tipo di dato: intero a 32 bit

5.
- Descrizione: formato audio
- Dimensione dato: 2 byte
- Tipo di dato: intero a 16 bit
- Valori predefiniti:
1: PCM
<altri valori>: <formati non PCM>

6.
- Descrizione: fonia
- Dimensione dato: 2 byte
- Tipo di dato: intero a 16 bit
- Valori predefiniti:
1: Mono
2: Stereo

7.
- Descrizione: frequenza campionamento (espressa in Hz)
- Dimensione dato: 4 byte
- Tipo di dato: intero a 32 bit

8.
- Descrizione: byte registrati per secondo
- Dimensione dato: 4 byte
- Tipo di dato: intero a 32 bit

9.
- Descrizione: byte per campione
- Dimensione dato: 2 byte
- Tipo di dato: intero a 16 bit
- Valori predefiniti da assegnare con registrazioni:
1: 8 bit, mono
2: 16 bit, mono
2: 8 bit, stereo
4: 16 bit, stereo

10.
- Descrizione: numero bit per campionamento
- Dimensione dato: 4 byte
- Tipo di dato: intero a 32 bit

11.
- Descrizione: parola riservata
- Dimensione dato: 4 byte
- Tipo di dato: stringa da 4 caratteri
- Valore predefinito: "data"

12.
- Descrizione: lunghezza parte sonora (espressa in byte)
- Dimensione dato: 4 byte
- Tipo di dato: intero a 32 bit
13. (Non necessariamente presente)
- Descrizione: parola riservata
- Occorrenza: solo se il valore dell'ultimo campo è diverso da 0
- Posizione: dopo il 10° campo
- Dimensione dato: 4 byte
- Tipo di dato: stringa da 4 caratteri
- Valore predefinito: "fact"

14. (Non necessariamente presente)
- Descrizione: dimensione campo 15 (espressa in byte)
- Occorrenza: solo se il valore dell'ultimo campo è diverso da 0
- Posizione: dopo il 13° campo
- Dimensione dato: 4 byte
- Tipo di dato: intero a 32 bit
- Valore predefinito: 4d

15. (Non necessariamente presente)
- Descrizione: numero campioni
- Occorrenza: solo se il valore dell'ultimo campo è diverso da 0
- Posizione: dopo il 14° campo
- Dimensione dato: 4 byte
- Tipo di dato: intero a 32 bit

Strutturazione parte sonora
La parte sonora può essere a 8 o a 16 bit.
In ambedue i casi può essere costituita da uno o due canali.
Nel caso di una registrazione a 8 bit mono un byte corrisponde ad un suono, mentre se la registrazione è stereo un suono corrisponde a due byte, poiché vi è un suono per canale.
Nel caso di una registrazione a 16 bit mono due byte corrispondono ad un suono, mentre se la registrazione è stereo un suono corrisponde a quattro byte, poiché vi è un suono per canale.


In particolare in una registrazione a 8 bit il range dei valori rappresentabili delle ampiezze è compreso tra -128 e +127, mentre in una registrazione a 16 bit questo range varia da -32768 a +32767.

Strutturazione informazioni registrazione
Le informazioni sulla registrazione che solitamente si possono trovare in un file WAV sono:
- Copyright
- Artista
- Nome
- Sorgente
- Prodotto
- Soggetto

Tali informazioni sono rintracciabili nella parte finale del file a partire dalla fine della parte sonora.
È necessario fare un'osservazione: le informazioni di tag di una registrazione WAVE di solito sono reperibili visualizzando la scheda proprietà - dettagli del file interessato, ma questo procedimento è funzionante soltanto in ambienti Windows 95 e Windows 98.
Se invece si lavora sotto ambienti come Windows 2000 o Windows XP le informazioni sulle registrazioni, inspiegabilmente, non sono visibili da nessun programma, anche se sono effettivamente presenti all'interno del file.
I tag delle informazioni relative ad una registrazione WAVE a partire dal termine della parte sonora sono disposti in questo modo:

--> Accodare 0d

1.
- Descrizione: parola riservata
- Dimensione dato: 4 byte
- Tipo di dato: stringa da 4 caratteri
- Valore predefinito: "LIST"

2.
- Descrizione: dimensione totale (espressa in byte) campi informazioni
- Dimensione dato: 4 byte
- Tipo di dato: intero a 32 bit

3.
- Descrizione: parola riservata
- Dimensione dato: 4 byte
- Tipo di dato: stringa da 4 caratteri
- Valore predefinito: "INFO"

4.
- Descrizione: parola riservata
- Dimensione dato: 4 byte
- Tipo di dato: stringa da 4 caratteri
- Valore predefinito: "ICOP"


5.
- Descrizione: dimensione (espressa in byte) campo successivo + 1
- Dimensione dato: 4 byte
- Tipo di dato: intero a 32 bit

6.
- Descrizione: copyright
- Dimensione dato: variabile
- Tipo di dato: stringa di lunghezza variabile

--> Se lunghezza stringa copyright = pari allora
accodare 0d una volta
altrimenti
accodare 0d due volte

7.
- Descrizione: parola riservata
- Dimensione dato: 4 byte
- Tipo di dato: stringa da 4 caratteri
- Valore predefinito: "IART"

8.
- Descrizione: dimensione (espressa in byte) campo successivo + 1
- Dimensione dato: 4 byte
- Tipo di dato: intero a 32 bit

9.
- Descrizione: artista
- Dimensione dato: variabile
- Tipo di dato: stringa di lunghezza variabile

--> Se lunghezza stringa artista = pari allora
accodare 0d una volta
altrimenti
accodare 0d due volte

10.
- Descrizione: parola riservata
- Dimensione dato: 4 byte
- Tipo di dato: stringa da 4 caratteri
- Valore predefinito: "INAM"

11.
- Descrizione: dimensione (espressa in byte) campo successivo + 1
- Dimensione dato: 4 byte
- Tipo di dato: intero a 32 bit

12.
- Descrizione: nome
- Dimensione dato: variabile
- Tipo di dato: stringa di lunghezza variabile

--> Se lunghezza stringa nome = pari allora
accodare 0d una volta
altrimenti
accodare 0d due volte

13.
- Descrizione: parola riservata
- Dimensione dato: 4 byte
- Tipo di dato: stringa da 4 caratteri
- Valore predefinito: "ISRC"

14.
- Descrizione: dimensione (espressa in byte) campo successivo + 1
- Dimensione dato: 4 byte
- Tipo di dato: intero a 32 bit

15.
- Descrizione: origine
- Dimensione dato: variabile
- Tipo di dato: stringa di lunghezza variabile

--> Se lunghezza stringa origine = pari allora
accodare 0d una volta
altrimenti
accodare 0d due volte

16.
- Descrizione: parola riservata
- Dimensione dato: 4 byte
- Tipo di dato: stringa da 4 caratteri
- Valore predefinito: "IPRD"

17.
- Descrizione: dimensione (espressa in byte) campo successivo + 1
- Dimensione dato: 4 byte
- Tipo di dato: intero a 32 bit

18.
- Descrizione: prodotto
- Dimensione dato: variabile
- Tipo di dato: stringa di lunghezza variabile

--> Se lunghezza stringa prodotto = pari allora
accodare 0d una volta
altrimenti
accodare 0d due volte

19.
- Descrizione: parola riservata
- Dimensione dato: 4 byte
- Tipo di dato: stringa da 4 caratteri
- Valore predefinito: "ISBJ"

20.
- Descrizione: dimensione (espressa in byte) campo successivo + 1
- Dimensione dato: 4 byte
- Tipo di dato: intero a 32 bit

21.
- Descrizione: soggetto
- Dimensione dato: variabile
- Tipo di dato: stringa di lunghezza variabile

--> Se lunghezza stringa soggetto = pari allora
accodare 0d una volta
altrimenti
accodare 0d due volte

Torna all'indice