Problem beim Abspielen eines Soundbuffers
-
Hi,
will mit PlaySound den in einer WAVEHDR enthaltenen Sound abspielen. Dazu rufe ich die Funktion wie folgt auf:
PlaySound(WaveHeader.lpData, 0, SND_MEMORY | SND_ASYNC);Klappt leider nicht. Kann mir da wer helfen?
Gruß
AlexPs. Die Daten sind auch wirklich in der Struktur, da das ganze als File gespeichert funktioniert.
-
[url=http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wcewave/html/_wcesdk_win32_playsound.asp]BOOL WINAPI PlaySound(
LPCSTR pszSound,
HMODULE hmod,
DWORD fdwSound
)[/url]Edit:
Ich denke, du musst die ganze Datei im Speicher übergeben. Nicht nur den Datenteil der .WAV.
-
Ok, thx.
Aber wie kann ich das dann machen?
-
krötenlecker schrieb:
Ok, thx.
Aber wie kann ich das dann machen?
Ich vermute nur, dass das so ist. Wenn, dann so:
char* buf[1024*200]; FILE* fp; fp = fopen("datei.wav", "rb"); if (fp != NULL) { fread(buf, 1024, 200, fp); fclose(fp); PlaySound(buf, 0, SND_MEMORY | SND_ASYNC); }
-
Ja, aber dann lade ich die Datei ja.
Ich habe aber Daten im Speicher, die ich gerade erst generiert habe.
-
Also ich würde sagen, dass die Funktion PlaySound schon richtig angewandt wurde, jedoch
der adressierte Speicherbereich, indem die abzuspielenden Musikdaten liegen sollten,
fehlerhaft ist.
-
Also die Daten müssten eigendlich im Speicher sein, da ich sie auch zu Debugzwecken in eine .wav-Datei schreiben lasse. Das funktioniert.
-
Habe jetzt die waveOut...-Funktionen entdeckt. Nur ist das MSDN da wieder alles andere als übersichtlich. Könnte jemand mal drei Zeilen Code posten, wie ich so einen Datenpuffer wie oben abspielen und anhalten kann? Danke!
-
HWAVEOUT wo; waveOutOpen(&wo, WAVE_MAPPER, &wf, 0, 0, CALLBACK_NULL); waveOutPrepareHeader(wo, &wh, sizeof(WAVEHDR)); waveOutWrite(wo, &wh, sizeof(WAVEHDR)); waveOutUnprepareHeader(wo, &wh, sizeof(WAVEHDR)); waveOutReset(wo); waveOutClose(wo);Ist das so richtig?
Manchmal bekomme ich den Sound sogar ausgegeben. Brauche aber eine perfekt laufende Lösung.
Ach ja, waveOutUnprepareHeader schlägt manchmal fehl!?
Danke für Hilfe!