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. ;)

Hardware Upgrade Forum Database Error
Database Error Database error
The Hardware Upgrade Forum database has encountered a problem.

Please try the following:
  • Load the page again by clicking the Refresh button in your web browser.
  • Open the www.hwupgrade.it home page, then try to open another page.
  • Click the Back button to try another link.
The www.hwupgrade.it forum technical staff have been notified of the error, though you may contact them if the problem persists.
 
We apologise for any inconvenience.