AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Problem Trackbar bass.dll
Thema durchsuchen
Ansicht
Themen-Optionen

Problem Trackbar bass.dll

Ein Thema von Ducksoul · begonnen am 28. Aug 2008 · letzter Beitrag vom 28. Aug 2008
 
Ducksoul

Registriert seit: 19. Apr 2006
Ort: Ilmenau
87 Beiträge
 
RAD-Studio 2009 Pro
 
#1

Problem Trackbar bass.dll

  Alt 28. Aug 2008, 16:03
Da meine alte Trackbar nicht flüssig gelaufen ist, bzw. es Störgeräusche gab wenn ich die Frequenz des Timers erhöht habe, habe ich nun den Code angepasst.
Dabei habe ich mich auf den Code von Gausis mp3-Player gestützt (http://www.gausi.de/delphi/memp/5.php).

Das Problem ist jetzt, dass wenn ich unten angegebenen Code nutze, es einige Probleme gibt.

Der Code für den Timer verursacht, dass der Stream immer von vorne beginnt wenn ich pausiere.
Der Code beim Changen der Trackbar verursacht ebenfalls, dass immer von vorne abgespielt wird und nicht von der Position die gewollt ist.
Wenn ich beide Codes gleichzeitig anhabe, dann beginnt der Track immer wieder alle 100ms in einer Endlosschleife.

Woran liegt das?

Delphi-Quellcode:
  (* Update der Progressbar *)
  procedure TRecordForm.RecordTimerTimer(Sender: TObject);
    var t: integer;
    begin
      ProgressBar.Position := Round((BASS_ChannelGetPosition(chan, BASS_POS_BYTE) / BASS_ChannelGetLength(chan, BASS_POS_BYTE)) * 100);
    end; // procedure RecordTimerTimer

  (* Position via ProgressBar ändern *)
  procedure TRecordForm.ProgressBarChange(Sender: TObject);
  begin
    if BASS_ChannelIsActive(chan) = BASS_ACTIVE_Playing
      then begin
        BASS_ChannelPause(chan);
        BASS_ChannelSetPosition(chan, Round(ProgressBar.Position / 100), BASS_POS_BYTE);
        BASS_ChannelPlay(chan, False);
      end
    else
      BASS_ChannelSetPosition(chan, Round(ProgressBar.Position / 100) * BASS_ChannelGetLength(chan, BASS_POS_BYTE), BASS_POS_BYTE);
  end; // procedure ProgressBarChange

  (* PlayButtonClick || Wiedergabe der Aufnahme *)
  procedure TRecordForm.PlayExecute(Sender: TObject);
    begin
          case BASS_ChannelIsActive(chan) of
            BASS_Active_Stopped:
              begin
                BASS_ChannelPlay(chan, True);
                EndSync := Bass_ChannelSetSync(chan, Bass_SYNC_END, 0, @SyncProc, nil);
                ToggleStatus(1);
              end;
            BASS_Active_Playing:
              begin
                BASS_ChannelPause(chan);
                ToggleStatus(2);
              end;
            BASS_Active_Paused:
              begin
                BASS_ChannelPlay(chan, False);
                ToggleStatus(1);
              end;
          end; // case
    end; // procedure PlayExecute

Danke schonmal im Voraus,
Duck
Franz
  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 13:37 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz