Audiere Wrapper DLL

    • Dll

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • pixelscrapyard.com/slimeonline/0085.xm

      Das ist die besagte Datei.

      Dasselbe Problem hatte ich damals auch mit ner anderen audio dll ...fmod wars damals glaub ich. Bisher hat nur die bgm dll wirklich ALLE tracks wiederholt abspielen können.

      Edit:
      Hatte mich vertan, es ist nicht die 0084.mod sondern die 0085.xm ...anderes Dateiformat, liegts daran? die bgm dll schaffts :/

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von BlaXun ()

    • Kann den Fehler mit deiner Datei bestätigen. Wird wohl am Format liegen. Kann ich wie gesagt nichts gegen machen. Wenn du das Format nicht wechseln willst würde ich dir einfach einen anderen wrapper für die bass.dll empfehlen. Denn wie ich sehe ist die bgm.dll ein solcher wrapper, weswegen es wahrscheinlich auch mit einem anderen funktionieren würde. Da die bass.dll relativ populär ist, sind auch einige wrapper für den GM zu finden, z.B. diese hier: gmc.yoyogames.com/index.php?showtopic=460201

      EDIT: Habe gerade festgestellt, dass die bass.dll ja gar nicht direkt XM unterstützt, aber die bassmod.dll. Findet man aber auch was zu für den GM, z.B.: gmc.yoyogames.com/index.php?showtopic=353936

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Bl@ckSp@rk ()

    • Tolle DLL, aber kann es sein dass diese DLL ein Problem mit bestimmten mp3 Dateien hat?
      Wenn ichs abspiele kommt da nur ein kurzes, merkwürdig klirrendes Geräusch, sonst nichts. Wenn repeat an ist, dann kommt das geräusch wieder und wieder.
      Sobald ich aber die Datei simple in OGG umgewandelt habe funzt es auf einmal tadellos...
      Trotzdem merkwürdig, mp3 wird doch unterstützt, oder?

      Willst du auf diese Drachen und -eier klicken?
      Sie werden sich freuen ;)
    • @DragonGamer
      Mp3 wird eigentlich tadellos unterstützt. Vielleicht gibt es tatsächlich bei speziellen Codecs wie LAME Probleme - womöglich kann Audiere auch nicht mit variabler Bitrate umgehen. Abspielprobleme hatte ich persönlich aber bislang einzig bei 24-Bit Wav-Samples. Sag Mal bei was für Einstellungen deine Mp3s gerendert/konvertiert wurden.

      @Sparky
      Btw, wird mal Zeit, dass Du hier auch eine Audiere-Extension anbietest, oder? Ist ja schon deutlich komfortabler als die ganzen DLL-Geschichten. o.o
    • @DragonGamer
      Das kann gut sein. Habe wie gesagt nur den Wrapper geschrieben. MP3 wird zwar unterstützt, aber vielleicht ist deine Datei nicht standardkonform. Ich würde mal probieren, sie mit einem anderen Codec zu encoden. Ich kann da LAME empfehlen. Damit sollte es eigentlich auf jeden Fall funktionieren.

      @F4LL0UT
      Werde ich bei Gelegenheit mal machen. Ist halt auch etwas mit Aufwand verbunden, da ich die Dokumentation schon gleich mit einbinden wollen würde.
    • Oh. okey. Danke für die Antworten! Wird wohl amFormat liegen auch wenn ich da selbst nichts besonderes eingestellt hab... Bitrate ist konstant bei 160 kBit/s (44100 Hz) Stereo 32 Bit.
      Wie auch immer. Mit Ogg funktioniert es ja und es soll ja besser zum benutzen sein.

      Willst du auf diese Drachen und -eier klicken?
      Sie werden sich freuen ;)
    • DragonGamer schrieb:

      160 kBit/s (44100 Hz) Stereo 32 Bit
      Ich wusste es: die Auflösung war Schuld. Btw: 32 Bit... wow, wusste garnicht, dass mp3s überhaupt in so einer Auflösung gerendert werden können (Cubase limitiert den mp3 Export bei mir auf 16 Bit). Das ist eindeutig der Übeltäter. Audiere spielt nur bis 16 Bit ab, wie auch viele andere Anwendungen. Ich muss eh sagen, dass höhere Auflösungen absolut keinen Sinn machen. Selbst unter professionellen Musikern ist es umstritten ob 24 Bit einen hörbaren Unterschied zu 16 darstellen (die Wahrheit ist: macht nur für Audiobearbeitung Sinn, beim Hören absolut nicht - dafür steigt die Dateigröße für jeden Bit extrem an). Also egal welches Format du wählst, immer dran denken 16 Bit zu nehmen. Und dran denken, dass die Auflösung etwas anderes ist als die Bitrate, die man von vielen komprimierten Formaten kennt.

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von F4LL0UT ()

    • F4LL0UT schrieb:

      Ich wusste es: die Auflösung war Schuld. Btw: 32 Bit... wow, wusste garnicht, dass mp3s überhaupt in so einer Auflösung gerendert werden können (Cubase limitiert den mp3 Export bei mir auf 16 Bit). Das ist eindeutig der Übeltäter. Audiere spielt nur bis 16 Bit ab, wie auch viele andere Anwendungen. Ich muss eh sagen, dass höhere Auflösungen absolut keinen Sinn machen. Selbst unter professionellen Musikern ist es umstritten ob 24 Bit einen hörbaren Unterschied zu 16 darstellen (die Wahrheit ist: macht nur für Audiobearbeitung Sinn, beim Hören absolut nicht - dafür steigt die Dateigröße für jeden Bit extrem an). Also egal welches Format du wählst, immer dran denken 16 Bit zu nehmen. Und dran denken, dass die Auflösung etwas anderes ist als die Bitrate, die man von vielen komprimierten Formaten kennt.
      Ohh, okey! Großen Dank.
      Hatte die Datei so von einer Royalty Free Musik Website runtergeladen (und mit Audition bearbeitet)...

      Btw. das erklärt vieleicht warum Bearbeitungsprozesse erstaunlich lange dauerten >_>

      Willst du auf diese Drachen und -eier klicken?
      Sie werden sich freuen ;)
    • Servus, ich habe die .dll angetestet und muss sagen das ich im GM 8.0 Pro einige Probleme damit habe.

      Zu erst hatte ich

      GML-Quellcode

      1. audiere_init("gma.dll"); //da lag die .dll noch im selben verzeichniss wie die .exe und die .gmk
      2. ind = audiere_stream_load(working_directory + "\bgm\bgm_forest.wma");
      3. audiere_stream_set_repeat(ind,true);
      4. audiere_stream_play(ind);


      im Room-Creation Code stehen, jedoch stieß ich da auf den folgenden Fehler:

      GML-Quellcode

      1. EXECUTION ERROR in creation code of room room0
      2. In script audiere_stream_load:
      3. Error in code at line 5:
      4. // loads an audio file into memory for streaming// argument0 = filename// returns either an ID for use in all other functions or -1 if an error occursreturn external_call(global.dll_audiere_stream_load,argument0);
      5. ^
      6. at position 29: Unknown variable dll_audiere_stream_load


      Ich bin mir sicher das ich die Scripts korrekt importiert habe und die Orte der .dll sowie die der .wma Datei stimmen eigentlich auch.

      Nachdem das ganze nichts wurde habe ich es noch einmal über ein seperates Objekt versucht, jedoch stieß ich da auf genau den selben Fehler.

      GML-Quellcode

      1. obj_sound:
      2. Create Event:
      3. execute code:
      4. audiere_init(working_directory + "\dll\gma.dll"); //nun hab ich die beiden .dll s in einen seperaten ordner verfrachtet.
      5. Other Event: Room Start:
      6. execute code:
      7. ind = audiere_stream_load(working_directory + "\bgm\bgm_forest.wma");
      8. audiere_stream_set_repeat(ind,true);
      9. audiere_stream_play(ind);
      Alles anzeigen


      Zum Abschluss dann noch einmal den jetzigen Fehler:

      GML-Quellcode

      1. ERROR in
      2. action number 1
      3. of Other Event: Room Start
      4. for object obj_sound:
      5. In script audiere_stream_load:
      6. Error in code at line 5:
      7. // loads an audio file into memory for streaming// argument0 = filename// returns either an ID for use in all other functions or -1 if an error occursreturn external_call(global.dll_audiere_stream_load,argument0);
      8. ^
      9. at position 29: Unknown variable dll_audiere_stream_load


      Was genau die Fehlerquelle ist kann ich nun nicht wirklich feststellen, theoretisch müsste es ja im Script liegen, aber das kann ich mir auch nicht vorstellen.

      MfG DatMarv
    • Bl@ckSp@rk schrieb:

      Du musst beim Aufruf von audiere_init den Ort von beiden DLLs angeben, so wie es auch in der Hilfe steht. Die Funktion audiere_init gibt übrigens zurück, ob das Initialisieren erfolgreich war, also in deinem Fall false, da er die audiere.dll nicht finden kann.
      Ah, sorry, ich hatte die Datei ganz übersehen, jetzt habe ich den Code ein klein wenig abgeändert und es läuft im Room-Creation Code perfekt.

      GML-Quellcode

      1. audiere_init("gma.dll", "audiere.dll");
      2. ind = audiere_stream_load(working_directory + "\bgm\bgm_forest.ogg");
      3. audiere_stream_set_repeat(ind,true);
      4. audiere_stream_play(ind);


      Vielen Dank für die Hilfe und fürs reinstellen der .dll

      MfG Marvin159
    • Hallihallo,

      ich habe ein Problem mit der Abfrage eines Streams.
      Wenn ich von einem Raum in den nächsten und wieder zurückwechsle, soll die Abfrage überprüfen, ob die Musik schon läuft, und wenn dies zutrifft, die Musik nicht nochmal abspielen.

      Nachdem das nicht funktioniert hängt sich die Musik quasi auf, weil ja immer nur ein Stream zu einer Zeit möglich ist.

      Den Stream jedes Mal stoppen will ich nicht, sonst beginnt die Musik ja bei jedem Raumwechsel neu, und ich will die Musik gerne "persistent" haben.

      Was mache ich falsch?

      Hier der Code:

      GML-Quellcode

      1. audiere_init("gma.dll","audiere.dll");
      2. global.ind = string("Music\My_Quest.MP3")
      3. audiere_stream_load(global.ind)
      4. if not audiere_stream_isplaying(global.ind)
      5. {
      6. audiere_stream_set_volume(global.ind,1)
      7. audiere_stream_get_volume(global.ind)
      8. audiere_stream_set_repeat(global.ind,false);
      9. audiere_stream_play(global.ind);
      10. }
      Alles anzeigen


      MfG,
      RLP
    • RLP schrieb:

      GML-Quellcode

      1. ...
      2. global.ind = string("Music\My_Quest.MP3")
      3. ...

      Nur weil du einer Variable einen Dateinamen zuweist, wird daraus noch kein Index für einen stream ;)
      Schau dir doch bitte mal die unzähligen Beispiele an, die du in diesem Thread hier findest, oder einfach die Hilfedatei, um die grundlegende Funktionsweise der DLL zu verstehen. Richtig muss es heißen

      GML-Quellcode

      1. audiere_init("gma.dll","audiere.dll");
      2. global.ind = audiere_stream_load("Music\My_Quest.MP3");
      3. if not audiere_stream_isplaying(global.ind)
      4. {
      5. // Diese Einstellungen könnte man auch einmalig zu Beginn machen.
      6. audiere_stream_set_volume(global.ind,1);
      7. audiere_stream_set_repeat(global.ind,false);
      8. audiere_stream_play(global.ind);
      9. }
      Alles anzeigen

      wobei du natürlich aufpassen musst, dass du audiere_init nur einmal zu Beginn des Spiels aufrufst und mit audiere_stream_load nicht Dateien mehrfach lädtst.
    • Nur weil du einer Variable einen Dateinamen zuweist, wird daraus noch kein Index für einen stream ;)
      Schau
      dir doch bitte mal die unzähligen Beispiele an, die du in diesem Thread
      hier findest, oder einfach die Hilfedatei, um die grundlegende
      Funktionsweise der DLL zu verstehen.
      Nunja, es hat aber trotzdem funktioniert.^^
      Außerdem bin ich ohnehin den ganzen Thread durchgegangen, aber gut.
      wobei du natürlich aufpassen musst, dass du audiere_init nur einmal zu Beginn des Spiels aufrufst und mit audiere_stream_load nicht Dateien mehrfach lädtst.
      Problem gelöst. :) Was ich nicht verstanden hatte, war, dass man offenbar audiere_stream_load nur zu Beginn des Spiels aufrufen sollte (im Falle des Menüs), und dass, wenn die Funktion nochmal ausgeführt wird, der Stream nicht "überschrieben" wird.

      Im Game-Start-Event steht jetzt:

      Spoiler anzeigen

      GML-Quellcode

      1. audiere_init("gma.dll","audiere.dll");
      2. global.ind = string("Music\MyQuest.ogg")
      3. audiere_stream_load(global.ind);


      Und im Alarm-0-Event (der nach 5 Steps aufgerufen wird):

      Spoiler anzeigen

      GML-Quellcode

      1. if not audiere_stream_isplaying(global.ind)
      2. {
      3. audiere_stream_set_volume(global.ind,1);
      4. audiere_stream_set_repeat(global.ind,true);
      5. audiere_stream_play(global.ind);
      6. }


      Also jetzt funktioniert es, danke für deine Hilfe!
    • RLP schrieb:

      Was ich nicht verstanden hatte, war, dass man offenbar audiere_stream_load nur zu Beginn des Spiels aufrufen sollte (im Falle des Menüs), und dass, wenn die Funktion nochmal ausgeführt wird, der Stream nicht "überschrieben" wird.

      Warum sollte es denn "überschrieben" werden? Das würde einem ja verbieten, eine Datei mehrfach als stream Laden und Abspielen zu können oder überhaupt nur einen stream gleichzeitig benutzen zu können. Und natürlich darfst du audiere_stream_load auch mehrfach aufrufen, nur solltest du daran denken, jeden geladenen stream auch irgendwann wieder freizugeben. Daher ist es einfacher einen stream nur zu Beginn des Spiels einmal zu laden und ihn nur wieder am Ende des Spiels freizugeben, wenn man noch nicht so erfahren im Programmieren ist.
    • Bl@ckSp@rk schrieb:

      RLP schrieb:

      Was ich nicht verstanden hatte, war, dass man offenbar audiere_stream_load nur zu Beginn des Spiels aufrufen sollte (im Falle des Menüs), und dass, wenn die Funktion nochmal ausgeführt wird, der Stream nicht "überschrieben" wird.

      Warum sollte es denn "überschrieben" werden? Das würde einem ja verbieten, eine Datei mehrfach als stream Laden und Abspielen zu können oder überhaupt nur einen stream gleichzeitig benutzen zu können. Und natürlich darfst du audiere_stream_load auch mehrfach aufrufen, nur solltest du daran denken, jeden geladenen stream auch irgendwann wieder freizugeben. Daher ist es einfacher einen stream nur zu Beginn des Spiels einmal zu laden und ihn nur wieder am Ende des Spiels freizugeben, wenn man noch nicht so erfahren im Programmieren ist.
      Ja, ich hatte das verwechselt mit der Abspielfunktion, dass man nur einen Stream zu einer Zeit abspielen kann, aber das wäre im Falle vom Laden des Streams, was ja nichts damit zu tun hat, Blödsinn. Aber nun ja, jetzt weiß ich es.^^
    • Eine extremst geniale DLL!
      Nutze die seit ich sie entdeckt habe immer für den Sound in meinen Projekten. Man kann damit sogar 3D Sounds realisieren. (mit ein bisschen custom code)

      Es gibt jedoch eine Sache die mir fehlt:
      Man kann die musik streams abspielen, repeaten lassen und überprüfen ob diese immernoch abgespielt werden.

      Bei den effekten geht das aber nicht. Was ich gerne machen würde, ist einen effekt (sobald er beendet wurde) nochmal abspielen zu lassen. (praktisch einen loop erzeugen.)
      Da Effekte keine "set_repeat()" funktion besitzen, wollte ich abfragen ob der effekt beendet wurde um dann den effekt nochmal zu starten. eine "is_playing()" funktion gibt es aber auch nicht.

      Gibt es da irgendwelche möglichkeiten dies zu realisieren? Natürlich kann ich anhand der Steps auch erkennen wann ein effekt beendet wurde, jedoch ist diese Methode nicht gerade verlässlich.
      (wenn FPS einbrüche auftauchen, so wird das ganze Stepsystem mit dem Sound asynchron.)

      Ansonsten super arbeit! Blos die obrigen funktionen fehlen mir. (oder eine Lösung für das oben gennante problem.)
    • Danke, freut mich, dass du die DLL gebrauchen kannst.

      Dass man Effekte nicht loopen kann, hat seinen Grund. Da ich nur den Wrapper programmiert habe und die Audiere library bei Soundeffekten keine Möglichkeit dafür anbietet, habe ich es auch nicht eingebaut. Zudem wäre es kompliziert geworden, da der entscheidende Unterschied zwischen Streams und Effekten der ist, dass man Effekte auch mehrfach gleichzeitig abspielen kann und somit eigentlich nicht vorgesehen ist, dass man Effekte wiederholen lassen kann. Daher solltest du einfach für alles, was sich wiederholen soll, Streams verwenden.