bass.dll
Übersicht

StaBaumBetreff: bass.dll |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Wie genau funktioniert das mit dieser bass.dll ? | ||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Schau in die tutorials dafür bzw. im Archiv müsste ein aktueller Wrapper sein wie du in den tutorials sehen wirst ![]() Und Fragen haben in DLL und Userlibs nix zu suchen |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
mas93 |
![]() Antworten mit Zitat ![]() |
---|---|---|
hi, Ich arbeite gerade an einem Musikplayer und habe jetzt folgendes Problem
Code: [AUSKLAPPEN] ;playlist spielen For p.playlist=Each playlist If p\done=1 Then merkreihe=p\reihe ;abspielen Buffer = CreateBank(512 * 4);Die Bank "Buffer" wird erstellt Channel=BASS_StreamCreateFile(0,p\name$,0,0,BASS_SAMPLE_LOOP) ;wenn nicht,ehr gespielt wird zum nächsten wechseln EndIf So wenn ich das starte passiert einfach nichts Ich glaube es liegt daran das er beim abspielen nichtmehr aus der For...Next schleife rauskommt, aber ich weiss nicht. Könnt ihr mir da helfen? mfg mas93 |
||
www.lpbase.de
Meine Linkin Park Fanseite[Noch im Aufbau] |
![]() |
Lunatix |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wer sagt dem IF, das p/done auf True steht... machs mit einer Funktion, rufe den ersten Eintrag auf und prüfe, ob er zuende ist, wenn ja, gehe die Liste durch und spiel das nächste ab. | ||
[size=9]Pro|gram|mier|er: Ein Organismus, der Koffein in Software umwandelt.
Geben Sie eine beliebige 11-stellige Primzahl ein, um fortzusetzen... |
![]() |
mas93 |
![]() Antworten mit Zitat ![]() |
---|---|---|
danke für die schnelle antwort, aber p\doneist schon true.
Ich hab hier mal den gesamten Playlist code: Code: [AUSKLAPPEN] ;Neuer Playlisteintrag If KeyHit(25) Then titel$ = DLLGetOpenFileName$("Please Select File To Load","C:\Games\",sAFilter$,OFN_HIDEREADONLY Or OFN_FILEMUSTEXIST) p.playlist=New playlist row=row+1 p\name$=titel$ p\reihe=row EndIf ;Playlist anzeigen For p.playlist=Each playlist Color 0,255,0 Rect p\x,p\y,405,15,0 Color 255,0,0 Text p\x,p\y,p\name$ Next ;playlist sortieren For p.playlist= Each playlist If p\reihe=1 Then p\y=185 :p\done=1 If p\reihe=2 Then p\y=201 If p\reihe=3 Then p\y=217 If p\reihe=4 Then p\y=233 If p\reihe=5 Then p\y=249 If p\reihe=6 Then p\y=265 If p\reihe=7 Then p\y=281 If p\reihe=8 Then p\y=297 If p\reihe=9 Then p\y=313 If p\reihe=10 Then p\y=329 Next ;playlist spielen For p.playlist=Each playlist If p\done=1 Then merkreihe=p\reihe ;abspielen Buffer = CreateBank(512 * 4);Die Bank "Buffer" wird erstellt Channel=BASS_StreamCreateFile(0,p\name$,0,0,BASS_SAMPLE_LOOP) ;wenn nicht,ehr gespielt wird zum nächsten wechseln EndIf If Not channel Then p\done=0 If p\reihe=merkreihe+1 Then p\done=1 EndIf Next |
||
www.lpbase.de
Meine Linkin Park Fanseite[Noch im Aufbau] |
![]() |
mas93 |
![]() Antworten mit Zitat ![]() |
---|---|---|
so, ich hab mal meinen ganzen ordner hochgeladen damit ihr´s mal testen könnt.
Wäre nett wenn ihr mir da helfen könntet, weil ich habe gerade voll Spaß an dem Projekt und ich habe kein bock dass jetzt nur wegen nem kleinen Fehler hinzuwerfen. Und ich find den Fehler einfach nicht. mfg mas93 P.S.: Der Link^^:https://www.blitzforum.de/upload/file.php?id=1854 |
||
www.lpbase.de
Meine Linkin Park Fanseite[Noch im Aufbau] |
![]() |
Abrexxes |
![]() Antworten mit Zitat ![]() |
---|---|---|
Mir fällt so direkt nix auf, aber testen kann leider nicht da aktuelle bass.
cu |
||
![]() |
mas93 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich hab die bass.dll doch beigelegt.
Dann kannst du doch die nehmen oder? |
||
www.lpbase.de
Meine Linkin Park Fanseite[Noch im Aufbau] |
![]() |
Abrexxes |
![]() Antworten mit Zitat ![]() |
---|---|---|
Theortisch ja, praktisch nein, da er mir sagt das sich im Windows Ordner auch die aktuelle befindet und ich keinen Bock habe schon wieder alles umzustellen. Ich keine auch keinen der sich heute noch das DX7 SDK installieren würde nur weil der Author veraltete libs und Compiler nutzt.
Das ist keine Kritik, nur halt mein Standpunkt. |
||
![]() |
mas93 |
![]() Antworten mit Zitat ![]() |
---|---|---|
klar, kein problem.
Kann sonst wirklich keiner helfen? Ich hab ja auch schon im debugger gestartet und channel hatte immer einen Wert. Das heißt doch das es spielt,oder? |
||
www.lpbase.de
Meine Linkin Park Fanseite[Noch im Aufbau] |
![]() |
Abrexxes |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nein, nur das zu diesem Zeitpunkt etwas geladen ist. Ich weis nicht wie es bei der alten ist, aber auch da sollte es einen extra Befehl geben um zu gucken ob das Teil tatsächlich was spielt.
cu |
||
![]() |
mas93 |
![]() Antworten mit Zitat ![]() |
---|---|---|
so, ich hab mal das if not channel rausgenommen, weil channel ist ja am anfang 0, also tritt das dann auch gleich ein.
Und siehe da, man hört etwas. Aber nur lautes Rauschen(Glaube kommt daher dass immer n paar töne repeatet werden da es in der for...Next ist) Wie bekommm ich das jetzt hin? Code: [AUSKLAPPEN] ;-------------------------------------Playlist-------------------------------------- ;Neuer Playlisteintrag If KeyHit(25) Then titel$ = DLLGetOpenFileName$("Please Select File To Load","C:\Games\",sAFilter$,OFN_HIDEREADONLY Or OFN_FILEMUSTEXIST) p.playlist=New playlist row=row+1 p\name$=titel$ p\reihe=row EndIf ;Playlist anzeigen For p.playlist=Each playlist Color 0,255,0 Rect p\x,p\y,405,15,0 Color 255,0,0 Text p\x,p\y,p\name$ Next ;playlist sortieren For p.playlist= Each playlist If p\reihe=1 Then p\y=185 :p\done=1 If p\reihe=2 Then p\y=201 If p\reihe=3 Then p\y=217 If p\reihe=4 Then p\y=233 If p\reihe=5 Then p\y=249 If p\reihe=6 Then p\y=265 If p\reihe=7 Then p\y=281 If p\reihe=8 Then p\y=297 If p\reihe=9 Then p\y=313 If p\reihe=10 Then p\y=329 Next ;playlist spielen For p.playlist=Each playlist If p\done=1 Then merkreihe=p\reihe ;abspielen Buffer = CreateBank(512 * 4);Die Bank "Buffer" wird erstellt Channel=BASS_StreamCreateFile(0,p\name$,0,0,BASS_SAMPLE_LOOP) ;wenn nicht,ehr gespielt wird zum nächsten wechseln EndIf If Not BASS_StreamPlay(Channel,1,BASS_SAMPLE_LOOP) Then BASS_MusicFree(Channel) BASS_Free() RuntimeError "Konnte Datei nicht abspielen!" EndIf Next mfg mas93 |
||
www.lpbase.de
Meine Linkin Park Fanseite[Noch im Aufbau] |
BlitzBasic303Betreff: RE: |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Also das einzige was mir jetzt einfallen würde ist das wenn bei mehren Tracks P\Done=true ist, dass dann alle abgespielt werden, oder, dass du die funktion in der Hauptschleife aufrufst und du damit den Track ein paar tausend mal lädst. Außerdem glaube ich du musst das CreateBank nur einmal aufrufen.
Und warum soll Channel nachdem du es geladen hast =0 sein? Dass ist nur der Fall wenn er es nicht laden konnte, hat er es erfolgreich geladen müsste eine 1 zurückgegeben werden. |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
@mas93, tue dir selber einen Gefallen und lade dir die neue Library der bass.dll runter. Abrexxes gibt dir die Ratschläge nicht, weil er faul ist dir zu helfen, sondern auch, weil die alte bass.dll erstmal recht umständlich ist und bei weitem nicht so viel kann, wie die neue. Ich selber habe auch mit der alten lange rumgespielt und als letzts raus gekommen ist folgendes http://www.hectic.de/data/EmPeDray.rar . Da liegt auch .bb-Code bei, falls du davon nicht abzubringen bist. Allerdings hat Abrexxes viele schöne .decls für die neue bass.dll geschrieben https://www.blitzforum.de/foru...hp?t=23802 , und ich muss sagen, dass diese viel einfacher zu bedienen ist. Auch hat Abrexxes zu jedem KrimsKrams jeweils ein Beispielcode beigelegt, auch liegt eine neue Version von meinem Player mit Code dabei. Da kannst du selber vergleichen, was nun wirklich besser ist, und ob es sich lohn an der alten Version sich die Zähne auszubeissen. Ich habe nämlich es nicht geschaft, bei der alten Version das zu machen, was du grad machen willst.
Mein Player (dreamplayer) nutzt übrigens das überprüfen des Channels, ob er grad was spielt oder nicht, um eventuell den nächsten Track zu starten. |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
![]() |
mas93 |
![]() Antworten mit Zitat ![]() |
---|---|---|
ok, dann werd ich mir mal die neue anschauen.
Acja , ich wollte channel auch benutzen um zu testen ob ein Titel zuende gespielt wurde um den nächsten in der playlist zu starten. Aber egal,Ich versuch das ganze jetzt mal mit der neuen bass.dll. Wir dann wahrscheinlich auch besser. mfg mas93 P.S.:Und sehe ich dass dann richtig dass ihr mir dann besser helfen könnt?? |
||
www.lpbase.de
Meine Linkin Park Fanseite[Noch im Aufbau] |
![]() |
mas93 |
![]() Antworten mit Zitat ![]() |
---|---|---|
so, ich hab alles jetzt für die neue dll umgeschreiben.
Habe aber immer noch das gleiche problem, dass wenn ich was über die playlist(taste: p) abspiele sich alles immer wieder holt und mischt... Ich glaube, dass das Programm aus irgend einer schleife nichtmehr rauskommt, denn als ich escape drücken wollte hat isch das Programm nicht beendet. mfg mas93 Code: [AUSKLAPPEN] Include "blitzsys.bb" ;Für den öffnen dialog Include "bass.bb" ;Für den Sound Type playlist Field reihe Field x Field y Field name$ Field done End Type Graphics 405,400,16,2 SetBuffer BackBuffer() HidePointer Global titel$="12step.mp3" volume=LoadImage("gfx\volume.png") window=LoadImage("gfx\window.png") MaskImage window,0,0,255 mouse=LoadImage("gfx\mouse.png") MaskImage mouse,0,0,255 playbutton=LoadImage("gfx\play.png") stopbutton=LoadImage("gfx\stop.png") pausebutton=LoadImage("gfx\pause.png") openbutton=LoadImage("gfx\open.png") ;Die Öffnen .dll If DLLBlitzSysInitialise() = False Then RuntimeError("blitzsys.dll not found, you suck! :)") tx=0 vx=280 vy=110 BASS_SetVolume(50) mousehitt=MouseHit(1) FlushMouse() While Not KeyHit(1) mousehitt=MouseHit(1) ;-----------Titel anzeigen------------- Text tx,20,"Now Playing: "+sFileName$ tx=tx+1 If tx>390 Then tx=0 ;------------------------------------- ;-----------------Bilder zeichnen-------------- DrawImage window,0,0 DrawImage volume,vx,vy DrawImage pausebutton,60,60 DrawImage playbutton,30,60 DrawImage stopbutton,90,60 DrawImage openbutton,375,160 If pause=1 Then Color 255,0,0: Rect 60,60,30,15,0 If Stop1=0 Then Color 0,255,0: Rect 30,60,30,15,0 If Stop1=1 Then Color 255,0,0: Rect 90,60,30,15,0 ;----------------------------------------------- ;---------------------DER ÖFFNEN DIALOG--------------------------- If RectsOverlap(MouseX(),MouseY(),1,1,375,160,15,15)And mousehitt=1 Then sAFilter$ = "All Files (*.*)" + Chr(0) + "*.*" + Chr(0) + "Text (*.TXT)" + Chr(0) + "*.TXT" + Chr(0) sFileName$ = DLLGetOpenFileName$("Please Select File To Load","C:\Games\",sAFilter$,OFN_HIDEREADONLY Or OFN_FILEMUSTEXIST) error=BASS_Init(-1,44100,0,0,BASS_NULL) Channel=BASS_StreamCreateFile(0,sFileName$,0,0,BASS_MUSIC_FLOAT) BASS_ChannelPlay(channel,BASS_TRUE) Buffer = CreateBank(512 * 4);Die Bank "Buffer" wird erstellt EndIf ;----------------------------------------------------------------- ;------------------------------------------------PAUSE/STOP/PLAY---------------------------------------- ;If RectsOverlap(MouseX(),MouseY(),1,1,60,60,30,10)And mousehitt=1 Then ;Wenn Taste P betätigt, zwischen Pause und Resume umschalten ; Pause=1-Pause ; If Pause=1 Then ; BASS_ChannelPause(Channel) ;Else If Pause=0 Then ; BASS_ChannelResume(Channel) ;End If ;End If If RectsOverlap(MouseX(),MouseY(),1,1,30,60,30,10) Or RectsOverlap(MouseX(),MouseY(),1,1,90,60,30,10)And mousehitt=1 Then ;Wenn Taste S betätigt, zwischen Stop und Play umschalten Stop1=1-Stop1 If Stop1=1 Then BASS_ChannelStop(Channel) Else If Stop1=0 Then BASS_ChannelPlay(channel,BASS_TRUE) End If End If ;Lautstärke If ImagesCollide(mouse,MouseX(),MouseY(),0,volume,vx,vy,0)And MouseDown(1) Then If Not vy>160 Then If Not vy<60 Then vy=MouseY() If vy>=160 Then vy=vy-1 If vy<=60 Then vy=vy+1 BASS_SetVolume(160-vy) ;-------------------------------------------------------------------------------------------------------- ;-------------------------------------Playlist-------------------------------------- ;Neuer Playlisteintrag If KeyHit(25) Then titel$ = DLLGetOpenFileName$("Please Select File To Load","C:\Games\",sAFilter$,OFN_HIDEREADONLY Or OFN_FILEMUSTEXIST) p.playlist=New playlist row=row+1 p\name$=titel$ p\reihe=row EndIf ;Playlist anzeigen For p.playlist=Each playlist Color 0,255,0 Rect p\x,p\y,405,15,0 Color 255,0,0 Text p\x,p\y,p\name$ Next ;playlist sortieren For p.playlist= Each playlist If p\reihe=1 Then p\y=185 :p\done=1 If p\reihe=2 Then p\y=201 If p\reihe=3 Then p\y=217 If p\reihe=4 Then p\y=233 If p\reihe=5 Then p\y=249 If p\reihe=6 Then p\y=265 If p\reihe=7 Then p\y=281 If p\reihe=8 Then p\y=297 If p\reihe=9 Then p\y=313 If p\reihe=10 Then p\y=329 Next ;playlist spielen For p.playlist=Each playlist If p\done=1 Then merkreihe=p\reihe play=1 merkname$=p\name$ ;wenn nicht,ehr gespielt wird zum nächsten wechseln If BASS_ChannelIsActive(bass_handle)=0 Then p\done=0 If p\reihe=merkreihe+1 Then p\done=1 EndIf EndIf Next ;abspielen If play=1 Then Buffer = CreateBank(512 * 4);Die Bank "Buffer" wird erstellt error=BASS_Init(-1,44100,0,0,BASS_NULL) Channel=BASS_StreamCreateFile(0,merkname$,0,0,BASS_MUSIC_FLOAT);------------------------------------------------------------------------------------------------------ BASS_ChannelPlay(channel,BASS_TRUE) play=0 EndIf ;----------------------------------------------VISUALISIERUNGEN---------------------------------------- If channel Then Result = BASS_ChannelGetData(Channel,Buffer,BASS_DATA_FFT512);Schreibt die Daten in die Bank "Buffer" For I = 1 To 5 Value# = PeekFloat#(Buffer,I * 4);Liest die Daten einzeln aus und schreibt sie in "Value#" If value#>0.1 Then Color 255,0,0 If value#<0.05 Then Color 0,255,0 If value#<0.1 And value#>0.05 Then Color 255,128,0 Circle(195,115,value#*100,360,0,0) Color 0,255,0 : Rect I * 20 ,152,10,(Value# *100);Grüne Balken Next EndIf ;------------------------------------------------------------------------------------------------------ Text 10,0,value# DrawImage mouse,MouseX(),MouseY() Flip 0 Cls Wend BASS_Stop() BASS_MusicFree(Channel) BASS_Free() End Function Circle(x,y,r,w#,st#=0,full=0) ;X = X-Position ;Y = Y-Position ;r = Radius des Kreises ;w#(Winkel) = Winkel ;st#(Start) = Anfang ( ° ) ;full(voll) = Gefüllter kreis For i = 1 To w Plot x+(Sin(-(i+(st+180)))*r),y+(Cos(-(i+(st+180)))*r) If full = 2 Then Line x,y,x+(Sin(-(i+(st+180))))*r,y+(Cos(-(i+(st+180)))*r) If full = 1 Then Line x,y,x+(Sin(-(w+(st+180))))*r,y+(Cos(-(w+(st+180)))*r) Line x,y,x+(Sin(-(1+(st+180))))*r,y+(Cos(-(1+(st+180)))*r) EndIf Next End Function [edit]ok habs gefunden. das Problem ist hier: Code: [AUSKLAPPEN] For p.playlist=Each playlist If p\done=1 Then merkreihe=p\reihe play=1 hier wird jedesmal play auf 1 gesetzt.Wie kann ich machen das play nur einmal ausgeführt wird? Also eigentlich wie mache ich, dass das abspielen also createchannel und playchannel... nur 1 mal ausgeführt wird in der hauptschliefe und zwar wenn p\done=1 ist(Siehe code über diesem text) wäre nett wen ihr mir da helfen könntet. [/edit] |
||
www.lpbase.de
Meine Linkin Park Fanseite[Noch im Aufbau] |
![]() |
Abrexxes |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi,
du kannst prüfen ob der Channel schon spielt mit "BASS_ChannelIsActive" rein logisch wäre das dann bei dir: Code: [AUSKLAPPEN] wasgehtaaaaaaaaaaaaaaaaaab = BASS_ChannelIsActive (deinchannel) If play = 0 and wasgehtaaaaaaaaaaaaaaaaaab = BASS_ACTIVE_STOPPED then *abspielen* So erfährst du genau ob gerade Pause/Play etc actic ist (siehe die bass.chm). Hier die Antworten aus der bass.bb Code: [AUSKLAPPEN] ; BASS_ChannelIsActive values Const BASS_ACTIVE_STOPPED = 0 Const BASS_ACTIVE_PLAYING = 1 Const BASS_ACTIVE_STALLED = 2 Const BASS_ACTIVE_PAUSED = 3 So kannst du also auch verhindern das neu gestartet wird wenn nur PAUSE aktiv ist. Ansonsten poste das ganze Project (Folder). Deine Main ist etwas zu gross um das im Kopf zu visualisieren *g*. Da du aber nun die neue Version nimmst können wir das auf Anhieb compilieren und nach dem Fehler suchen. Aber mal warten was hectic sagt, er hat ja ähnliches schon hinter sich. ![]() cu |
||
![]() |
mas93 |
![]() Antworten mit Zitat ![]() |
---|---|---|
ok thx abrexxes.
Aber das mit pause etc war nicht das problem, sondern dass alles so wiederholt abgespielt wird. Trotdem danke. Hier jetzt das ganze projekt:https://www.blitzforum.de/upload/file.php?id=1865 mfg mas93 |
||
www.lpbase.de
Meine Linkin Park Fanseite[Noch im Aufbau] |
![]() |
Abrexxes |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich glaube wir reden alle aneinander vorbei. Dein Teil geht hier soweit einwandfrei.
Du willst also (vermute ich mal) das dein Lied NUR EINMAL KOMPLETT abgespielt wird und dann AUTOMATISCH nicht mehr wiederholt wird...ist das richtig? Du solltest BASSinit am Anfang des Programms machen, sonst kommt es beim nächsten Play mit Sicherheit zum Problem. Diese bass wird nämlich ohne Gnade eine Instanz nach der anderen öffnen. ![]() Also include starte bass Hauptschleife beende bass end cu |
||
![]() |
mas93 |
![]() Antworten mit Zitat ![]() |
---|---|---|
nein^^
Du musst die titel mit der tastee p laden. P ist die playlist. Wenn du da unten auf den öffnen button klickst geht alles. Das weiss ich.^^ Nur nicht wenn du es mit der playlist machst(Taste p) mfg mas93 |
||
www.lpbase.de
Meine Linkin Park Fanseite[Noch im Aufbau] |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group