Bass Dll Problem: BASS_ChannelSetPosition

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Jean

Betreff: Bass Dll Problem: BASS_ChannelSetPosition

BeitragSa, Dez 08, 2007 17:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo Zusammen

Für meinen Portable Audio Player (Screenshot in der Galerie) sollte die Position in einem beliebigen Audiofile mittels eines Sliders verschoben werden können. Nur leider habe ich damit einige Probleme:

1. Wenn ich den Slider verschiebe geht dieser sofort zur Anfangsposition zurück.

2. Die Byteposition scheint nicht mir der von "BASS_ChannelSetPosition" erwarteten Position übereinzustimmen.

Kann mir jemand sagen, was ich ändern soll?


Code: [AUSKLAPPEN]
Include "bass.bb"

Global datei$ = RequestFile$ ()
Global size = FileSize (datei$)

Global main_window = CreateWindow ("Music Player",0,0, 270, 132,0,1)
Global main_rahmen = CreatePanel (5, 27, 252, 73, main_window, 1)
Global main_slider = CreateSlider (5, 5, 238, 35, main_rahmen,1)
SetSliderRange main_slider, 2, size ;Die Dateigrösse wird als Gesamtlänge interpretiert

Global error = BASS_Init(-1,44100,0,0,BASS_NULL)
Global mhandle = BASS_StreamCreateFile(0,datei$,0,0,BASS_MUSIC_FLOAT)
BASS_ChannelPlay(mhandle,BASS_TRUE) ;Sounddatei abspielen


Repeat
   pos = BASS_StreamGetFilePosition (mhandle,BASS_FILEPOS_CURRENT) ;Aktuelle Abspielposition auslesen...
   SetSliderValue main_slider, pos ;... und mit dem Slider darstellen
   
   event = WaitEvent (1)
   
   If event = $803 Then ;Wird das Fenster gschlossen...
      BASS_Free% () ;...wird der Channel gelöscht...
      End ;...und das Programm beendet
   Else If event = $401 And EventSource () = main_slider Then ;Wird der Slider verschoben...
      BASS_ChannelSetPosition(mhandle,SliderValue (main_slider)) ;...wird die Abspielposition geändert <---PROBLEM!
   End If
Forever


Wink

hectic

Sieger des IS Talentwettbewerb 2006

BeitragSa, Dez 08, 2007 19:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
   CLen#=BASS_ChannelGetLength(BassHandle)
   CPos#=BASS_ChannelGetPosition(BassHandle)


...zum ermitteln der Daten. Aus diesen kann u.a. auch die Apspielposition angezeigt werden.

Um eine neue Position zu setzen, kann folgendes gemacht werden.

Code: [AUSKLAPPEN]
BASS_ChannelSetPositionQ%(BassHandle,PositionInProzent/100.0*CLen,0)


P.S.:

- Mit der Variable PositionInProzent wird eben dann die Position festgelegt.

- Nur zum setzen brauchst du die CPos -Zwischenvariable nicht.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

Jean

BeitragSa, Dez 08, 2007 20:18
Antworten mit Zitat
Benutzer-Profile anzeigen
1000 Dank! Es ist wirklich erfreulich, wie gut die Bass Dll supportet wird! Very Happy

Abrexxes

BeitragSo, Dez 09, 2007 20:44
Antworten mit Zitat
Benutzer-Profile anzeigen
öhm..bitte nicht BASS_ChannelSetPositionQ% sondern BASS_ChannelSetPosition% , sonst umgeht Ihr meinen QWORD Schutz. *g* (böser hectic, umgeht einfach meine mühsam und mit Liebe geproggten Schutzfunktionen). lol

Code: [AUSKLAPPEN]

Function BASS_ChannelSetPosition%(Han_dle,pos%)
      Local temp
      temp = BASS_ChannelSetPositionQ%(Han_dle,pos%,0)
      Return temp
End Function


Ok, beides geht natürlich, ich habe es halt gemacht damit die Dokumentation auch dem Code entspricht. Also der selbe Befehl, dafür fällt die ,0 hinten weg. Deswegen ist die Q Variante auch nicht dokumentiert.

cu

hectic

Sieger des IS Talentwettbewerb 2006

BeitragSo, Dez 09, 2007 21:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Aha, schön zu wissen *amkopfkratz* dachte dass grad die nicht 'Q'-Variante nicht funktionieren würde, da ich (bei nutzen der Funktion) und du (beim erstellen dieser) damals ja Probleme damit hatten.

Hab's bei meinem Dreamplayer grad mal ausprobiert, und funktioniert jetzt auch ohne 'Q' wunderbar.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group