Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Format WAV (pytanie) i problem z odczytem danych

Ostatnio zmodyfikowano 2012-10-21 13:39
Autor Wiadomość
RazzorFlame
Temat założony przez niniejszego użytkownika
Format WAV (pytanie) i problem z odczytem danych
» 2012-10-20 11:04:19
Witajcie. Wczoraj zainteresowałem się plikami WAV. Otóż moje pytanie co do tego jest takie: Czy dane w tym pliku przechowywane są w tablicy 1 wymiarowej czy 2 wymiarowej?

I problem z odczytywaniem danych:
Chciałbym sobie odczytać TYLKO dane z tego pliku. Pomijam pierwsze 44 bajty (gów*o mnie obchodzi reszta xD) i później odczytuje po 1 bajcie wartość dźwięku dopóki nie spełni się warunek plik.eof();. Nie znam się bardzo na bibliotece fstream chociaż potrafie troche rzeczy. TZN nie znam się zbytnio na odczytywaniu binarnie zakodowanych danych. Tak wiem że na tej stronie jest lekcja poświęcona właśnie temu. Otóż wiem że mój sposób jest błędny ale chciałbym wiedzieć co byście w tym poprawili (tzn. przy włączeniu programu program się zawiesza i wyłącza, plik wav ma dobrą nazwe i jest w folderze z programem). Zerknijcie na ten kod (pamiętajcie że nie obchodzi mnie pierwsze 44 bajty):
C/C++
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

class WavInfo
{
public:
    vector < int > DATA;
    void ThrowData()
    {
        for( int i = 0; i < DATA.size(); i++ )
        {
            cout << DATA[ i ] << ", ";
        }
    }
   
};



WavInfo loadWavData( char * filename )
{
    fstream plik( filename, ios::in | ios::binary );
    WavInfo pliczek;
    int i = 44;
    char correct[ 44 ];
    plik.read( correct, i );
    char * data;
    while( !plik.eof() )
    {
        plik.read( data, 2 );
        pliczek.DATA.push_back(( int ) data );
    }
    return pliczek;
}

int main()
{
    WavInfo info = loadWavData( "SimpleWAV.wav" );
    info.ThrowData();
    return 0;
}
Pamiętajcie jeszcze że to mój pierwszy kod dotyczący odczytywania pliku WAV
P-67113
DejaVu
» 2012-10-20 19:50:12
Powinieneś zapoznać się ze specyfikacją zapisu danych w formacie WAV. Osobiście rekomenduję użyć jakiejś popularnej biblioteki do obsługi dźwięku (np. OpenAL - licencja LGPL bodajże).
P-67150
m4tx
» 2012-10-20 20:05:51
Osobiście rekomenduję użyć jakiejś popularnej biblioteki do obsługi dźwięku (np. OpenAL
OpenAL nie służy do wczytywania plików dźwiękowych. Jest to API podobne do OpenGL - w OpenGL-u też musisz samemu dbać o wczytywanie tekstur :)

licencja LGPL bodajże
No cóż - akurat nie. OpenAL to (o zgrozo) zamknięte oprogramowanie... (chyba, że mówimy o otwartych implementacjach, np. OpenAL Soft na LGPL-u właśnie).
P-67155
DejaVu
» 2012-10-20 20:48:22
http://enigma-dev.org/forums/index.php?topic=730.0

To, że biblioteka jest niskopoziomowa to nie znaczy, że nie da się jej do dźwięku wykorzystać ;)
P-67170
m4tx
» 2012-10-20 21:59:12
@up w tym co dałeś, OpenAL jest używany praktycznie tylko do odtworzenia wczytanego wcześniej własnym algorytmem dźwięku :P
P-67192
RazzorFlame
Temat założony przez niniejszego użytkownika
» 2012-10-21 11:34:58
Po first m4tx zawsze sie kłócisz :P Po drugie zależy mi na tym aby nie wykorzystywać plików DLL bo kiedyś mógłbym zrobić gre online i ktoś by se lewe DLLki podrzucał xD. Chciałbym poznać co jest źle w tym kodzie aby go móc przerobić.
P-67207
m4tx
» 2012-10-21 11:44:30
Po first m4tx zawsze sie kłócisz :P
Jak uważam, że ktoś nie ma racji, to próbuję to naprostować - logiczne chyba, nie? :)

Po drugie zależy mi na tym aby nie wykorzystywać plików DLL bo kiedyś mógłbym zrobić gre online i ktoś by se lewe DLLki podrzucał xD
Taa... Lewe DLL-ki do dźwięku. Dodają echo i dźwięk wody...
W każdej normalnej, chociaż trochę zaawansowanej grze wykorzystywane są biblioteki współdzielone... Ich brak to czysta głupota ze strony twórców gry. Jak ktoś będzie chciał to i tak se lewe DLL-ki podrzuci, więc nie widzę sensu w tym, co piszesz... A tak poza tym - wiesz jakie jest najlepsze zabezpieczenie przed "lewymi DLL-kami"? Wykonywać wszystkie ważniejsze obliczenia na serwerze; nie ufać klientom... Ofc., będą istniały różne wallhacki czy inne oszustwa, ale przed tym już się w żaden sposób nie uchronisz. Zresztą, nie myśl o grach online, bo do nich jeszcze masz z tego co widzę dłuuugą drogę... :)

Chciałbym poznać co jest źle w tym kodzie aby go móc przerobić.
DejaVu dał Ci kod, który otwiera pliki Wave - czegoż jeszcze chcesz?

I tradycyjnie już powiem: nie widzę kompletnie sensu używania własnych algorytmów do elementarnych rzeczy. Twój algorytm nigdy nie będzie lepszy od już wymyślonego. A poza tym nie polecam używać plików WAV, a już tym bardziej do gry online. Jak ty sobie wyobrażasz pobieranie ich przez internet? Tekstury też pewnie w BMP trzymasz, co? ;P Używaj PNG, JPEG i OGG - nikomu krzywda się nie stanie, a Ty tylko zyskasz... :)
P-67210
RazzorFlame
Temat założony przez niniejszego użytkownika
» 2012-10-21 11:59:23
Filozof sie znalazł :D
I po pierwsze już robiłem w OGG. Po drugie nawet jeżeli długa droga to jednak muszę ją odbyć i wkońcu będę potrafił to zrobić jednak ty niezbyt mi w tym pomagasz bo prosiłem o to aby ktoś powiedział co źle w tym kodzie a nie żeby mi ktoś mówił jakich formatów używać. Ale jednak dzięki za to że próbujesz pomóc, ale sprawdzałem już strukture pliku OGG i jednak jest troche dziwna. WAV mi odpowiada więc chce się za to zabrać. Tak trzymam pliki w BMP i wiem że PNG jest kompresowane ale jednak ja też znalazłem sposób na skompresowanie (chodzi mi tylko do gry) pliku BMP i to o dość dużo. Skorzystam jednak z linku który podał mi DejaVu.
P-67212
« 1 » 2
  Strona 1 z 2 Następna strona