Sound abspielen!



  • HI
    ich suche eine funktion in der mfc mit der ich einfache .wav sounds abspielen lassen.

    hierzu hatte ich bereits PlaySound verwendet, jedoch hat PlaySound das Wave file nur ca 10 sek abgespielt und dann abgebrochen.

    Danke schon mal im voraus!

    Ulath



  • Hast du es denn mal mit verschiedenen Flags versucht ?



  • jo zumindest die mir plausibel klingenden...
    naja ich werd die noch mal der reihe nach durchtesten



  • hmm also wenn ich den sound asynchron apsppeiele, d.h. das er spielt und die applikation wwärend dessen weitergeht dann speilt er den ganzen ...
    jedoch muss meine applikation darauf warten bis der sound abgespielt ist.
    jemand ne ahnung wie ich herausbekomme wie lang ein wave file ist ?

    also die datenrate ist ja 16bit*44100 = 705600 bits/s
    aber wie groß ist der header von so einem wave file und kann man da evtl acuh gleich samplerate usw auslesen ?



  • also ich habe volgendes durch googlen usw herausgefunden:

    1. der Header einer Wave datei ist folgendermaßen aufgebaut:

    struct Standard_Wave_Header
    {
    	long Riff;								// Sollte immer "RIFF" enthalten = 1179011410
      long  Rl;									// Groesse des folgenden "Chunks"
      long  Typ;								// Typinformation 4 byte "WAVE" = 1163280727
      long  Fmt;								// Muss "fmt " enthalten = 544501094
      long  CSize;							// Chunksize
      int  Tag;									// Meist unbenutzt
      int  nChan;								// Zahl der Kanäle
      long  sps;								// Samples pro Sekunde
      long  Bps;								// Bytes pro Sekunde
      int  Bla;									// Blockalign (Byte pro Sample)
      int  Sl;									// Samplelänge
      long  Data;								// Muss "DATA" enthalten = 1096040772
      long Dl;									// Datenlänge
    };
    

    2. ich habe den mal einfach eingelesen und dann Datenlänge / (samplelänge * samples/sek) gerechnet und dachte dabei sollte die länge des sounds rauskommen.

    Standard_Wave_Header bla;
    
    	char blub[100];
    	FILE *pFile;
    
    	pFile = fopen("D:\\projekte\\FLB\\geräusche\\Luft_40.5dB(A)_10_Jet.wav", "rb");
    	fread(&bla, sizeof(Standard_Wave_Header), 1, pFile);
    
    	long bla2 = bla.Dl/(bla.Sl*bla.sps);
    
    	MessageBox(NULL, _itoa(bla2, blub, 10), "Bps", MB_OK);
    
    	fclose(pFile);
    

    -> leider ist irgendwie die Datenlänge immer 0.
    vieleicht kann mir ja einer weiterhelfen !

    DANKE !



  • du könntest es statt mit der mci-lösung mal mit fmod versuchen.
    hier is der link http://www.fmod.org
    steht alles in der documentation und wenn du weitere fragen zum auslesen der soundlänge und so weiter in fmod hast: einfach mal mitteilen und dann werd ich dir beispielcode posten ok?


Anmelden zum Antworten