AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Bass.dll: Länge eines Chiptunes ermitteln.
Thema durchsuchen
Ansicht
Themen-Optionen

Bass.dll: Länge eines Chiptunes ermitteln.

Ein Thema von Mr Whoopee · begonnen am 12. Okt 2005 · letzter Beitrag vom 13. Okt 2005
 
Mr Whoopee

Registriert seit: 28. Jun 2004
73 Beiträge
 
#1

Bass.dll: Länge eines Chiptunes ermitteln.

  Alt 12. Okt 2005, 13:40
Guten Morgen,
ich möchte die Länge eines Chiptunes mithilfe der Bass.dll (von un4seen) ermitteln. Ich bin jetzt soweit, dass er mir irgendeine Zahl ausgibt, mit der ich nichts anfangen kann:
Round(BASS_ChannelBytes2Seconds(mods, BASS_MusicGetLength(mods, True))); So ist beispielsweise der Wert, der mir ausgegeben wird, 24348. Die Länge des Chiptunes ist aber 38 Sekunden. Ich weiß jetzt nicht, wie ich die 24348 in MM:SS umwandeln soll.
Ich habe nach diesem Problem hier auch schon gesucht und bin auf den TBassDLLPlayer gestoßen. Da habe ich mir den SourceCode mal angeschaut und habe diese Funktion gefunden:
Delphi-Quellcode:
var SpeedinProzent: Integer;
...
function TBassdllPlayer.GetSongLength: integer;
begin
  Result := 0;

  Case Modus of
    moSamples: Result := round(BASS_ChannelBytes2Seconds(Channel,
                 BASS_StreamGetLength(Channel)));

    moMusik : Result := round(BASS_ChannelBytes2Seconds(Channel,
                 BASS_MusicGetLength(Channel, True)) * (SpeedinProzent / 100));
  end;
end;
Da ich nur Chiptunes abspiele, wird nur dieser Teil benötigt, was ja im endeffekt, angepasst an meine Variablen, das gleiche ist, wie mein SourceCode:
moMusik : Result := round(BASS_ChannelBytes2Seconds(Channel, BASS_MusicGetLength(Channel, True)) * (SpeedinProzent / 100)); Das einzige, was hier noch zusätzlich eingeführt wurde ist die SpeedinProzent-Variable, die aber (ersichtlich aus dem weiteren Quelltext) standardmäßig auf 100 gesetzt werden sollte:
Delphi-Quellcode:
procedure TBassdllPlayer.ResetDefaultValues;
var i: integer;
begin
...
  SpeedinProzent := 100;
...
end;
Wenn die also 100 ist, dann wäre (SpeedinProzent / 100)=1 und 1*round(BASS_ChannelBytes2Seconds(Channel, BASS_MusicGetLength(Channel, True)) auch wieder das gleiche Ergebnis, was ich auch schon habe.

Kann mir jetzt jemand sagen, wie ich nun die Länge in MM:SS bekomme?

Danke,


Whoopee


EDIT: Die Doku der DLL sagt wie man die Länge bekommt, aber nicht, wie man sie umrechnet :/.

Zitat:
BASS_MusicGetLength

--------------------------------------------------------------------------------

Retrieves the length of a MOD music.

DWORD WINAPI BASS_MusicGetLength(
HMUSIC handle,
BOOL playlen
);


Parameters
handle The MOD music's handle.
playlen The length to retrieve... TRUE = the playback length (in bytes), FALSE = the order length.


Return value
If succesful, then the music's length is returned, else -1 is returned. Use BASS_ErrorGetCode to get the error code.

Error codes
BASS_ERROR_HANDLE handle is not valid.
BASS_ERROR_NOTAVAIL The BASS_MUSIC_CALCLEN flag was not used with BASS_MusicLoad, or the playback length could not be calculated (the music does not end).


Example
To start playback of a MOD music from the beginning of the last order.

DWORD len=BASS_MusicGetLength(music,FALSE); // get length
BASS_ChannelSetPosition(music,MAKELONG(len-1,0)); // seek to last order
BASS_ChannelPlay(music,FALSE); // play



See also
BASS_ChannelBytes2Seconds, BASS_ChannelSetPosition, BASS_MusicLoad
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:07 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz