Musik

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

ToeB

Betreff: Musik

BeitragFr, Dez 26, 2008 16:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich brauche für mein programm eine Lib welche folgendes können sollte :
-Musik Abspielen/anhalten/Pausieren
-Musik ab einer Bestimmten Zeit abspielen lassen
-Totale Zeit der Musik
-Aktuelle abspielzeit der Musik

Gibts sowas ? Also ich meine ist das dann auch Freeware ?

mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

ozzi789

BeitragFr, Dez 26, 2008 17:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Such mal nach bass.dll Wink
(inner forensuche)



mfg
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5

ToeB

BeitragFr, Dez 26, 2008 19:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke Wink

Aber ich kann zwar damit Abspielen, anhalten stopen usw. aber wie krig ich raus, wie lang die Musik ist und wenn ich sie abspiele welche zeit schon vergangen ist (like Windows mediaplayer) ?

mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!
 

Mathe

BeitragFr, Dez 26, 2008 19:19
Antworten mit Zitat
Benutzer-Profile anzeigen
du könntest die vergangene Zeit in eine Variable abspeichern [mit MilliSecs()] und dann einfach...

Musikstartet: Variable = MilliSecs()

laufzeit = MilliSecs() - Variable

ozzi789

BeitragFr, Dez 26, 2008 19:26
Antworten mit Zitat
Benutzer-Profile anzeigen
CPos#=BASS_ChannelGetPosition(music)
CLen#=BASS_ChannelGetLength(music)

mfg Wink
(kommt auf deine Version draufan, nimm die neuste Smile)
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5

ToeB

BeitragFr, Dez 26, 2008 19:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Nochmal Danke =)

Aber kann ich auch manuell die Position setzten ?

EDIT: Der findet die Befehle nicht, hab mir ectra nochmal eine ausem netzt gezogen, weiß aber nicht welcher version das ist. Weiß einer von euch wo ich die aktuellste version Downloaden kann ?

Edit: Okay er findet nur BASS_ChannelGetLength nicht... Mal ne Frage zu BASS_ChannelGetPosition : Wie wende ich das an ?

mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

hectic

Sieger des IS Talentwettbewerb 2006

BeitragFr, Dez 26, 2008 23:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Schau mal hier und auch gleich die beiliegenden Beispieldateien. Die delcs muß natürlich zuvor in dein Userlibs -Ordner. Danach werden auch die Befehle von Blitz3D erkannt.

Wie schon oben genannt ein Auszug aus dem Dreamplayer:

CPos#=BASS_ChannelGetPosition(BassHandle)
CLen#=BASS_ChannelGetLength(BassHandle)


zum auslesen und

