PlaySound(); Problem



  • Danke
    aber wenn ich das reinschreibe dann bekomme ich immer noch die genau gleichen Fehlermeldungen!



  • Liegt daran das DevC++ mit "#pragma comment(lib..)" nichts anfangen kann (Ist glaube ich was Micorosoft-spezifisches...)

    Du musst die winmm.lib irgendwo anders direkt bei DevC++ eintragen.
    DevC++ benutzt glaube ich MingW als Compiler, da wird die Lib vermutlich "winmm.a" heissen müssen...

    (Ist DevC++ nicht seit Jahren ein totes Projekt? Ich dachte die Leute wären inzwischen alle auf Code::Blocks, Visual Studio Express Edition oder eclipse oder sonstwas umgestiegen...)



  • Ja aber gibt es da nicht vieleicht eine alternatife um Sound Dateien abzuspielen?
    Wenn nicht dann schreibt mir bitte mal einen Link von dem bessten C++ Compeiler den es momentan gibt. 😃



  • Man kann doch in DevC++ bestimmt auch Libs angeben. Wenn nich, einige gut wären Codeblocks und Visual Studio.



  • Projekt Optionen->Linker Optionen die Bezeichnung "-lwinmm" ohne Anführungszeichen angeben.



  • Ich habe es geschafft ich habe einfach meinen Compeiler upgedatet
    vorher 4.9.4.1
    jetzt 4.9.8.0

    und libwinmm.a in den Projekt Optionen eingebunden.
    :D:):D



  • JoelW schrieb:

    Ja aber gibt es da nicht vieleicht eine alternatife um Sound Dateien abzuspielen?

    http://www.fmod.org/

    Ist eine ziemlich gute Alternative zu den Windowsfunktionen mit vielen Optionen.
    Ich verwende des sehr gern.



  • Ich habe nochmal eine ähnliche Frage.
    Wie kann ich die Datei im Hintergrund in der Endlosschlaufe laufen lassen?
    (Ohne das ich darauf warten muss das die Musik fertig abgespielt ist.)



  • Versuche es mal mit SND_ASYNC:

    PlaySound("test.wav", NULL,SND_LOOP | SND_ASYNC);

    SND_ASYNC
    The sound is played asynchronously and PlaySound returns immediately after beginning the sound. To terminate an asynchronously played waveform sound, call PlaySound with pszSound set to NULL.

    SND_SYNC
    Synchronous playback of a sound event. PlaySound returns after the sound event completes.



  • Danke aber wenn ich es so schreibe dann kommt immer die Fehlermeldung:

    stray '/246' in program

    Wenn ich das | durch das Zeichen ersetze das so wie ein I ausseht,
    dann compliert er es zwar aber die .wav Datei wird nur abgespielt bis ich eine andere .wav Datei abspiele.
    Ich möchte aber eigentlich das die .wav Datei solange abgespielt wird bis ich es mit einem Befehl abbreche.

    Wie geht das und wie breche ich es sonst ab?



  • JoelW schrieb:

    Danke aber wenn ich es so schreibe dann kommt immer die Fehlermeldung:

    stray '/246' in program

    Wenn ich das | durch das Zeichen ersetze das so wie ein I ausseht,

    Das Zeichen, was wie ein I aussieht, nennt sich PIPE und dient als Bitoperator mit der Funktion OR. Siehe hierzu in einem Tutorial für Bitoperatoren nach 😉

    JoelW schrieb:

    dann compliert er es zwar aber die .wav Datei wird nur abgespielt bis ich eine andere .wav Datei abspiele.

    Richtig. Wenn du bei Start einer anderen Datei die erste nicht Beenden willst, so musst du "SND_LOOP | SND_ASYNC | SND_NOSTOP" schreiben. Bedenke, dass die 2. Datei aber NICHT nebenbei läuft.

    JoelW schrieb:

    Ich möchte aber eigentlich das die .wav Datei solange abgespielt wird bis ich es mit einem Befehl abbreche.

    Ich vermute, dass hast du schon. Hier muss als 1. Parameter der Funktion PlaySound NULL angegeben werden. Danach kannst du die 2. Sounddatei abspielen.

    Zusaetzlich empfehle ich noch die Doku, die eigentlich alles weitere enthalten sollte
    http://msdn.microsoft.com/en-us/library/aa909766.aspx



  • PROBLEMME ⚠
    1.Zum zweiten mal wenn ich ein | mache kommt die Fehlermeldung stray '/246' in program!
    2.Ich will aber das zwei .wav dateien gleichzeitig laufen! da gibt es doch sicher einen Befehl dafür.
    Bitte helft mir 😞



  • JoelW schrieb:

    1.Zum zweiten mal wenn ich ein | mache kommt die Fehlermeldung stray '/246' in program!

    Schmeiss den DevC++ in den Muell. Verwende, wie schon erwaehnt, Codeblocks oder Visual Studio. Die sind ebenfalls kostenlos und machen weniger Probleme. 😉

    JoelW schrieb:

    2.Ich will aber das zwei .wav dateien gleichzeitig laufen! da gibt es doch sicher einen Befehl dafür.
    Bitte helft mir

    Ich bin mir sicher, dass das in den vorherigen Post's nicht drin stand. So wirst
    du mit deinem Programm nie fertig, wenn du immer nur haeppchenweisse mit deinen Informationen rausrueckst :D.
    PlaySound ist dafuer glaube ich nicht geschaffen, da dies nur ueber einen Kanal laeuft.
    Schau mal hier:
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-256383.html
    http://msdn.microsoft.com/en-us/library/dd757161(VS.85).aspx

    Wenn du umfangreichere Dinge mit Sounds machen willst, so hab ich bereits auf fmod hingewiessen.



  • Nein wenn es auch nur Irgendwie umgehbar ist dann bleibe ich bei meinem Compeiler!:D

    Dieses Beispiel funktioniert zwar aber könnte ich das auch in der Endlosschleife abspielen?
    Wenn ja wie?

    #include <conio.c>

    int main()
    {
    char data[100];
    sprintf(data,"open %s",test.mp3");
    mciSendString(data,NULL,0,NULL);
    sprintf(data,"play %s from 0","test.mp3");
    mciSendString(data,NULL,0,NULL);
    printf("play test.mp3\n");
    PlaySound("test.wav",NULL,SND_SYNC);
    printf("play test.wav\n");
    for( ; ; ){}
    }



  • Laut Doku von hier
    http://msdn.microsoft.com/en-us/library/dd743667(VS.85).aspx

    ist es für den Typ "waveaudio" nich moeglich, repeat anzugeben.
    Es sei denn, ich werde eines besseren belehrt.



  • Entschuldigung aber ich verstehe kein Wort.:(
    (Ich verwende doch gar kein waveaudio.)
    Also frage ich nochmal wie kann ich die Hintergrundmusik in der Endlosschleife abspielen?



  • Warum liest du nicht den Artikel, den ich dir geschickt habe,
    WARUM NUR WARUM? 😃

    // 2. Zeile
    digitalvideo	from positionfullscreen [b]repeat[/b]	reverse to positionwindow
    

    repeat ist hier nur fuer digitalvideo moeglich. Ich vermute, du spielst kein Video ab?



  • Ich habe es doch gelesen aber ich verstehe nicht was das mit meinem Problem zu tun hat.
    Ich verwende doch gar kein waveaudio!
    Und man kann die Hintergrundmusik doch sicher irgendwie in der Endlosschleife abspielen.
    Wenn man dafür einen anderen Befehl braucht dann sag mir bitte welchen,
    und wenn es möglich ist möchte ich das mit den Dateien machen die bei meinem Compeiler dabei sind.



  • *HMMMPFFFFFFFF*

    Vielleicht hilft dir das weiter. Da kannst du die Laenge des Tracks auslesen.
    Da solltest du dann eventuell Threads verwenden.

    char sReturn[128];
    int ms;
    
    memset(sReturn,0,sizeof(sReturn));
    
    mciSendString("open start.wav type MPEGVideo alias mp3audio", NULL,0,NULL);
    mciSendString("status mp3audio length", sReturn, sizeof(sReturn), NULL);
    
    ms = atoi(sReturn);
    
    while(true)
    {
    	mciSendString("play start.wav from 0 repeat",NULL,0,NULL);
    	Sleep(ms);
    }
    


  • Hallo,

    JoelW schrieb:

    PROBLEMME ⚠
    1.Zum zweiten mal wenn ich ein | mache kommt die Fehlermeldung stray '/246' in program!
    2.Ich will aber das zwei .wav dateien gleichzeitig laufen! da gibt es doch sicher einen Befehl dafür.
    Bitte helft mir 😞

    1. Der Editor deiner IDE kann ein Zeichen nicht verarbeiten. Entferne dieses Zeichen aus den Quellcode. Das kommt meist daher, dass man von irgendwo Code kopiert und in den Editor einfügt.
    2. Starte die Dateien direkt nacheinander. Für den Menschen sind die paar Nanosekunden nicht wahrnehmbar, du spielst sie quasi gleichzeitig ab.


Anmelden zum Antworten