Frage zu BASS.DLL und Zeitermittlung *erledigt*

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

EPS

Betreff: Frage zu BASS.DLL und Zeitermittlung *erledigt*

BeitragMo, Apr 04, 2005 8:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi zusammen,

ich fummle grad mit der BASS.DLL rum und hab ein kleines Problem. Ich möchte gern die verstrichene Zeit anzeigen wenn ein Titel abgespielt wird.

Der Titel wird ganz normal gespielt und ich kann die aktuelle Position mit der Funktion BASS_ChannelGetPosition(stream) ermitteln. Nun dachte ich das ich das ich mit dieser Position und der Funktion BASS_ChannelBytes2Seconds(stream,pos) die Sekunden heraus bekomme. Also:

pos = BASS_ChannelGetPosition(BASS_stream)
sek = BASS_ChannelBytes2Seconds(BASS_stream,pos)

Aber irgendwie geht das nicht. Wenn ich den Titel mittels "Pause" anhalte, dann wird mir die Zeit angezeigt, drücke ich dann wieder auf "Play" bleibt die Anzeige der Sekunden wieder stehen, die Anzeige der Position hingegen läuft.

Wäre für einen Tipp dankbar.
mGUI - Graphical User Interface für Blitz3D...Informationen gibt es hier

Man kann sich öfter als zweimal im Leben halb tot lachen.

EPS

BeitragMo, Apr 04, 2005 13:19
Antworten mit Zitat
Benutzer-Profile anzeigen
tja...habs nun selbst heraus bekommen, wer lesen kann ist klar im Vorteil.

Die Variable die von der Funktion zurück gegeben wird muß ein Float sein...

so gehts also:

pos = BASS_ChannelGetPosition(BASS_stream)
getsek# = BASS_ChannelBytes2Seconds(BASS_stream,pos)

temp = Int(getsek#)
min = Floor(temp / 60)
sek = temp - min * 60

Text 50,80,Int(min) + " : " + Int(sek)
mGUI - Graphical User Interface für Blitz3D...Informationen gibt es hier

Man kann sich öfter als zweimal im Leben halb tot lachen.

D2006

Administrator

BeitragMo, Apr 04, 2005 16:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

mit ChannelBytes2Seconds habe ich auch meine Probleme.

Bei mir will es gar nicht.

Was machst du in deinem Beispiel?
Sample abspielen oder eine Datei streamen?

Was ist bei dir "BASS_stream"?
Ist das von BASS_SampleLoad / BASS_StreamCreateFile
oder von BASS_SamplePlay / BASS_StreamPlay ???

Hatte damals drumrum gecodet und mir beim laden gemerkt wie viel Sekunden ein Byte hat und dann immer selbst umgerechnet. Das ging komischerweise immer.

MfG
D2006

EPS

BeitragMo, Apr 04, 2005 17:57
Antworten mit Zitat
Benutzer-Profile anzeigen
BASS_Stream ist bei mir das Ergebnis von BASS_StreamCreateFile.

Auch ich habe eine "Unregelmäßigkeit" bemerkt. Nachdem ich noch weitere Variablen in meiner Funktion hatte, hat das Programm total verrückt gespielt. Aus irgend einem Grund klappt die Variablenrückgabe der Funktion nicht ganz richtig. Man kann mit dem zurück erhaltenen Wert, bzw. mit der Variablen, irgendwie nicht weiterrechnen. Die Variable ist dann entweder immer 0 oder nimmt die komischsten Werte an.

Ich hab das ganze (nach etlichen Versuchen) nun dadurch umgangen, das ich das ganze in eine extra Funktion gepackt habe die mir den Wert zurück gibt. Dann klappt es.

Code: [AUSKLAPPEN]
Function getseconds()
   Local sek
   pos = BASS_ChannelGetPosition(BASS_stream)
   getsek# = BASS_ChannelBytes2Seconds(BASS_stream,pos)
   sek = Floor(getsek#)
   Return sek
End Function
mGUI - Graphical User Interface für Blitz3D...Informationen gibt es hier

Man kann sich öfter als zweimal im Leben halb tot lachen.

D2006

Administrator

BeitragMo, Apr 04, 2005 18:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Shocked

Das funktioniert ja tatsächlich...
Was für eine Unlogik.

Jedenfalls ist dann bei mir das nächste Problem, was ich auch noch nicht umgehen konnte, die Benutzung des Befehl BASS_ChannelSetPosition.

Bei Tests hat es immer einmal geklappt und beim zweiten Mal stürzte er ab.
Probiere es eben auch in einer extra Funktion und nun passiert nix...

Hast du das schon hingekriegt?

EDIT:
Confused Langsam ist diese unlogik nervig. Habe es nun hinbekommen:
BlitzBasic: [AUSKLAPPEN]

Function seek(BASS_stream,seek)
Local pos,a
pos = BASS_ChannelSeconds2Bytes(BASS_stream,seek)
a=BASS_ChannelSetPosition(BASS_stream,pos)
End Function


Wichtig scheint zu sein, dass man den Rückgabewert von SetPosition in eine Variable speichert. Lässt man das "a=" weg, geht es zumindest bei mir nicht mehr. Mysteriös.

MfG
D2006

EPS

BeitragDi, Apr 05, 2005 8:49
Antworten mit Zitat
Benutzer-Profile anzeigen
jep...so ungefähr...habs auch nicht verstanden.

Auch wichtig: Die Variable muß explizit auf Local gesetzt sein und es darf keine weitere in der Funktion geben.

Keine Ahnung, ich vermute mal da gibt es einen kleinen BUG in der BASS.DLL bei der Variablenrückgabe. Aber zumindest funzt es so. Umständlich - aber geht Wink
mGUI - Graphical User Interface für Blitz3D...Informationen gibt es hier

Man kann sich öfter als zweimal im Leben halb tot lachen.

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group