Bass.dll - определение позиции проигрывания потока.

  • Автор темы kalexi
  • Дата начала
K

kalexi

#1
Такое дело. У меня проигрывается файл. Я сделал бар для того, чтобы можно было менять позицию проигрывания (мотать). Все просто, делается так:

Код:
PosBar.max = := BASS_StreamGetLength(result);

procedure TmainFrm.PosBarScroll(Sender: TObject;
ScrollCode: TScrollCode; var ScrollPos: Integer);
begin
if ScrollCode=scEndScroll then
if not BASS_ChannelSetPosition(result,PosBar.Position) then
PosBar.Position := 0;
end;
Все работает НО мне еще необходимо чтобы этот PosBar менял свою позицию во время проигрывания.
Пытался повесить функцию BASS_ChannelGetPosition на таймер, но она при каждом ее вызове притормаживает воспроизведение файла.

Есть еще какие функции или методы решения этой проблемы?
 
I

ISDisk

#2
Код:
procedure TForm1.TimerPosTimer(Sender: TObject);
var
p: DWORD;
time: String;
begin
if (BASS_ChannelIsActive(Chan) > 0) then // playing - update info
begin
p := seeking;
if (seeking = -1) then // not seeking - update pos scroller
begin
p := Trunc(BASS_ChannelBytes2Seconds(Chan, BASS_ChannelGetPosition(Chan)));
PosBar.Position := p;
end;
end;

end;
 
M

M@T$

#3
Как отследить резкое увеличение звукового сигнала..........и обратно.......

В Delphi 7