Bass Wrapper DLL kommt wieder!

    • Gutgut.
      Ich bin ja eher kein Fan von konstanten, importiert man ein System und ersetzt man es dann durch ein anderes hat man 1000 konstanten vom Vorigen system rumfliegen. Könnte man auch durch globale Variablen regeln.
      Hätte jbfmod für alles Konstanten benutzt müsste ich die jetzt auch noch alle manuell löschen t_t

      Ach ja: benutz in der neuen Version im Beispiel bitte nicht wieder so ein wildes Gemisch aus Drag&Drop und Code.
      Mal ehrlich, Skripte per drag&drop ausführen ist doch irgendwie... falsch.
      Schreib alles in einen einzigen übersichtlichen, leicht copy-paste-baren code.
      Das erleichtert die implementierung in eigene Projekte.
    • So, 1.6Alpha ist fertig. Da kann Verwurster gleich mal die separation testen :D
      Es wurden einige Funktionen hinzugefügt, weitere werden noch folgen. Die Bass Hilfedatei liegt bei, weil dort die Parameter aller Funktionen (bis auf eine) so beschrieben sind, wie man sie auch im GM einsetzen muss. Desweiteren wird nun BASS Version 2.3 verwendet und der Player vollständig auf Skriptverwendung umgestellt.
      Bitte beim Verwenden die beiligende Readme lesen.

      windapple.gmxhome.de/Bass_w16a.zip
      "Die Erde ist ein Irrenhaus. Dabei könnte das bis heute erreichte Wissen der Menschheit aus ihr ein Paradies machen. Dafür müsste die weltweite Gesellschaft allerdings zur Vernunft kommen."
      - Joseph Weizenbaum
    • Super. Alles nochmal einbauen :D

      Hmm ein kleiner Kommentar bei den neuen Funktionen wäre gut.
      So muss man sich ja jedes Mal durch die riesen Hilfedatei durchquetschen.

      Wow! man kann den amplification level setzen!
      Genau, was einige mods die zu leise abgespielt werden brauchen.
      Eigentlich kann man so ziemlich alles setzen, was xmplay auch kann.
      Probier ich gleich mal alles aus... wenn ich hier den Durchblick finde.

      Ich sehe die Konstante BASS_MUSIC_LOOP.
      Wo muss ich die anwenden, damit ein channel loopt?
      Find ich einfach nicht.

      edit: gibt es eigentlich ne funktion, die einfach den Titel des tracks zurückgibt?
      Find ich auch nicht.
      Oder stell ich mich da einfach nur zu dumm an?

      Die Sepperation funktioniert übrigens wunderbar :)

      noch ein edit:
      könntest du bitte die funktion BASS_ChannelGetTags einkapseln?
      Sieht so aus, als bräuchte man die, um den Titel zu erfahren.
      ich denke wenn ich das habe und rausgefunden hab, wo man die loopfunktion anknipsen kann hätte ich alles, was ich brauche :D

      Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von Verwurster ()

    • Das mit den Tags mach ich noch.
      BASS_MUSIC_LOOP kann in BASS_MusicLoad gesetzt werden.

      Edit: Hab die Tag Funktion jetzt eingebaut. Download wie oben unter windapple.gmxhome.de/Bass_w16a.zip

      Würde aber nicht empfehlen das für Tags ausserhalb des Music Bereiches zu nehmen, weil da gibt BASS nur Pointer zur den Tagstrukturen, die ich selbst auseinandernehmen muss, und da kann ich mich nicht mit aus.

      Edit2: Da ich es in der GMC rausgebracht habe will ichs hier nicht vorenthalten, die internationale Version mit allen nötigen Dateien, in Englisch:
      windapple.gmxhome.de/Bass_w16a_int.zip
      "Die Erde ist ein Irrenhaus. Dabei könnte das bis heute erreichte Wissen der Menschheit aus ihr ein Paradies machen. Dafür müsste die weltweite Gesellschaft allerdings zur Vernunft kommen."
      - Joseph Weizenbaum
    • Perfekt.
      Lol ist mir gar nicht aufgefallen, das du das schon längst hinzugefügt hast.
      Wollte dich gerade deswegen per PM belästigen.
      Dann hat das Ding jetzt alles (und noch viel mehr), was ich brauche.
      das mit dem loopen hab ich jetzt auch hingekriegt.
      Und der Titel des Tracks wird jetzt auch bereitwillig ausgespuckt.
      Das wird jetzt erst einmal in das Spiel eingebaut und nicht mehr angerührt.
      (Es sei denn, du machst noch eine Version mit dem Pack-Feature. Das wäre dann noch das Sahnehäubchen! ^^)

      Kann man eigentlich mehrere flags beim laden aktivieren?
      Oder die irgendwo anders als beim Laden anknipsen?
      Wenn ich zum Beispiel andere Ramps haben will und die Musik gleichzeitig loopen soll wäre das gut. (Brauche ich nicht, wäre aber gut zu wissen, wie das geht.)

      Schade, das sich niemand auf der Gmc für dein Werk zu interessieren scheint.
      Ich finde das Ding einfach super, da es einen mit Funktionalität geradezu überhäuft.
      Man kann viel mehr einstellen als bei dem direkten Konkurenten bgm (dafür ist bgm simpler. Da haben wir wieder das sxms-jbfmd Verhältnis)

      Vieleicht muss man einfach nur mehr Propaganda für deine dll in der Welt verbreiten :)

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

    • Das ist ja mal eine feine Sache für Bass, Windapple!
      Und im Gegensatz zur BGM sogar kommerziell verwendbar (falls ich jemals dorthin komme, aber lieber vorsorgen und gleich das passende Tool auswählen ;) ).

      Ist es möglich, mehrere Songs zu laden und dann je nach Bedarf das eine oder andere Stück zu spielen?
      Dein Bassplayer lädt ja immer nur ein Stück zur Zeit. Oder enthält im Bassplayer die Variable global._testval die ID des aktuell geladenen Stückes, bzw. liefert das Skript BASS_MusicLoad() die ID des geladenen Stückes zurück? Dann wär's ja einfach.

      Wenn das geht, hast Du definitiv einen begeisterten Benutzer mehr :D

      Muß ich beim Konstantenimporter noch irgendwas beachten? Erkennt der von allein, ob ich im GM das "Konstanten-Fenster" offen habe? Ich trau' mich noch nicht so recht, den auf mein spiel.gm6 loszulassen :(

      Gruß,
      Tommy
    • Mist - bin hundemüde und es klappt nicht.
      Aber eins nach dem anderen:
      1. Habe die Konstanten hinzugefügt. Check.
      2. Skripte importiert. Check.
      3. Code aus dem BASSPlayer rauskopiert und ins Game übernommen. Check.
      4. DLLs ins Game-Verzeichnis kopiert, MOD-Files liegen auch im Game-Verzeichnis. Check.
      5. Game gestartet (aus Game Maker heraus). Check.
      6. Test auf dll-Existenz sieht gut aus. Check.
      7. BASS_Wrapper_Init() schlägt fehl. Fehlermeldung: Der Prozedureinsprungspunkt "BASS_ChannelGetLength" wurde in der DLL "bass.dll" nicht gefunden. Mist.
      8. Mal ein Executable erzeugt und gestartet. Alles geht. Check.

      Woran kann's liegen? Vom Game Maker aus läuft es nicht, als Exe funktioniert's.

      Ich leg' mich hin...
    • Ich hab es immer noch nicht verstanden.
      Rein aus Neugier ;) Was kann dar Bass Wrapper noch alles außer Unmengen von Formaten abspielen?
      Also ich arbeite sowieso nie mit vielen Sound-Formaten, maximal zwei um genau zu sein: WAV und MP3. Mir ging MIDI-Musik bzw. FM-Synthesizer übrigens schon immer auf die Semmeln. Wenn schon Musik aus dem PC dann nicht so ein 1980er CASIO-Gedudel. (Ohne vom Thema abkommen zu wollen, schließlich ist das ja reine Geschmacksache)

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Melancor ()

    • Original von Tommy
      Mist - bin hundemüde und es klappt nicht.
      Aber eins nach dem anderen:
      1. Habe die Konstanten hinzugefügt. Check.
      2. Skripte importiert. Check.
      3. Code aus dem BASSPlayer rauskopiert und ins Game übernommen. Check.
      4. DLLs ins Game-Verzeichnis kopiert, MOD-Files liegen auch im Game-Verzeichnis. Check.
      5. Game gestartet (aus Game Maker heraus). Check.
      6. Test auf dll-Existenz sieht gut aus. Check.
      7. BASS_Wrapper_Init() schlägt fehl. Fehlermeldung: Der Prozedureinsprungspunkt "BASS_ChannelGetLength" wurde in der DLL "bass.dll" nicht gefunden. Mist.
      8. Mal ein Executable erzeugt und gestartet. Alles geht. Check.

      Woran kann's liegen? Vom Game Maker aus läuft es nicht, als Exe funktioniert's.

      Ich leg' mich hin...


      Hast du auch die Bass_Wrapper.dll und bass.dll kopiert? Sieht nämlich so aus, als ob entweder die Bass_Wrapper.dll oder bass.dll fehlt, oder was an den Skripten verstellt wurde das die direkt die bass.dll statt die Bass_Wrapper.dll aufrufen. Sind auch beide Dlls aus dem selben Zip Archiv?
      "Die Erde ist ein Irrenhaus. Dabei könnte das bis heute erreichte Wissen der Menschheit aus ihr ein Paradies machen. Dafür müsste die weltweite Gesellschaft allerdings zur Vernunft kommen."
      - Joseph Weizenbaum
    • Böse Falle. Irgendein Programm hat mir eine bass.dll von 2004 ins c:\windows\system32-Verzeichnis kopiert. Und die wurde vorher angezogen anstatt der korrekten bass.dll aus dem Spielverzeichnis. Somit wurde die eine Funktion "BASS_ChannelGetLength" nicht in der alten dll gefunden.

      Nachdem ich die bass.dll aus windows\system32 gelöscht habe, klappt alles ganz wunderbar :D

      Jippieh! Danke schön für diesen genialen Wrapper, Windapple!

      Und ich sollte nach Mitternacht einfach nicht mehr programmieren - oder den Wein nicht nebenbei trinken ;)
    • ich verwende jetzt die bass.dll und die bass_wrapper.dll für eines meiner projekte. ich habe nur ein kleines problemchen:
      ich möchte die dll vor allem für die "geloopten" hintergrund sounds verwenden, aber leider klappt das bei mir irgendwie nicht. ich hab zwar schon gemarkt, das im script "OPENFILE" das argument1 gar nicht verarbeitet wird, aber auch nach dem verbessern eben dieses fehlers klappt es nicht. was mach ich falsch?
      Battle Command - WeltraumEchtzeitStrategie | Meine GM Spiele auf Box.net
      GCM/FA/O d-(--)@>---xpu s-:- !a C++$@ U- P L+ E W++ N o K-- w++ O? M V PS PE-- Y PGP t 5 X R+++ tv+ b DI D G e+ h? r-- x
    • Das OPENFILE ist nur schnell für den Beispielplayer zusammengezimmert. Der Aufruf für ein Loopendes test.wav wäre z.b.

      GML-Quellcode

      1. loopende_datei_handle=BASS_StreamCreateFile('test.wav',BASS_SAMPLE_LOOP);
      2. BASS_Channel_Play(loopende_datei_handle,1);
      "Die Erde ist ein Irrenhaus. Dabei könnte das bis heute erreichte Wissen der Menschheit aus ihr ein Paradies machen. Dafür müsste die weltweite Gesellschaft allerdings zur Vernunft kommen."
      - Joseph Weizenbaum
    • ok danke. so ganz hab ich die verwendung von externen dlls noch nicht geschnallt.

      EDIT: leider werden die konstanten nicht global eigelesen. also müsste ich "4" statt "BASS_SAMPLE_LOOP" verwenden. gibts ne möglichkeit das zu ändern?
      Battle Command - WeltraumEchtzeitStrategie | Meine GM Spiele auf Box.net
      GCM/FA/O d-(--)@>---xpu s-:- !a C++$@ U- P L+ E W++ N o K-- w++ O? M V PS PE-- Y PGP t 5 X R+++ tv+ b DI D G e+ h? r-- x
    • @WIN: Hast Du das kleine Autoit-Skript gm_const_import.exe von Windapple nicht benutzt?
      Das ist genau dafür da, die Konstanten in Deine Game Maker-Konstanten einzuladen. Hat bei mir prima geklappt, ich mußte nur den Konstantendialog offen haben und das kleine exe starten.

      Viel Erfolg,
      Tommy
    • die datei gm_const_import.exe ist bei dem Bass_w16a.zip archiv gar nicht dabei.
      ich werde mal das mergen versuchen, wobei ich schon festellen musste, das es dann offt zu fehlern in der index-zuweisung kommt.
      Battle Command - WeltraumEchtzeitStrategie | Meine GM Spiele auf Box.net
      GCM/FA/O d-(--)@>---xpu s-:- !a C++$@ U- P L+ E W++ N o K-- w++ O? M V PS PE-- Y PGP t 5 X R+++ tv+ b DI D G e+ h? r-- x