BASS_ChannelSetPosition%(BassHandle,Position#)

zum setzen der Abspielposition.

Beachte, dass eine nicht private Nutzung der bass.dll eventuell Lizenzgebühren verlangt. Ich habe dafür 100€ + 19% MwSt bezahlt um Shareware auch verbreiten zu können. Informationen darüber findest du unter http://www.un4seen.com

Edit1: Korrekturen durchgeführt.

ToeB

BeitragSo, Dez 28, 2008 13:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke Wink

Aber der gibt mir immer MAV bei dieser Zeile :
Code: [AUSKLAPPEN]
Channel=BASS_StreamCreateFile(0,"snd\Musik\Mus1.mp3",0,0,BASS_MUSIC_FLOAT)


Was mache ich falsch ?

mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

hectic

Sieger des IS Talentwettbewerb 2006

BeitragSo, Dez 28, 2008 15:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Und die BASS ist zuvor auch mit BASS_Init initialisiert worden?
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

Abrexxes

BeitragSo, Dez 28, 2008 16:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
Was mache ich falsch ?


Frag doch die dll Wink

Code: [AUSKLAPPEN]
If not Channel=BASS_StreamCreateFile(0,"snd\Musik\Mus1.mp3",0,0,BASS_MUSIC_FLOAT)
message$ = BASS_GetErrorString ()
RuntimeError message$
Endif


Psst....BASS_SAMPLE_FLOAT (ist zwar das gleich, aber gewöhn dir sowas nicht an.

ToeB

BeitragSo, Dez 28, 2008 16:30
Antworten mit Zitat
Benutzer-Profile anzeigen
@hectic : ja

@ Abrexxes : Jetzt hab ichs so hingeschrieben wie du es gesagt hast und jetzt kommt MAV und der zeig im Debugger gar nix mehr an Sad

mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

Abrexxes

BeitragSo, Dez 28, 2008 16:34
Antworten mit Zitat
Benutzer-Profile anzeigen
dann liegt der Fehler nicht an Bass sondern an deinem Code oder deiner Installation/Umbegung. Bass kann nämlich keine MAV im blitz Compiler erzeugen, er fängt Fehler selbst ab.

Du könntest jetzt nur noch denn "gesamten" Code posten damit wir da suche.

Edit, funktioniert die Demo_stream.bb im Download?

cu

ToeB

BeitragSo, Dez 28, 2008 16:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja Demo_stream funtz....

Hier mal der Code :
Code: [AUSKLAPPEN]
Include "inc\Bass.bb"
Include "inc\escape.bb"

hWnd = GetActiveWindow()
If Not BASS_Init(-1,44100,0,hWnd,0) Then
   RuntimeError "Konnte Bass.dll nicht initialisieren"
EndIf
If Not BASS_Start() Then
   BASS_Free()
   RuntimeError "Bass.dll konnte nicht gestartet werden"
EndIf


Graphics3D 1024,768,16,2
SetBuffer BackBuffer()

SeedRnd MilliSecs()

;AmbientLight 50,50,50
Global CPiv = CreatePivot()
Global CAM = CreateCamera(CPiv)
   PositionEntity CAM,0,0,-50
   CreateListener(CAM,0.1,1,20)
   
Global sp = CreatePlane()
   PositionEntity sp,0,-10,0
   tex = LoadTexture("gfx\Plane.png")
   EntityTexture sp,tex
   
Global SoundPiv = CreatePivot()
   
Global PatMesh = CreateMesh(CAM)
Global PatSurf = CreateSurface(PatMesh)
Global PatTex = LoadTexture("gfx\Particles.png",2)

Global Explo = Load3DSound("snd\explosion1.wav")
EntityTexture PatMesh,PatTex
EntityFX PatMesh,2+1
EntityBlend PatMesh,3

Global Rakete = LoadMesh("mod\Rakete.b3d")
   ScaleEntity Rakete,0.01,0.01,0.01
   HideEntity Rakete
   
Global Rohr = LoadMesh("mod\Rohr.b3d")
   ScaleEntity Rohr,0.03,0.03,0.03
   HideEntity Rohr
   
Global HM = LoadTerrain("gfx\HM.png")
   ScaleEntity HM,0.5,10,0.5
   Tex = LoadTexture("gfx\Grass10.jpg")
   ScaleTexture Tex,5,5
   EntityTexture HM,Tex
   PositionEntity HM,-64,0,-64
   TerrainDetail HM,2000
   TerrainShading(HM,1)
   EntityPickMode HM,2

Global GlobalSpeed# =1

Global PatAkt = 0

Const MaxPat = 65535


Type a
   Field x#,y#,z#
   Field ExploPat
   Field PartlPat
   Field ExploSpeed#
   Field SmokeSpeed#
   Field PartlSpeed#
   Field ExploRad#
   Field P_F[4]
   Field Mesh
   Field rak
   Field zeit
End Type

Dim pat_on(MaxPat)
Dim pat_pos#(MaxPat,2)
Dim pat_spe#(MaxPat,2)
Dim pat_typ(MaxPat,1)
Dim pat_w#(MaxPat,1)
Dim pat_a#(MaxPat,1)
Dim pat_f(MaxPat,2)
Dim pat_sc#(MaxPat)
Dim pat_gew#(MaxPat)



LoadShow("Show1")


;Channel=BASS_StreamCreateFile(0,"snd\Musik\Mus1.mp3",0,0,BASS_SAMPLE_FLOAT)
If Not BASS_StreamCreateFile(0,"snd\Musik\Mus1.mp3",0,0,BASS_MUSIC_FLOAT)
message$ = BASS_GetErrorString ()
RuntimeError message$
EndIf


If Not Channel Then
   BASS_Free()
   RuntimeError "Konnte die Datei nicht laden, möglicherweiße existiert die Datei nicht!"
EndIf
Global Lenght = BASS_ChannelGetLength(Channel)
If Not BASS_ChannelPlay(Channel,BASS_SAMPLE_LOOP) Then
   BASS_MusicFree(Channel)
   BASS_Free()
   RuntimeError "Konnte Datei nicht abspielen!"
EndIf
BASS_ChannelPause(Channel)
         
EG_Style("gt3")
Global Toolbar = LoadAnimImage("gfx\Toolbar.png",32,32,0,3) : MaskImage ToolBar,255,0,255

Global win.EG_Window = EG_Window(0,500,1024,268,"Main Window",2+4+8+16)


Global icon.EG_IconLine = EG_IconLine(win,10,-15)
EG_IconAdd(icon,Toolbar,0,"Play",0)
EG_IconAdd(icon,Toolbar,2,"Pause",0)
EG_IconAdd(icon,Toolbar,1,"Stop",0)


Buffer = CreateBank(512 * 4)




Repeat   
   Time = MilliSecs()
   FPS_C = FPS_C + 1
   If FPS_MS <= MilliSecs()-1000 FPS = FPS_C:FPS_C = 0:FPS_MS = MilliSecs()
   If MouseDown(2) And Turn = 0 And Show = 0
      Turn = 1
      MoveMouse 1024/2,768/2      
   EndIf
   If Turn = 1
      TurnEntity CPiv,+MouseYSpeed(),0,0,0
      TurnEntity CPiv,0,-MouseXSpeed(),0,1
      If MouseDown(2) = 0 Turn = 0
   EndIf
   MoveEntity CAM,0,0,MouseZSpeed()
   If KeyHit(2) Show = 1 - Show
   RenderWorld()   
   Text 1,1,"Fps:"+FPS+":"+Time2   
   Plot MouseX(),MouseY()
   EG_Main()
   If eg_event_iconline = icon
      Select eg_event_number
      Case 1
         BASS_ChannelPlay(Channel,BASS_SAMPLE_LOOP)
      Case 2
         BASS_ChannelPause(Channel)
      Case 3
         BASS_ChannelStop(Channel)
      End Select
   EndIf
   Color 255,255,255
   Rect win\x+10,win\y+30,win\w-30,win\h-30
   ;Result = BASS_ChannelGetData(Channel,Buffer,BASS_DATA_FFT512);Schreibt die Daten in die Bank "Buffer"
   ;For I = 0 To 128
    ;    Value# = PeekFloat#(Buffer,I * 4);Liest die Daten einzeln aus und schreibt sie in "Value#"
     ;   Color 0,255,0 : Rect I * 5,480 - (Value# * 2000),4,Value# * 2000;Grüne Balken
      ;  Color 0,150,255 : Rect I * 5,480 - Value# * 2000,4,2;Blaue Striche oben auf den Balken
   ;Next
   Text 1,15,BASS_ChannelGetPosition(channel)
   Flip
   Time2 = MilliSecs()-Time
Until KeyHit(1)
BASS_Stop()
BASS_MusicFree(Channel)
BASS_Free()
End

Function CreateParticle(x#,y#,z#,sx#,sy#,sz#,sw#,sa#,sc#,gew#=0,typ1=0,typ2=0,r=255,g=255,b=255)
   pat_on(PatAkt) = 1
   pat_pos(PatAkt,0) = x
   pat_pos(PatAkt,1) = y
   pat_pos(PatAkt,2) = z
   pat_spe(PatAkt,0) =sx
   pat_spe(PatAkt,1) =sy
   pat_spe(PatAkt,2) =sz
   pat_typ(PatAkt,0) = typ1
   pat_typ(PatAkt,1) = typ2
   Pat_w#(PatAkt,0) = Rand(360)
   Pat_w#(PatAkt,1) = sw#
   Pat_a#(PatAkt,0) = 1
   Pat_a#(PatAkt,1) = -sa#
   Pat_f(PatAkt,0) = r
   Pat_f(PatAkt,1) = g
   Pat_f(PatAkt,2) = b
   pat_sc(PatAkt) = sc
   pat_gew(PatAkt) = gew#
   PatAkt =(PatAkt + 1) Mod MaxPat
End Function

Function UpdatePat()
   If CountTriangles(PatSurf) > 0 ClearSurface(PatSurf) : AnZahl = 0
   For i = 0 To MaxPat
      If pat_on(i) = 1
         pat_pos(i,0) = pat_pos(i,0) + pat_spe(i,0) *GlobalSpeed
         pat_pos(i,1) = pat_pos(i,1) + pat_spe(i,1) *GlobalSpeed
         pat_pos(i,2) = pat_pos(i,2) + pat_spe(i,2) *GlobalSpeed
         pat_spe(i,1) = pat_spe(i,1) - pat_gew(i) *GlobalSpeed
         pat_w(i,0) = pat_w(i,0) + pat_w(i,1) *GlobalSpeed
         pat_a#(i,0) = pat_a#(i,0) + pat_a#(i,1)  *GlobalSpeed
         DrawPat(pat_pos(i,0),pat_pos(i,1),pat_pos(i,2),pat_sc(i),pat_w(i,0),pat_a#(i,0),pat_typ(i,0),pat_f(i,0),pat_f(i,1),pat_f(i,2))
         If pat_typ(i,1) = 1
            xx# = pat_pos(i,0) ;- pat_spe(i,0)
            yy# = pat_pos(i,1) ;- pat_spe(i,1)
            zz# = pat_pos(i,2) ;- pat_spe(i,2)
            CreateParticle(xx,yy,zz,0,0,0,Rnd(0.1,2),Rnd(0.05,0.025),0.15,0,1)
         ElseIf pat_typ(i,1) = 2
            CreateParticle(xx,yy,zz,0,0,0,Rnd(0.1,2),Rnd(0.05,0.025),1,0,2,0,pat_f(i,0),pat_f(i,1),pat_f(i,2))
         EndIf
         If pat_a#(i,0) <= 0 DeletePat(i)
         AnZahl = AnZahl + 1
      EndIf
   Next
   Return AnZahl
End Function

Function DrawPat(x#,y#,z#,sc#,w#,a#,typ,r,g,b)
   Local u1#,v1#,u2#,v2#
   Select Typ
      Case 0
         u1=0:v1=0:u2=0.5:v2=0.5
      Case 1
         u1=0.5:v1=0:u2=1:v2=0.5
      Case 2
         u1=0:v1=0.5:u2=0.5:v2=1      
   End Select
   TFormPoint(x#,y#,z#,0,CAM)
   zz#=TFormedZ()
   If zz# > 0
      xx#=TFormedX()
      If xx# > -zz#-1 And xx# < zz#+1
         yy#=TFormedY()
         If yy# > -zz#-1 And yy# < zz#+1
            If w# <> 0
               IA# = ATan2(SC#,SC#)
               x1# = Cos(IA+w)*SC
               x2# = Cos(IA-w)*SC
               y1# = Sin(IA+w)*SC
               y2# = Sin(IA-w)*SC
            Else
               x1# = SC
               y1# = SC
               x2# = SC
               y2# = SC
            EndIf       
            pv0 = AddVertex(PatSurf,xx-x1,yy+y1,zz,u1,v1) : VertexColor(PatSurf,pv0,r,g,b,a#)
            pv1 = AddVertex(PatSurf,xx+x2,yy+y2,zz,u2,v1) : VertexColor(PatSurf,pv1,r,g,b,a#)
            pv2 = AddVertex(PatSurf,xx+x1,yy-y1,zz,u2,v2) : VertexColor(PatSurf,pv2,r,g,b,a#)
            pv3 = AddVertex(PatSurf,xx-x2,yy-y2,zz,u1,v2) : VertexColor(PatSurf,pv3,r,g,b,a#)
            AddTriangle(PatSurf,pv0,pv1,pv2)
            AddTriangle(PatSurf,pv2,pv3,pv0)
         EndIf
      EndIf
   EndIf
End Function

Function DeletePat(index)
   pat_on(index) = 0
   pat_pos(index,0) = 0
   pat_pos(index,1) = 0
   pat_pos(index,2) = 0
   pat_spe(index,0) = 0
   pat_spe(index,1) = 0
   pat_spe(index,2) = 0
   pat_a#(index,0) = 0
   pat_a#(index,1) = 0
   pat_w#(index,0) = 0
   pat_w(index,1) = 0
End Function


Function LoadShow(Name$)
   dat = ReadFile("show\"+Name$+".shw")
   Zahl = ReadInt(dat)
   DebugLog Zahl
   For i = 1 To Zahl
      a.a = New a
      a\ExploPat = ReadInt(dat)
      a\PartlPat = ReadInt(dat)
      a\ExploSpeed = ReadFloat(dat)
      a\SmokeSpeed = ReadFloat(dat)
      a\PartlSpeed = ReadFloat(dat)
      a\ExploRad = ReadFloat(dat)
      For j = 0 To 4
         a\P_F[j] = ReadByte(dat)
      Next
      a\x = ReadFloat(dat)
      a\y = ReadFloat(dat)
      a\z = ReadFloat(dat)
      a\Mesh = CopyEntity(Rohr)
      PositionEntity a\mesh,a\x,a\y,a\z
      pt#=ReadFloat(dat):yw#=ReadFloat(dat)
      RotateEntity a\mesh,pt,yw,0
   Next
   CloseFile dat
End Function


mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

Abrexxes

BeitragSo, Dez 28, 2008 16:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Was mir auf die schnelle auffällt.

BASS_Start nach BASS_Init = Quatsch da bereits gestartet.

Du verwechselst überall Streams und Channels und Musik. Wenn du einen STREAM lädst kannst du keine Musik löschen! Deswegen sollst du immer die richtigen Flags benutzen,also schon wie oben erwähnt.

und dann:
Code: [AUSKLAPPEN]
If Not BASS_StreamCreateFile(0,"snd\Musik\Mus1.mp3",0,0,BASS_MUSIC_FLOAT)


Wo ist denn CHANNEL hin?

Ansonsten sehe ich da nichts auf die schnelle.

Und mach dir selbst einen Gefallen und kürze mal.

Code: [AUSKLAPPEN]
If Not BASS_ChannelPlay(Channel,BASS_SAMPLE_LOOP) Then
   BASS_MusicFree(Channel)
   BASS_Free()
   RuntimeError "Konnte Datei nicht abspielen!"
EndIf


Das ist zwar sicherlich fleissig, aber :

Code: [AUSKLAPPEN]

If not channel = BASS_ChannelPlay(Channel,BASS_SAMPLE_LOOP) RuntimeError "Scheisse...nix Play in Zeile ..."


Reicht vollkommen...oder willst du einen debugger schreiben? Smile

Am schluss reicht Bass_Free() übrigens, denn Rest erledigt FREE immer selbst (Channels/Musik/Streams/etc)

cu

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group