AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Bass.dll erneutes starten von Lied unterbinden

Bass.dll erneutes starten von Lied unterbinden

Ein Thema von Luki206 · begonnen am 31. Jul 2014 · letzter Beitrag vom 31. Jul 2014
Antwort Antwort
Luki206
(Gast)

n/a Beiträge
 
#1

AW: Bass.dll erneutes starten von Lied unterbinden

  Alt 31. Jul 2014, 12:13
@Perlsau: ich habe das Max der Trackbar mit der länge die die Bass.dll zurückgibt wenn ich ihr sage: BASS_ChannelGetLength (ich weiß das dieser Aufruf Bytes zurückgibt) gespeist und somit ist die Trackbar ja bei Max wenn das Lied zu ende ist.

Nur habe ich jetzt einen Equalizer eingebaut und schwupp, es geht Aber danke für die Antworten.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.662 Beiträge
 
Delphi 12 Athens
 
#2

AW: Bass.dll erneutes starten von Lied unterbinden

  Alt 31. Jul 2014, 12:18
Und wieder ein Blick in die Bemerkungen:
Zitat:
Remarks
The exact length of a stream will be returned once the whole file has been streamed, but until then it is not always possible to 100% accurately estimate the length. The length is always exact for MP3/MP2/MP1 files when the BASS_STREAM_PRESCAN flag is used in the BASS_StreamCreateFile call, otherwise it is an (usually accurate) estimation based on the file size. The length returned for OGG files will usually be exact (assuming the file is not corrupt), but when streaming from the internet (or "buffered" user file), it can be a very rough estimation until the whole file has been downloaded. It will also be an estimate for chained OGG files that are not pre-scanned.
Wobei es mir schon komisch vorkommt, wieso das Neustarten eines Songs von der Position einer Trackbar abhängt. Sind da Logik und Darstellung evtl. nicht sauber getrennt?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#3

AW: Bass.dll erneutes starten von Lied unterbinden

  Alt 31. Jul 2014, 15:08
ich habe das Max der Trackbar mit der länge die die Bass.dll zurückgibt wenn ich ihr sage: BASS_ChannelGetLength (ich weiß das dieser Aufruf Bytes zurückgibt) gespeist und somit ist die Trackbar ja bei Max wenn das Lied zu ende ist.
Was treibst du da eigentlich? Du mußt doch nicht jedesmal den Maxwert deiner Trackbar ändern, nur weil das aktuelle Lied kürzer oder länger ist. Bei mir steht die Trackbar auf Max = 100, das sind hundert Prozent, und den Prozentwert berechne ich wie oben bereits dargestellt. Zeig doch mal ein wenig Code, wo du die aktuelle Position der Sounds ausliest und in Relation dazu die Trackbar positionierst.

Nur habe ich jetzt einen Equalizer eingebaut und schwupp, es geht Aber danke für die Antworten.
Was hat denn ein Equalizer mit dem eingangs geschilderten Problem zu tun, daß der Song wiederholt wird? Kommt mir alles ziemlich wirr vor ...

Wobei es mir schon komisch vorkommt, wieso das Neustarten eines Songs von der Position einer Trackbar abhängt. Sind da Logik und Darstellung evtl. nicht sauber getrennt?
Mit Sicherheit
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.662 Beiträge
 
Delphi 12 Athens
 
#4

AW: Bass.dll erneutes starten von Lied unterbinden

  Alt 31. Jul 2014, 15:12
Du mußt doch nicht jedesmal den Maxwert deiner Trackbar ändern, nur weil das aktuelle Lied kürzer oder länger ist. Bei mir steht die Trackbar auf Max = 100, das sind hundert Prozent, und den Prozentwert berechne ich wie oben bereits dargestellt.
Wenn man den Max-Wert für jeden Track wieder neu setzt, kann man sich die eigene Prozentrechnung sparen, was soll daran falsch sein? Blöde wird es nur dann, wenn der Integer-Bereich überschritten wird.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#5

AW: Bass.dll erneutes starten von Lied unterbinden

  Alt 31. Jul 2014, 15:30
Wenn man den Max-Wert für jeden Track wieder neu setzt, kann man sich die eigene Prozentrechnung sparen, was soll daran falsch sein?
Wo habe ich denn angeblich behauptet, daß das falsch sei?

Und was "spart" man denn da? Rechenzeit? Nicht wirklich. Problematisch ist es u.a. genau deshalb:

Blöde wird es nur dann, wenn der Integer-Bereich überschritten wird.
Das heißt, man muß bei Songlängen, die größer als der Integerbereich sind, sowieso umrechnen.

Davon abgesehen ändert sich jedesmal die Darstellung der Progress- oder Trackbar bzw. ihre Einteilung. Außerdem erscheint es mir wenig sinnvoll, einer Progressbar einen Spielraum von sagen wir mal 1.000.000 zu gewähren, wenn auf meinem Bildschirm sowieso nur 1900 Pixel horizontal dargestellt werden können. Da werden dann tatsächlich ständig Positionsänderungen, die man gar nicht sehen kann, unnötigerweise berechnet. Du gehst doch hoffentlich nicht davon aus, daß dein Vorschlag, den Maxwert für jeden Track immer wieder neu zu setzen, allgemeinen Standard darstellt?

Wenn du eine Trackbar zur Positionierung benötigst (mach ich z.B. mit dem oben beschriebenen Slider), genügt der Wert 100 in der Regel ebenfalls. Muß es genauer sein, dann nimmt man eben einen Maxwert von 1000 oder 2000, muß dann daber die Progressbar entsprechend größer darstellen, um diese genaueren Werte überhaupt einstellen zu können.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.662 Beiträge
 
Delphi 12 Athens
 
#6

AW: Bass.dll erneutes starten von Lied unterbinden

  Alt 31. Jul 2014, 15:43
Dafür kannst Du bei einer derart großen Datei (das dürfte dann wahrscheinlich eine ganze Oper im WAV-Format sein) lediglich im Megabyte-Bereich positionieren. Auch nicht das Gelbe vom Ei.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Luki206
(Gast)

n/a Beiträge
 
#7

AW: Bass.dll erneutes starten von Lied unterbinden

  Alt 31. Jul 2014, 20:17
So, ich habe jetzt einmal den Code von Perlsau soweit bearbeitet wie ich denke das es richtig ist. Nur gibt es jetzt ein kleines Problem, die Trackbar spring gleich zum ende bzw. hüpft sofort ans Maximum aber ich erkenne jetzt keinen Fehler. Hier der Code:
Delphi-Quellcode:
procedure TFrmHaupt.TmrPosTimer(Sender: TObject);
Var
  Wert,
  Level,
  Posi : DWord;

begin
  if BASS_ChannelIsActive(strs) = BASS_ACTIVE_PLAYING then
  begin
     Level := BASS_ChannelGetLevel(strs);
     Wert := LoWord(Level);
     posi := BASS_ChannelGetPosition(strs,BASS_POS_BYTE);
     TrbPos.Position := Round(Posi/LLength);
     second := Round(BASS_ChannelBytes2Seconds(strs,Posi));
     LblLaufzeit.Caption := Format('%d:%d', [second div 60, second mod 60]);
  end;

  if BASS_ChannelIsActive(strs) = BASS_ACTIVE_STOPPED then
  begin
   if LRelis then
     begin
       BASS_ChannelPLay(strs, true);
       TrbPos.Position := 0;
       second := 0;
       LblLaufzeit.Caption := '0:0';
     end
    else
     begin
      TmrPos.Enabled := False;
      ImgVorClick(nil);
   end;
  end;
end;
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 20:18 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