Normlalizacja danych z pliku WAV

0

Cześć,

Próbuję wyciągnąć dane z pliku WAV i przekonwertować je na vector. Zupełnie tak jak działa funkcja wavread w MATLABIE.
Korzystam z Qt. Mam już cały nagłówek pliku WAV po jego otwarciu. Plik otwierałem przez QFile.


char* result = new char[sizeWAV]; // tablica rozmiaru pliku WAV
short* result_raw = (short*)result; // rzutowanie na short, ponieważ rozmiar próbki to 2 bajty

double vector = new double[sizeWAV / 2];

.... // przypisanie danych z nagłówka???


for(int i = 0; i < sizeWAV / 2; i++)
{
       vector[i] = result_raw[i] / 32768.0; // dzielę przez zakres 16bit (taki mam WAV), żeby orzymać vector liczb w zakresie -1 do 1
}

I mój problem polega na tym jak przypisać dane z nagłówka, żeby póżniej je normalizować w pętli.

0

OK, dziękuję.
Liczyłem na 2 zdania komentarza, przewertowałem sporo informacji o pliku, ale sama ta jedna operacja sprawiła mi problem.

0

No to dwa zdania.
Wczytać nagłówek, sprawdzić czy plik jest w pożądanym formacie (PCM, 16-bitowy, stereo czy mono) i znaleźć offset pod którym w pliku zaczynają się właściwe dane.
Wczytać dane.

0

Widzę, że jesteś bardzo dosłowny :D
Nagłówek wczytany mam. Jest on w takim formacie:

    char RIFF[4];
    qint32 dlugoscWbajtach;
    char WAVE[4];
    char fmt_[4];
    qint32 dlugoscBloku;
    qint16 format;
    qint16 kanaly;
    qint32 czestotliwoscProbkowania;
    qint32 bajtySek;
    qint16 bajtyProb;
    qint16 bitProb;
    char data[4];
    qint16 waveRozmiar;

Chodzi mi o samo przypisanie danych z nagłówka, tak żebym je następnie mógł znormalizować.
Format = 1, więc PCM.

0

Nagłówek wczytany mam. Jest on w takim formacie:

Format nieprawidłowy. Nie ma gwarancji, że chunk data następuje od razu za fmt .

Prawidłowo powinno się sprawdzać kolejne chunki aż natrafi się na data.

Doczytaj jak jest zbudowany plik .wav.

0

Pisałem już tu komuś kod do wczytywania RIFF w Qt, nic tylko wyszukać copy paste i gotowe.

0

http://4programmers.net/Forum/1113605 <--- tu masz kod czytający poprawnie plik wav.

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