Sound/Musik Datei in source code Speicher



  • Hallo liebe Community,
    Ich habe ein Spiel geschrieben das auch soweit funktioniert ,aber ich möchte das so haben das die Musik nicht nur lokal abgespielt wird sondern wenn man die EXE öffnet auch die Musik abspielt ohne das man die Musik datei auf seinem Rechner hat.Also meine Frage wie kann ich Musik/Sound Datein in C++ source code speichern das er bei jedem abgespielt werden kann?
    Hoffe jemand kann mir helfen.



  • Die erste Hilfe die du von mir bekommst ist folgender Tip: wenn du Antworten willst, stell Fragen.

    aber ich brauche noch Musik die nicht nur lokal abgespielt wird sondern wenn man die EXE öffnet auch die Musik abspielt ohne das man die Musik datei auf seinem Rechner hat.

    Nö, brauchst du nicht. Du willst das so, und das ist natürlich voll OK dass du das willst, aber brauchen tust du es nicht. Gibt genug Spiele deren Assets als einzelne Files in irgend einem Daten-Unterverzeichnis rumliegen.



  • Du hast recht aber ich möchte das so, ich werde den Thread bearbeiten



  • Stichwort: Resource Files

    Welchen Compiler bzw. Projekttyp verwendest du denn?

    Und mit welcher Funktion spielst du den Sound ab (denn es kann sein, daß du dann doch eine temporäre Datei anlegen mußt, falls die Funktion keine Stream-Funktionalität anbietet)?



  • Ich benutze Code Blocks (Min GW) und das Projekt ist eine Konsolen Anwendung



  • Dann doch keine Resource Files. Benutze z.B. File to hexadecimal converter um die Datei als Hex-String zu erzeugen und füge diese dann in deinem Code ein:

    const char * const musicData = { /* ... */ }; // z.B. 0x00, 0x01, ...
    


  • Mit der Antwort von @Th69 bekommst du mal beliebige Binärdaten direkt in dein Programm reinkompiliert. Wenn du bereits eine Library verwendet die ein Soundfile spielen kann welches bereits im Speicher irgendwo liegt, dann sollte das alles sein was du brauchst. Falls nicht wird es möglicherweise ... kompliziert. Musik spielen ist so gar nicht trivial, dafür musst du fast eine Library einbinden oder eine Betriebssystemabhängige Funktion verwenden.



  • @th69 sagte in Sound/Musik Datei in source code Speicher:

    Dann doch keine Resource Files.

    Man sollte nicht unterschlagen, daß beim MinGW sehr wohl ein Resource Compiler dabei ist: windres.exe.



  • @swordfish: Aber funktioniert das (Einbinden und Lesen von Resource Files) auch bei Konsolenprojekten?

    Aber es gibt wohl beim gcc noch einen anderen Weg (direkt als Objektfile per "ld" einbinden): Embedding resources in executable using GCC



  • @th69 sagte in Sound/Musik Datei in source code Speicher:

    Aber funktioniert das (Einbinden und Lesen von Resource Files) auch bei Konsolenprojekten?

    Ja.



  • Benutze MingW seit langen und durch DevC++ weis ich das, das einbinden über res sehr wol funktioniert.
    Unterschied ist das ab und an das antiviren Programm anschlägt xD


Log in to reply