Musik in C++ exe einbinden?!?



  • Naja, was die Umsetzung angeht: Kommt ganz darauf an was du vorhast.

    Du kannst die Musik als Ressource hinzufügen und auf bei Bedarf auf die Festplatte speichern (siehe die VCL FAQ in dem Forum).
    Ich habe noch nicht ausprobiert eine Audiodatei direkt von einem Puffer abzuspielen.

    EDIT:
    Gib nochmal ein bisl background info.
    Wie viele Dateien willst du denn spielen, wie groß (in total)?
    Dann kann man noch ein bisschen besser drauf eingehen und eine gute Lösung finden.
    Vielleicht reicht PlaySound ja vollkommen aus.



  • also mir geht es nur darum das die Musik dauerhaft in der .exe läuft.



  • was mciSendString angeht, da brauchst du nur an den Command der den Track spielt "repeat" anfügen.

    mciSendString("play NAME from 0 repeat", 0, 0, 0);
    


  • 1. Erstelle eine Datei, z. B. "resource.rc" und schreibe Folgendes rein:

    RES_MYSOUND    WAVE    "mysound.wav"
    

    2. Leg sie und die WAV-Datei in deinem Verzeichnis ab und füge die RC-Datei dem Projekt hinzu (Shift + F11).

    3. Abspielen mit

    PlaySound(L"RES_MYSOUND", (HINSTANCE__ *) HInstance, SND_RESOURCE | SND_ASYNC | SND_LOOP);
    

    Wobei der erste Parameter dem ersten Bezeichner in der RC-Datei entspricht (es können auch mehrere Einträge erstellt werden - auch andere wie z. B. Bilder). Für PlaySound() musst du noch mmsystem.h inkludieren.

    Guck in die WinAPI Doku für weitere Sachen, die du mit der Funktion machen kannst. 😉



  • ich glaub ich bin dumm. Ich habs jetzt genau so gemacht und es funktioniert nicht.

    int main ()
    {
    PlaySound("RES_MYSOUND", HInstance, SND_RESOURCE | SND_ASYNC | SND_LOOP);
    }
    

    die "resource.rc" hab ich erstellt und dem Projekt hinzugefügt.

    RES_MYSOUND    WAVE    "fahrstuhl.wav"
    

    hab auch mmsystem.h inkludiert.

    und wenn ich es genau so eintippe wie du geschrieben hast:

    PlaySound(L"RES_MYSOUND", (HINSTANCE__ *) HInstance, SND_RESOURCE | SND_ASYNC | SND_LOOP);
    

    dann bekomm ich eine Fehlermeldung...

    ich kapiers nicht 😞



  • Tut mir leid, ich hab vermutlich eine neuere Version der IDE... nutze einfach deinen Aufruf wie vorhin, nur mit dem Resourcenbezeichner RES_MYSOUND anstelle eines Dateipfades:

    PlaySound("RES_MYSOUND", HInstance, SND_RESOURCE | SND_ASYNC | SND_LOOP);
    

    Ich bin mir nicht sicher welche Fehlermeldung du bekommst (bitte immer angeben), aber du hattest eigentlich schon fast alles richtig gemacht. Das Flag SND_RESOURCE im dritten Parameter sagt, dass er die wave-Datei aus seiner Resource laden soll, anstatt woanders her (z. B. Festplatte). Über den ersten Parameter kannst du ihm sagen welche Ressource er laden soll.

    Edit: Oh, ich sehe gerade du hattest es bereits so geschrieben. Dann müsstest du uns schon die Fehlermeldung verraten.



  • hä? genau so hab ich es ja gemacht. Er lädt die RES_MYSOUND resource datei die ich erstellt hab und in das Projekt eingefügt hab.
    Aber wenn ich das Projekt ausführe kommt der Sound nicht.



  • Ich habe noch das hier gefunden, das du ausprobieren könntest:
    How To Use MCI to Play AVI/WAVE Files from Memory:
    http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/Q155/3/60.asp&NoWebContent=1
    (Ich probier das demnächst mal aus)

    Dann kannst du die Resource in den Speicher laden und abspielen.
    Ich kann dir nicht sagen warum PlaySound nicht funktioniert.



  • Daniel95 schrieb:

    hä? genau so hab ich es ja gemacht. Er lädt die RES_MYSOUND resource datei die ich erstellt hab und in das Projekt eingefügt hab.
    Aber wenn ich das Projekt ausführe kommt der Sound nicht.

    Es müsste aber funktionieren. Vielleicht hast du sie mit einem Codec komprimiert? Könntest du die Datei irgendwo raufladen, damit wir das testen können? So ganz ohne Fehlermeldungen oder Beispieldateien kann man da nur raten. Probiere mal die folgende Datei - wenn es mit der klappt, liegt es an deiner WAV- oder RC-Datei (bei mir funktioniert es).

    http://www.vocaldownloads.com/subscrgetsongp.cfm?songid=241&code=FREE (Quelle)



  • hm es kommt immer noch keine Musik aber es kommt auch keine Fehlermeldung.

    die resource Datei und die .wav sind auch im selben Verzeichnis.

    Hier mal 2 Screens:

    http://s7.directupload.net/file/d/3216/uduel2ed_jpg.htm

    http://s14.directupload.net/file/d/3216/8dv5bwvg_jpg.htm



  • Probiere mal das Beispiel von dieser Webseite für sndPlaySound aus.



  • Ohne jetzt wirklich Plan von der Soundgeschichte zu haben, hat die Funktion doch bestimmt einen Rückgabewert.
    Diesen sollte man sich mal anschauen.
    Da es vermutlich WinApi ist kann man dann normalerweise mit GetLastError() mehr Infos bekommen.

    Außerdem bringen solche pauschal Aussagen wie "funktioniert nicht" oder es "kommt ein Fehler" gar nichts.
    Wenn Dir geholfen werden soll, bitte grundsätzlich auch die Fehlermeldungen und Details was nicht funktioniert posten.

    Manches mag für die selbstverständlich sein, da Du genau weißt was Du willt, jedoch für das Forum ist dies oft nicht der Fall, weill einfach Hintergrundinfos fehlern.

    Weiterhin viel Erfolg.



  • WxWidgets besitzt auch die Möglichkeit Muskidateien
    abzuspielen, wäre vlt. etwas für Anfänger.

    0x0ERROR



  • Daniel95 schrieb:

    es kommt immer noch keine Musik aber es kommt auch keine Fehlermeldung.
    [...]
    http://s7.directupload.net/file/d/3216/uduel2ed_jpg.htm

    Falls das noch aktuell ist: prüfe mit dem Debugger, ob dein int main() überhaupt aufgerufen wird.
    Vermutlich eher nicht ...


Anmelden zum Antworten