PDA

View Full Version : come vengono rappresentati i file wav?


khri81
16-08-2004, 01:51
sto cercando di fare un codec audio, vorrei prima riuscire a capire come vengono rappresentati i file wav.

so che vengono campionati a 44 khz/sec con risoluzione a 16 bit, ecco quali informazioni vengono scritte all'interno del file wav?

TheFuture
16-08-2004, 10:11
Prova a vedere qui

http://mariottim.interfree.it/doc12b_i.htm

khri81
16-08-2004, 12:46
grazie ho capito alcune cose, l'unica cosa che mi resta da capire è quale informazione venga codificata a 16bit!
da quello che ho capito funziona cosi, la campionatura avviene 44100 volte al sec, x ogni campione viene memorizzata l'ampiezza del segnale audio! ecco dovrebbe essere l'ampiezza che viene codificata a 16 bit!

khri81
16-08-2004, 18:58
up

edivad82
16-08-2004, 19:42
Originariamente inviato da khri81
up
guardalo su un piano cartesiano...l'ascissa (x) è il progressivo dei sample...

l'ordinata (y) è il valore sample con fondo scala (in questo caso) di 16 bit, ovvero 65535

khri81
17-08-2004, 16:50
ciao, ok ho capito, il problema è che quando vado a leggere un file wav con un programmino fatto da me in c, mi trova dei numeri che superano di gran lunga i 65535, cioè il numero max rappresentabile con un intero a 16 bit!
è questo che nn riesco a capire!

avvelenato
17-08-2004, 16:54
Originariamente inviato da khri81
ciao, ok ho capito, il problema è che quando vado a leggere un file wav con un programmino fatto da me in c, mi trova dei numeri che superano di gran lunga i 65535, cioè il numero max rappresentabile con un intero a 16 bit!
è questo che nn riesco a capire!

hai escluso l'header del file?
perché, a meno ché non sia in formato raw pcm, immagino che il wav avrà un header.


btw, ogni numero a 16bit rappresenta il valore istantaneo della pressione acustica (sì, proprio la pressione dell'aria, perché come sai le onde sonore si propagano tramite vibrazioni nell'aria e quindi variazioni della pressione.)

khri81
17-08-2004, 17:15
dovrebbero essere in formato pcm! allora io leggo 2 byte alla volta, aspetta gli headers cosa sarebbero?

khri81
17-08-2004, 17:49
sono in formato wav, quindi ci sono gli headers, come faccio ad escludere tutti i byte che riguardano gli headers e a tenere i byte che codificano l'audio?

avvelenato
17-08-2004, 18:39
l'header è la testata, la parte dove c'è descritto il file, nel sito
http://mariottim.interfree.it/doc12b_i.htm
viene spiegato a puntino.

praticamente dovresti leggerti byte per byte i primi tot bytes, interpretarli (magari mettere un controllo per esser sicuro si tratti di un wav), e arrivato alla parte data potresti leggere due bytes alla volta per trarne un valore.

come farlo praticamente non lo so, non tocco il c / c++ da tantissimo....... :rolleyes: :muro:

khri81
17-08-2004, 19:01
ti ringrazio mi metto al lavoro, programmare nn è un prob sono un programmatore in c++, il programmino è già fatto, solo devo interpretare i byte che leggo dal file wav!
cmq ti ringrazio mi metto all'opera. ;)