Announcement

Collapse
No announcement yet.

Sounddateien abspielen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Sounddateien abspielen

    Hallo,

    habe folgendes Problem: Ich möchte mind. 2 Sound-Dateien gleichzeitig
    ausgeben. Z.B. Hintergrundmelodie und Soundeffekte. Hat jemand einen
    Tip ? Ich hab es schon mit PlaySound() usw. probiert, aber das hat
    natürlich nichts ergeben. Offensichtlich ist es ohnehin mit wav-Dateien
    nicht machbar.
    Hat jemand einen Hinweis, wo ich entsprechendes in der API-Doku finden
    kann ?

    Danke im Voraus

    Gruss

    Dirk Nelles

  • #2
    Benutze doch einfach die Komponete Mediaplayer die iin Borland enthalten ist. Damit kannst du WAV-Dateien uvm abspielen.

    Wenn du zwei abspielen willst, nimm die Komponeten zwei mal auf
    Christian

    Comment


    • #3
      Das wäre wunderschön, wenns klappen würde. Leider funktioniert das
      nicht. War das erste, was ich natürlich ausprobiert habe (man sucht
      ja immer den leichtesten Weg). Es lässt sich damit nur die zuerst
      gestartete Datei abspielen. Die zweite wird erst dann gespielt, sobald
      die erste beendet wurde.
      Es muss einen Weg geben, die Dateien über mehrere Kanäle abzuspielen.
      Zudem möchte ich auch ein paar Effekte drinhaben. Z.B. Eine Datei
      soll lauter abgespielt werden als die andere.
      Wie bereits oben gesagt, es muss API-Funktionen geben, die das er-
      möglichen. Und DirectSound möchte ich eben nicht verwenden, da die
      Zielrechner für das Programm ganz "magere Kerlchen" sind.

      Gruss

      Dir

      Comment


      • #4
        Auweia, dass hatte ich früher mal gemacht und war gar nicht so einfach.

        Habe mal diese Klasse geschieben. Da sind zumindestens die Befehle usw. drin. Vielleicht kannst du die Befehle ja verwenden:

        <pre>
        #ifndef _INC_MMSYSTEM
        #include <mmsystem.h>
        #endif

        extern HINSTANCE hInst;
        extern bool sound;
        //**************************Klasse GWave*****************************
        class GWave
        {
        public:
        GWave(int resid);
        GWave(char *filename);
        void PlayAsync();
        void PlaySync();
        void PlayLoop();
        void Stop();
        ~GWave();
        private:
        char dateiname[100];
        LPTSTR mres;
        DWORD art;
        };

        GWave::GWave(int resid)
        {
        if(sound==false)
        return;
        mres=MAKEINTRESOURCE(resid);
        art=SND_RESOURCE;
        }

        GWave::GWave(char *filename)
        {
        if(sound==false)
        return;
        strcpy(dateiname,filename);
        mres=0;
        art=SND_FILENAME;
        }

        GWave::~GWave()
        {

        }

        void GWave::PlayAsync()
        {
        if(sound==false)
        return;
        if(art==SND_RESOURCE)
        PlaySound(mres,hInst,art|SND_ASYNC);
        else
        PlaySound(dateiname,NULL,art|SND_ASYNC);
        }

        void GWave::PlaySync()
        {
        if(sound==false)
        return;
        if(art==SND_RESOURCE)
        PlaySound(mres,hInst,art|SND_SYNC);
        else
        PlaySound(dateiname,NULL,art|SND_SYNC);
        }

        void GWave::PlayLoop()
        {
        if(sound==false)
        return;
        if(art==SND_RESOURCE)
        PlaySound(mres,hInst,art|SND_ASYNC|SND_LOOP);
        else
        PlaySound(dateiname,NULL,art|SND_ASYNC|SND_LOOP);
        }

        void GWave::Stop()
        {
        PlaySound(NULL,NULL,SND_SYNC);
        }

        </pre&gt
        Christian

        Comment


        • #5
          Ja,

          die PlaySound-WIN-API habe ich auch schon ausprobiert.
          Wenn ich das richtig sehe, ist Dein Code so eine Art eigener Player,
          der von Datei und Resource sich die waves holt, aber auch nur immer
          EINE Datei spielt. Gut, eine Datei immer wieder in einer Schleife
          zu spielen, ist auch kein Thema. Aber sobald man mit der WIN-API eine
          weitere Datei aufruft, wird die Schleife sofort abgebrochen.
          Ich hab gelesen, dass eine DLL von Microsoft geben soll: wavemix.dll.
          Hast Du von der schon mal was gehört ? Deren API soll bis zu acht
          Sound-Kanäle gleichzeitig verwalten. Aber bei einer fremden DLL ist
          natürlich auch immer die Frage, wie es mit den Rechten aussieht.
          Daher wäre eine eigene Lösung erstrebenswerter.

          Gruss

          Dirk Nelle

          Comment


          • #6
            Ja, die kenne ich, war früher Bestandteil von vielen Programmen um die Soundausgabe einfacher zu gestalten. wird aber heute whl nicht mehr ausgeliefert. War auf den WIN 95 CD drauf.

            Versuchs mal hier

            http://www.trakyaboy.8k.com/dll.ht
            Christian

            Comment


            • #7
              Leider hat Dein Link nicht mehr funktioniert.
              Trotzdem danke.
              Aber ich habe die Datei auf einem anderen Server gefunden, wo auch
              die Header-Datei mit dabei war.
              Wenn die DLL früher auf der WIN95-CD drauf war, müsste sie doch
              für jeden lizensierten WIN-User nutzbar sein ?
              Kennst Du Dich mit solchen Nutzungs-Bedingungen aus

              Comment


              • #8
                M.E. ist es so, dass die DLL dann trotzdem nicht frei nutzbar ist, da die Header-Datei nicht freigegeben war. Nun kannman natürlich sagen, ich habe nur die DLL benutzt und mir die darin enthaltenen Funktionen selbst erarbeitet ;-
                Christian

                Comment


                • #9
                  Schön formuliert: "Selbst erarbeitet" !! Naja, dann werde ich mal die
                  h-Datei von meinem Rechner löschen und mir die Sache selbst erarbeiten.

                  Nochmals danke für Deine raschen Antworten

                  Gruss

                  Dirk Nelle

                  Comment

                  Working...
                  X