WAV Datei einlesen (DirectSound?)
-
Hi zusammen ich hab heute und Gestern eigentlich nichts anderes gemacht, als zu schauen wie man am besten mit WAV files umgeht.
Kann mir einer von euch sagen, wie ich WAV-Files am besten einlese?
Ist es nötig DirectSound zu verwenden?Ich hab mal versucht einfach mit fopen binär einzulesen, aber ich hatte immer nur "RIFF|||" drin stehen. Wo bleibt da der Rest?
Ich hab es so versucht:char* CWavefunctions::ReadWavToBuf(CString File, CString readtype) { FILE *src; char *buf, *fail;//TODO: Set Error to fail long size; /* Open for read (will fail if file "data" does not exist) */ if( (src = fopen( File, readtype )) == NULL ) return fail; //handle open error /* Read source file into buffer */ fseek(src, 0, SEEK_END); size = ftell(src); rewind(src); buf = (char *)malloc(size); if (fread(buf, 1, size, src) != size) return fail; // handle read error fclose(src); return buf; }
P.S.: Wenn es von interesse ist, ich will die Wav-Files einlesen, um dann nach bestimmten FFTs DFTs etc. bestimmte Soundstrukturen erkennen können. Ich hab ein immer recht ähnliches Geräusch eines Motors. Jetzt soll ich erkennen ob er schleift, zu hoch dreht ...
-
Wer sagt dir das da nur RIFF drin steht? Bedenke: WAV sind binäre Daten. Keine Strings.
-
So schwer ist das Format eigentlich nicht, wenn man bestimmte Vorrausetzungen vorher festlegt. Z.B. nur unkomprimierte PCM Daten 1 oder 2Kanal (Die meisten Soundprogramme können sowieso nur das abspeichern.)
http://www.borg.com/~jglatt/tech/wave.htm
Aufpassen musst du noch, dass bei 8 Bit die Samples ohne vorzeichen und bei 16 Bit als vorzeichenbehaftete shorts vorliegen.
-
Gibt doch auch Winapi Funktionen dafuer oder nicht??
-
junix schrieb:
Wer sagt dir das da nur RIFF drin steht? Bedenke: WAV sind binäre Daten. Keine Strings.
Na meine Entwicklungsumgebung im Debugmode. Da stand in meinem Buff immer nur das zitierte drin.
SeppSchrot schrieb:
So schwer ist das Format eigentlich nicht, wenn man bestimmte Vorrausetzungen vorher festlegt...
Naja noch bin ich nicht ganz deiner Meinung, aber vielleicht wird das noch. ICh habe so ziemlich alles schon fest gelegt. Ich hab unkomprimierte PCM 8Bit 1 Kanal. Wie kann ich jetzt da was einlesen? Bzw wie kann ich da jetzt alles einlesen (s.o.)
RIFFer schrieb:
Gibt doch auch Winapi Funktionen dafuer oder nicht??
mag gut sein aber momentan hab ich noch nichts gefunden was mich wirklich weiter gebracht hat.
Es kann doch bestimmt nicht so schwer sein die binären Daten zu bekommen. Kann mir einer sagen was mit meinem oben geposteten Source falsch ist? Oder kann mir jemand sagen wie ich sonst dran kommen könnte?
Vielen Dank schon mal im Voraus.
~P.S.: Tut mir leid dass ich mich erst wieder jetzt melde, aber das WE war zu stressig! :D~
.