Sounds Spielen?



  • So.
    Ich habe mir jetzt al SDL angeguckt, jetzt stellt sich nur die frage,
    wie ich das machen soll??
    (also dann nachher in meinem programm z.. ein lied laufen zu lassen)



  • martinustreveri schrieb:

    So.
    Ich habe mir jetzt al SDL angeguckt, jetzt stellt sich nur die frage,
    wie ich das machen soll??
    (also dann nachher in meinem programm z.. ein lied laufen zu lassen)

    Du musst wohl weitersuchen. Schau Dir die APIs an, und probier damit rum, Wenn Du dann nicht weiter kommst, kannst Du nochmal fragen.



  • Also n gutes SDL tutorial gibt es unter
    http://de.wikibooks.org/wiki/SDL

    Sounds abzuspielen wird hier erklärt
    http://de.wikibooks.org/wiki/SDL:_Audio

    aber fange am besten von vorne an SDL ist echt nicht schwer und man kann
    damit tolle 2d Anwendungen machen

    mfg



  • SDL ist hauptsächlich eine Grafikbibliothek, die übrigens in C geschrieben ist. Um Sound abzuspielen, muss man eine zusätzliche SDL-Lib herunterladen (SDL_mixer). Nur für Sound würde ich das deshalb nicht unbedingt empfehlen. Es gibt viele Soundbibliotheken, die ich jedoch auch nicht genug kenne (z.B. IrrKlang).

    Wenn man 2D-Grafik benötigt, rate ich sowieso zu SFML, das ist schneller, benutzerfreundlicher und bietet auch Objektorientierung, da es in C++ geschrieben ist (gibts übrigens auch für andere Programmiersprachen).



  • Ich gehe mal davon aus dass Du unter Windows unterwegs bist.
    Die einfachste Möglichkeit ist hier wie Du schon richtig vermutet hast die WinAPI Funktion "PlaySound()".

    So kannst Du eine Wav Datei abspielen:

    PlaySound("beispiel.wav", NULL, SND_ASYNC | SND_NODEFAULT);
    

    Und so kannst das Abspielen vorzeitig beenden:

    PlaySound(NULL, NULL, NULL);
    


  • Schöner verpackt:

    #include <windows.h>
    #include <stdio.h>
    //#pragma comment(lib,"winmm.lib")  //für MSV C++  
    
    BOOL play(char *name)
    {
      PlaySound(name, NULL, SND_FILENAME | SND_ASYNC);
      return 0;
    }
    
    int main()
    {  
      play("test.wav");  
      getchar();
      return 0;
    }
    


  • hm..
    way ich hab mir mal den code kopiert und angesehen.

    da kommt dann aber volgende meldung:

    [Link Error] undefines reference to `PlaySoundA@12'
    id returned 1 exit status
    [Build Error] [PlaySound.exe] Error1

    Was hat das zu bedeuten???
    ich habe die datei, die ich abspielen wollte, in "meer" umbennant,
    sie in das verzeichnis kopiert und dann halt playsound...("meer.mp3")
    kann es sein dass es einfach nur mit mp3 nicht funktioniert?!?



  • Es können nur .wav-Musikdateien abgespielt werden...(:
    Falls du den Sound abspielen möchtest, müsstest du dir einen Mp3 to Wav Converter downloaden (:. Frag nach wenn du einen Link haben möchtest, suche dir dann einen raus...



  • Wegen solchen Dingen habe ich Dich an eine Suchmaschine verwiesen. Dann würdest Du nämlich gelesen haben, dass man auch noch zusätzliche Bibliotheken linken muss und einen kleinen Überblick darüber bekommen, wie das ganze überhaupt funktioniert.
    Man hat einen besseren Lerneffekt dabei. Der Lerneffekt beim bloßen kopieren von Quellcode ist dagegen quasi gleich null.



  • Najut, also so einfach ist das nicht, dass man das hier mal schnell posten
    kann... Vorausgesetzt man will den decoder selber schreiben! Wenn nicht,
    dann braucht man das DX-SDK. mit DirectShow geht das.

    Den Download gibts bei microsoft.com (~220MB)
    ->Einfach mal "DirectX SDK" bei der Suche eingaben (natürlich ohne "")



  • way schrieb:

    Schöner verpackt

    ...

    #include <stdio.h>   // der Header heisst immer noch <cstdio>
    
    // Wieso BOOL, wenn es bool gibt? Wieso hat man überhaupt einen
    // Rückgabetypen, wenn man immer 0 zurückgibt? Wieso einen
    // Rückgabetypen, wenn man ihn beim Aufruf nicht einmal abfragt?
    // Ausserdem wäre vielleicht const char* besser als Parametertyp.
    BOOL play(char *name)
    {
      PlaySound(name, NULL, SND_FILENAME | SND_ASYNC);
      return 0;
    }
    

    Ausserdem wundere ich mich ein bisschen wegen der hier präsentierten "Möglichkeiten", um Musik abzuspielen. Zuerst MP3-to-WAV-Converter downloaden, und dann noch das gesamte DirectX-SDK... Naja. Es gibt sicher reine Sound-Bibliotheken, mit denen man sich auch von plattformabhängigen Zwischenlösungen trennen kann.



  • Wenn es unter Windows sein soll, kann man für MP3s auch einfach MCI verwenden:

    std::string filename="d:\\test.mp3";
    mciSendString(("open " +filename+" type MPEGVideo alias myMP3_1").c_str(),0,0,0);
    mciSendString("play myMP3_1 from 0",0,0,0);
    

    Zum Stoppen:

    mciSendString("stop myMP3_1",0,0,0);
    mciSendString("close myMP3_1",0,0,0);
    

    An eine bestimmte Position springen und anhalten geht auch.



  • oha,das hört sich gut an.
    werde gleich mal suchen (ver-)
    ach, eine frage noch:
    wie sieht dieses MCI aus?
    meine damit, ob das ne lib oder ein programm oder was auch immer ist?


Anmelden zum Antworten