nie, jednak nie.... :-D
faktycznie udalo mi sie to zrobic bassem, ale na pelne (prawie) rozwiazanie natknalem sie bardzo przypadkowo: analizujac kod zrodlowy zapisywania mp3 do wav (writewav -w przykladowych zrodlach bass'a). troche go przerobilem na wlasne potrzeby i dziala swietnie:
var h, volume:DWORD;
begin
h := BASS_StreamCreateFile(FALSE, PChar(SourceFileName), 0, 0, BASS_STREAM_DECODE);
while (BASS_ChannelIsActive(h) > 0) do
begin
volume:=BASS_ChannelGetLevel(h);
Chart1.Series[0].Add(volume);
Application.ProcessMessages; //niby niepotrzebne bo tylko spowalnia
PercentDone := Trunc(100 * (BASS_ChannelGetPosition(h) / BASS_ChannelGetLength(h)));
ProgressBar.Position := PercentDone;
LabelOp.Caption := 'Done ' + IntToStr(PercentDone) + '%';
end;
BASS_StreamFree(h);
end;
jesli ktos bedzie chcial tego kiedys uzyc to dla wyjasnienia powiem jeszcze, ze wywolanie BASS_ChannelGetLevel() powoduje przesuniecie pozycji o +20ms.
dlatego petla bedzie wywolana (dlugosc_dzwieku[ms] / 20) razy.
pozdrawiam [browar]