Obliczanie amplitudy dzwięku z pliku WAV

0

Witam. Piszę program dzięki któremu będę mógł wizualizować amplitudę odtwarzanego dźwięku, używam do tego biblioteki XAudio2 jak do tą udało mi się napisać program który poprzez analizę pliku WAV ląduje mi go do pamięci oraz potrafi go odtwarzać.
Zastanawiam się dokładnie co stanowią bity po "data" w strukturze pliku RIFF, w jaki sposób reprezentują one dźwięk oraz jak wyliczyć amplitudę dźwięku. W dokumentacji niezbyt obszernie napisali co dokładnie znajduje się w strukturze 'XAUDIO2_BUFFER' w obiekcie 'const BYTE *pAudioData' : "Pointer to the audio data."
http://msdn.microsoft.com/en-us/library/windows/desktop/microsoft.directx_sdk.xaudio2.xaudio2_buffer(v=vs.85).aspx
A w internecie ciężko jest znaleźć cokolwiek co jest związane z tą biblioteką. Będę wdzięczny za jakieś wytłumaczenie oraz wskazówki.

1

Zastanawiam się dokładnie co stanowią bity po "data" w strukturze pliku RIFF
To zależy, plik WAV może być zakodowany w dowolnym formacie, włącznie z MP3.

Ale zakładając że jest to tzw. nieskompresowany WAV, to dane są w formacie PCM, czyli kolejne wartości próbek, jak na oscyloskopie.
W formacie 16-bitowym stereo na jedną próbkę przypadają cztery bajty: dwie liczby typu signed short, jedna dla lewego a druga dla prawego głośnika. Kolejności nie pamiętam. Poziom neutralny to wartość 0, czyli ciąg zer oznacza ciszę.
Próbek jest typowo 44100 albo 48000 na sekundę.

Amplituda to maksymalne odchylenie od zera (na plus albo na minus) sygnału, w zadanym przedziale czasu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1