Playliste mit BASS

  • GM 8

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

  • Playliste mit BASS

    Ich benutze die BASS.dll. Da es davon anscheinend mehrere Wrapper gibt, mache ich hier einen extra Beitrag auf.

    Momentan wird aus einem vorgegebenen Ordner eine zufällige Datei gewählt und abgespielt. Per Tastendruck wird eine neue Datei ausgesucht und gespielt, was aber nur eine Übergangslösung ist. Es soll so sein, dass wenn das Lied aus ist, automatisch ein neues Lied gewählt und abgespielt wird. Woran aber erkenne ich, ob das Lied aus ist? Ich dachte, dass ich mit BASS_ChannelGetLength die Länge des Liedes ermitteln und einen Counter starten könnte. Allerdings erhalte ich, wenn der Befehl aufgerufen wird, folgende Meldung:

    Spoiler anzeigen
    In script BASS_ChannelGetLength:
    Error in code at line 1:
    return external_call(global._DLL_BASS_ChannelGetLength,argument0);
    ^
    at position 29: Unknown variable _DLL_BASS_ChannelGetLength


    Im Script findet sich nur:

    GML-Quellcode

    1. return external_call(global._DLL_BASS_ChannelGetLength,argument0);


    Ist nun meine Anwendung falsch? Mache ich grundsätzlich einen Fehler? Kann man das Problem anders lösen?
  • Da sind Fehler in den Skripten...
    Die variable heisst "_DLL_BASS_ChannelGetLength", im initialisation-Skript heisst sie aber "_BASS_ChannelGetLength".
    Wieso benutzst du aber diesen Wrapper?

    Er ist noch im Alpha Stadium und (nichts gegen Windaple :) ) aber es scheint auch noch unnötig kompliziert aufgebaut zu sein...
    Dll Audiere Wrapper DLL Audiere bietet ähnlcihe Funktionsumfang und ist ausgiebiger getestet.

    Edit: Um dort längere Stücke abzuspielen kannst du "Streams" verwenden die auch den Speicher entlasten.
    Mit audiere_stream_isplaying kannst du dann einfach überprüfen ob noch abgespielt wird oder nicht.

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)
  • Ich hatte vorher Audiere, bei meinem letzten Projekt kackte es aber ziemlich ab, so dass selbst BlackSpark mir zu BASS geraten hat. Damals stand ich wegen einem Termin extrem unter Zeitdruck und musste binnen 24h Audiere aus schmeissen und BASS einbauen. Es hat perfekt funktioniert, auch wenn ich bis heute nicht weiß, wie ich das wirklich geschafft habe.

    Und wenn mal etwas gut funktioniert, bleibe ich gerne dabei. Wie ich gesehen habe, gibt es auch einen Wrapper von Sin (SinBASS) allerdings sind bei dem alle Befehle anders tituliert, aber das Auslesen der Zeit scheint da zu funktionieren.
  • Also, bei MP3, OGG und Konsorten funktioniert es wohl jetzt. Danke! Bei Modulen nicht, weil ich da die Zeit nicht auslesen kann (müsste man eher berechnen und wenn ein Modul unendlich geht... schwierig).

    Alternativ könnte ich Module einfach verbieten.

    Deinen Tipp schaue ich mir noch an.
  • DragonGamer schrieb:

    ahh.. okey.. das ist schon was ausgefalleneres.
    Ja, heute sieht man es so. In der Zeit vor MP3 waren das mit Midis die normalen Sounds, wobei Midis von Leuten abgespielt wurden, die sich entsprechende Soundkarten leisten konnten. Mit den Modulen kann man vergleichsweise kleine Lieder mit recht guter Soundqualität erstellen. BASS bietet dabei noch das MO3 Format an, was - den richtigen Musiker vorausgesetzt - absolut mächtig ist. Ich habe das mal in einem Projekt verwendet (da war ich u.A. für Musik verantwortlich) und das waren in der Freeware-Version rund 10 Lieder bei 12MB und einer Laufzeit von rund 40 Minuten.

    Wenn man also ein möglichst kleines Spiel mit viel Musik machen will, ist MO3 eine echte Alternative und das geht halt nur mit BASS. Ich spiele mit dem Gedanken, dass bei meinem übernächsten Projekt zu verwenden. Auch deshalb klebe ich nun etwas an BASS.
  • Mein Wrapper war nur ein etwas besserer Proof-of-Concept. Ich kann da weder kompetenten Support geben, noch heute überhaupt etwas nachvollziehen - der Code hat keinen Anspruch auf Logik und Sinnhaftigkeit.
    Ich kann mal schauen ob ich den Quellcode der Wrapper DLL noch finde und den hochladen, dann könntest du dir das Teil mal vornehmen. Aber erwarte nicht, das ich da noch was programmiere :P