Bass.dll pozycja pliku

Odpowiedz Nowy wątek
2010-05-17 22:34

Rejestracja: 9 lat temu

Ostatnio: 8 lat temu

0

Jak pobrać aktualną pozycję odtwarzanej piosenki?

Pobranie samej długości piosenki to:
zmienna "dlugosc" to typ Double

dlugosc:= BASS_ChannelBytes2Seconds(uchwyt, BASS_ChannelGetLength(uchwyt, BASS_POS_BYTE));
Form1.Caption:= IntToStr(Trunc(dlugosc) div 60) + ':' + IntToStr(Trunc(dlugosc) mod 60);

No wyświetla dobrze, ale jak "analogicznie" do powyższego kodu próbuję pobrać pozycję to coś źle mi wyświetla (liczby z kosmosu). BASS_ChannelGetPosition
[glowa]

Pozostało 580 znaków

2010-05-17 22:45

Rejestracja: 17 lat temu

Ostatnio: 4 lata temu

0
var pos:int64; //o ile dobrze pamietam bo pisze z pamieci...
    ms:dword; //pozycja piosenki w milisekundach
begin
  pos:=BASS_ChannelGetPosition(uchwyt, BASS_POS_BYTE);
  ms:=round(1000* BASS_ChannelBytes2Seconds(uchwyt, pos));
{...}
end;

nie ma bata, musi dzialac... chyab ze masz jakas vbr i cos sie pieprzy... moze.

Pozostało 580 znaków

2010-05-17 22:57

Rejestracja: 9 lat temu

Ostatnio: 8 lat temu

0

też nie bardzo

Pozostało 580 znaków

2010-05-17 23:07

Rejestracja: 17 lat temu

Ostatnio: 4 lata temu

0

ja mam tak i dziala:

ms:=Round(1000* BASS_ChannelBytes2Seconds(PlayingChannel, BASS_ChannelGetPosition(PlayingChannel, BASS_POS_BYTE)));

Pozostało 580 znaków

2010-05-17 23:47

Rejestracja: 9 lat temu

Ostatnio: 8 lat temu

0

ok, dzięki, wywaliłem tylko ten tysiąc, bo o tyle za dużo pokazywał
a by wskazywało mi czas w stylu minuty:sekundy to mam sobie sam dopisać IFy itd? (to potrafię, ale tak na wszelki wypadek pytam, czy czasem nie znasz alternatywy)

//edit
dobra, jest lepszy sposób jednak ;D, podobny do mojego kodu na górze

Pozostało 580 znaków

2010-05-17 23:59

Rejestracja: 17 lat temu

Ostatnio: 4 lata temu

0

ja to robie tak ze zamieniam milisekundy na TTime i potem mi latwo to wyswietlac uzywajac FormatDateTime()
zerknij : http://delphi.about.com/od/adptips2005/qt/millisectotime.htm

Pozostało 580 znaków

2010-05-18 02:58

Rejestracja: 9 lat temu

Ostatnio: 8 lat temu

0

nie będę zakładał nowego tematu:

  • ten BASS, funkcja SetVolume to ustawia głośność ogólnie w całym systemie, ta? (bo widzę, że jak suwakiem się bawię to na pasku, przy zegarze też niestety głośność się zmienia).
  • czy jest sposób by ustawiać głośność bez ingerenci w ustawienia głośności systemu? tak jak to ma np. FooBar2000 i inne odtwarzacze, tam sobie w odtwarzaczu nawet na zero dam, a system będzie miał np. 100.

Pozostało 580 znaków

2010-05-18 16:32

Rejestracja: 17 lat temu

Ostatnio: 4 lata temu

0

a w bassie masz cos takeigo jak setVolume? bo ja nie widze.
do kazdego bassa masz dolaczony plik pomocy. odpal go, wez wyszukiwanie, wpisz "volume" i dostenisz odpowiedz.

Pozostało 580 znaków

2010-05-18 19:14

Rejestracja: 9 lat temu

Ostatnio: 8 lat temu

0

dzięki po raz kolejny, chyba muszę częściej zwracać uwagę na to co ściągam:

This function affects the volume level of all applications using the same output device. If you wish to only affect the level of your application's sounds, the BASS_ATTRIB_VOL attribute and/or the BASS_CONFIG_GVOL_MUSIC / BASS_CONFIG_GVOL_SAMPLE / BASS_CONFIG_GVOL_STREAM config options should be used instead.

zaraz posiedzę nad tym

//edit
ok napisałem, działa ładnie (mój odwarzacz działa inaczej niż te z przykładów więc nie będę wklejał całego kodu, a tylko fragmencik):

BASS_ChannelSetAttribute(uchwyt, BASS_ATTRIB_VOL, vol); //vol to zmienna Single (Float chyba też może być)
//do regulacji używam trackbara, przy odpalaniu piosenki pobieram pozycje z trackbara i wykonuję obliczenia by dostać liczbę od 0 do 1 i ustawiam głośność
//podobnie przy przesuwaniu suwaka ustawiam głośność dla uchwytu

Z helpa BASSa

The volume level of a channel.

BASS_ChannelSetAttribute(
    DWORD handle,
    BASS_ATTRIB_VOL,
    float volume
); 

Parameters
handle The channel handle. 
volume The volume level... 0 (silent) to 1 (full). 

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0