[Bass.dll] BASS_ChannelPause() setzt wieder auf 0?

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Toasty

Betreff: [Bass.dll] BASS_ChannelPause() setzt wieder auf 0?

BeitragDo, Feb 10, 2011 19:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,
ich hab folgendes Problem mit der Bass.dll:

Wenn ein Stream "pausieren" soll, ruft das Programm BASS_ChannelPause(Channel) auf,
aber wenn ich den Stream dann fortsetzen will, fängt alles wieder von vorne an.

Codeschnipsel:
Code: [AUSKLAPPEN]
      If MouseDown( 1 )
         If Deck_Play( 0 ) = 1
            Deck_Play( 0 ) = 0
            BASS_ChannelPause( Deck_TrackChannel( 0 ) )
         Else
            If Deck_TrackFile$( 0 ) <> "None"
               Deck_Play( 0 ) = 1
               BASS_ChannelPlay( Deck_TrackChannel( 0 ), BASS_FALSE )
            End If
         End If
      End If


Es ist bestimmt nur ein kleiner Fehler, aber ich finde ihn nicht.

Hat jemand eine Idee?
Gruß, Toasty
@AMD Phenom BE X4 2,5Ghz(Overclocked 2,61Ghz); 4GB DDR2; 512MB nVidia GeForce 8400gs; Win7 Home Premium 64bit
Lua for President!

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDo, Feb 10, 2011 20:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Also bei meinem Dreamplayer hab ich folgendes stehen...

Code: [AUSKLAPPEN]
               ;STOP-TRACK
               Case A[CSTOP]
                  If Pause=1 Then BASS_ChannelPlay%(BassHandle,0)
                  If Pause=0 Then BASS_ChannelPause%(BassHandle)
                  AlphaOfInsider=0
                  Pause=1-Pause

...und es funktioniert so, wie es soll.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D
 

Toasty

BeitragDo, Feb 10, 2011 20:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Wird bei dem Dreamplayer die Datei auch als Stream geladen oder wie?
@AMD Phenom BE X4 2,5Ghz(Overclocked 2,61Ghz); 4GB DDR2; 512MB nVidia GeForce 8400gs; Win7 Home Premium 64bit
Lua for President!

hectic

Sieger des IS Talentwettbewerb 2006

BeitragFr, Feb 11, 2011 21:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Natürlich, sonst würde ja ein Player nichts taugen...

Hier ein Auszug aus der Funktion, die den nächsten möglichen Track abspielt:

Code: [AUSKLAPPEN]
Function NextTrack(FAdd%)
   
   
   
   
   ;BIS/OK
   Repeat
      
      ;ALLE/BASSFREIGABEN
      BASS_ChannelStop(BassHandle)
      BASS_StreamFree(BassHandle)
      BASS_MusicFree(BassHandle)
      BASS_RecordFree()
      
      ;NUR/WENN/MÖGLICH
      If TrackAnz>0 Then
         
         ;NÄCHSTEN/TRACK/SUCHEN
         TrackPos=(TrackPos+FAdd) Mod TrackAnz
         If TrackPos<0 Then TrackPos=(TrackAnz+TrackPos) Mod TrackAnz
         
         ;ABSPIELFORMAT/BESTIMMEN
         If TrackSets[TrackPos]=1 Then BassHandle=BASS_StreamCreateFile(0,TrackList[TrackPos],0,0,$100)
         If TrackSets[TrackPos]=2 Then BassHandle=BASS_MusicLoad(0,TrackList[TrackPos],0,0,$20000,0)
         If TrackSets[TrackPos]=3 Then BassHandle=BASS_StreamCreateURL(TrackList[TrackPos],0,$0,0,0)
         BASS_ChannelSetAttributes(BassHandle,Rate[RatePos],Volume[VolumePos],-101)
         
         ;NUN/ABSPIELEN
         BASS_ChannelPlay(BassHandle,BASS_TRUE)
         
         ;INSIDERANZEIGE
         AlphaOfInsider=4
         Pause=0
      End If
      
      
      
      
      ;CPUSAVE
      Delay 4
      
      ;FEHLERKONTROLLE
      If FAdd=0 Then FAdd=1
      
      ;LETZTE/SICHERHEITSPRÜFUNG
      If TrackPos=(TrackAnz-1) Or TrackAnz=0 Then
         If BASS_ChannelIsActive(BassHandle)=0 Then
            Insider1Text$="Stream not found!"
            Insider2Text$=""
         End If
         Exit
      End If
      
   ;FREIGEBEN/WENN/AKTIVER/CHANNEL/GEFUNDEN
   Until BASS_ChannelIsActive(BassHandle)=1
   
   
   
   
   ;INSIDER/LÖSCHEN
   Insider1Text=""
   Insider2Text=""
   
   ;VARIABLENDEKLARATIONEN
   Local ITemp1$=""
   Local ITemp2$=""
   Local ITemp3$=""
   Local IPos%=0
   Local ISet%=0
   
   ;INSIDER(1)ZUSAMMENSTELLEN
   ITemp1=GetIDTag(TrackList[TrackPos],2)
   ITemp2=GetIDTag(TrackList[TrackPos],3)
   ITemp3=GetIDTag(TrackList[TrackPos],4)
   If ITemp1<>"" And ITemp2<>"" Then ITemp1=ITemp1+" - "
   If ITemp2<>"" And ITemp3<>"" Then ITemp3=" - "+ITemp3
   Insider1Text=Trim(ITemp1+ITemp2+ITemp3)
   
   ;INSIDER(2)ZUSAMMENSTELLEN
   ITemp1=GetIDTag(TrackList[TrackPos],0)
   ITemp2=GetIDTag(TrackList[TrackPos],1)
   If ITemp1<>"" And ITemp2<>"" Then ITemp1=ITemp1+" - "
   Insider2Text=Trim(ITemp1+ITemp2)
   AppTitle ITemp2
   
   ;SICHERHEITSPRÜFUNG
   If Insider1Text="" Then
      
      ;LESTZES/BACKSLASH/SUCHEN
      While IPos<>Len(TrackList[TrackPos])
         IPos=IPos+1: If Mid(TrackList[TrackPos],IPos,1)="\" Then ISet=IPos
      Wend
      
      ;RESTAUSGABE/ZUSAMMENSTELLEN
      Insider1Text="File: "+Mid(TrackList[TrackPos],ISet+1,256)
;      If ISet>1 Then Insider2Text=Left(TrackList[TrackPos],ISet-1)
      AppTitle Insider1Text
   End If
   
   
   
   
End Function

Nicht wundern, der Player spielt folgende Formate ab:

Code: [AUSKLAPPEN]
      If Lower$(Right$(FFile,4))=".mp3" Then IExtension=1
      If Lower$(Right$(FFile,4))=".ogg" Then IExtension=1
      If Lower$(Right$(FFile,4))=".wav" Then IExtension=1
      If Lower$(Right$(FFile,4))=".wma" Then IExtension=1
      If Lower$(Right$(FFile,4))=".mod" Then IExtension=2
      If Lower$(Right$(FFile,4))=".s3m" Then IExtension=2
      If Lower$(Right$(FFile,4))=".mtm" Then IExtension=2
      If Lower$(Right$(FFile,3))=".it" Then IExtension=2
      If Lower$(Right$(FFile,3))=".xm" Then IExtension=2
      If Lower$(Right$(FFile,4))=".pls" Then IExtension=3
      If Lower$(Right$(FFile,4))=".m3u" Then IExtension=3

Wobei die letzten beiden direkte Internet-Streams sind.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group