Sound sichtbar machen ?
Übersicht

![]() |
BigmichiBetreff: Sound sichtbar machen ? |
![]() Antworten mit Zitat ![]() |
---|---|---|
Gibt es eine möglichkeit in BB oder BMax Soudn sichtbar zu machen ? sprich Vis. ??
hab eien Demo gesehen aus franzeland glaube ich und da ging es o.O weiß jemand wie das geht ? =) |
||
![]() |
Henry |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich glaube mit der bass.dll funktioniert das, bin mir aber nicht sicher. | ||
Aiya Eärendil Elenion Ancalima!
All you have to decide is what to do with the time that is given to you. • Robsite.de ist eine Anlaufstelle für Tutorials und Tools, die Noobs das Leben leichter machen! • Forensuche ist nicht nur als Lückenfüller in den oberen Links gedacht! |
![]() |
Bigmichi |
![]() Antworten mit Zitat ![]() |
---|---|---|
ja das hab ich mri auch schon egdacht weil die ja dabei war nur wie funktioniert das o.O | ||
D²O |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Morszeck->Ping-husky ![]() hatte, soweit ich das noch in erinnerung habe, mit Blitzbasic und der bass.dll gemacht. Vieleicht meldet er sich hierzu mal. |
||
Blitz+; Blitz3d; BlitzMax; GLBasic; Purebasic;
GameMaker Studio 1.4xx; AGK; |
Apocalyptic |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Lad dir die BlitzBass.dll runter, und schau dir die Beispiele an... | ||
Suum cuique
[ www.ffs-net.de.vu ] [ Raycaster ] |
![]() |
Vertex |
![]() Antworten mit Zitat ![]() |
---|---|---|
http://mitglied.lycos.de/theve...BASSex.rar
Andere Dateien sind nur böse ![]() |
||
vertex.dreamfall.at | GitHub |
morszeck |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ja habe es mal gemacht, aber dies ging nur mit einer WAV Datei, da die Daten im Rohformat daliegen.
Denke mal mit Bass.dll bist du besser bedient. Sonst hier ist der Code: Code: [AUSKLAPPEN] ; WaveSample 1.5 @ René Morszeck
; ; Einlesen und Dekodieren von wave-Files 8 und 16 bit, mono und stereo ; Ausgabe der Wave's in Echtzeit mit Fehlerkorrektur ; So das die Ausgabe auch bei langsamen PC's synchron ist ; Graphics3D 1024,768,32,2 SetBuffer BackBuffer() ;######################################## Global data_format ; 0=mono 1=stereo / Normalfall auch bei Mono ist immer 1 für beide Lautspecher Global data_kanal ; 1 oder 2, gibt effektiven 1=mono/kanal 2= stereo/kanal Global data_sample ; Frequenzwiedergabe zbsp 44100 Hz Global data_bytesprosekunde ; effektive abgespielte Bytes pro Sekunde Global data_bytesprosample ; 1 (1Byte,mono), 2(1Byte,stero oder 2Byte,mono) oder 4 (2Byte,stereo) Byte Global data_bitsprosample ; 8 oder 16 Bits pro Kanal Global data_laenge ; Gelesene/Abgespielte Daten in Byte Global data_laengeeffektiv ; Gespeicherte Datensätze in Byte im Type 'wave' Global data_timetotal# ; Totale Abspielzeit in Sekunden Global data_timebyte# ; Zeit in Millisekunden pro Datensatz aus Type 'wave' für Echtzeitwiedergabe Global kanal1 Global kanal2 Global t Global timer ;---------------------------------------- ; Einstellungen für den Effekt Dim s#(359) Dim c#(359) For i=0 To 359 s#(i) = Sin(i) c#(i) = Cos(i) Next Const teiler = 256 Const data_rate = 360 a = 1 x = 1 pivot = CreatePivot() cam = CreateCamera(pivot) light = CreateLight(1,cam) RotateEntity light, 90, 0, 0 MoveEntity cam, 0, 220, -250 TurnEntity cam, 45,0,0 AmbientLight 255,255,255 ;CameraClsColor cam,0,0,255 CameraZoom cam, 1 ;CameraProjMode cam, 2 ;CameraFogMode cam, 1 ;CameraFogRange cam,250,700 ;CameraFogColor cam,180,180,180 objekt = data_rate/2 Dim o1(objekt) For i=0 To objekt-1 o1(i) = CreateSphere(4) j = 255.0/(objekt)*i EntityColor o1(i), j, 255-j, 0 ; EntityFX o1(i),12 Next ;######################################## file$ = "BSW_SF.wav" ; <============= hier den Namen der WaveDatei eingeben ; öffnen der Wave Datei Global datei = ReadFile(file$) ; Einlesen der WaveDaten ReadDataWave() ; Laden der Wave Datei sound = LoadSound(file$) ; und Abspielen des Sound's musik = PlaySound(sound) ; Hilfsvariabel zum Berechnen der Zeitabstände für Echtzeitwiedergabe (Synchronisation) t = MilliSecs() ;######################################## While Not KeyHit(1) ; Synchronsteuerung If (timer*data_timebyte#) < (MilliSecs()-t) Then ReadWave() timer = timer + 1 If timer = data_laenge Then Exit EndIf ; Ab hier eigene Effekte die über Kanal 1+2 gesteuert werden. ; Wen die Musik: ; 8-bit ist, so nimmt Kanal 1+2 Werte zwischen 0-255 an. ; 16-bit ist, so nimmt Kanal 1+2 Werte zwischen 0-65535 an. ; m = (timer Mod data_rate) ss = s(m)*(x/4) cc = c(m)*100 k1 = kanal1/teiler k2 = kanal2/teiler ;PositionEntity o1(m/2), ss, k1+(m/4) ,cc PositionEntity o1(m/2), m-180, k1-cc, k2-ss ;ScaleEntity o1(m/2),1,ss,1 If m = 0 Then x=x+a If (x Mod 300)=0 Then a=a*(-1) TurnEntity pivot,0,1,0 RenderWorld() td = MilliSecs()-ts Text 0,td*15,(1.0*td/data_rate) ts=MilliSecs() Flip 0 Cls EndIf Wend ;--- StopChannel musik FreeSound musik CloseFile datei Text 0,550, "Ende <Taste Drücken>" Flip Waitkey() End ;######################################## ENDE Function ReadWave() ; Einlesen der Waves ; hier wird ab Byte 44 die WaveDaten eingelesen ; überprüfen ob Wave mono ist If data_kanal = 1 Then ; 8bit mono If data_bytesprosample = 1 Then kanal1 = ReadByte(datei) Return EndIf ; 16bit mono If data_bytesprosample = 2 Then kanal1 = ReadByte(datei) kanal1 = ReadByte(datei) * 2^8 + kanal1 If kanal1 >= (2^15) Then kanal1 = (2^16 - kanal1) * (-1) Return EndIf EndIf ; überprüfen ob Wave stereo ist If data_kanal = 2 Then ; 8bit stereo If data_bytesprosample = 2 Then kanal1 = ReadByte(datei) kanal2 = ReadByte(datei) Return EndIf ; 16bit stereo If data_bytesprosample = 4 Then kanal1 = ReadByte(datei) kanal1 = ReadByte(datei) * 2^8 + kanal1 kanal2 = ReadByte(datei) kanal2 = ReadByte(datei) * 2^8 + kanal2 If kanal1 >= (2^15) Then kanal1 = (2^16 - kanal1) * (-1) If kanal2 >= (2^15) Then kanal2 = (2^16 - kanal2) * (-1) Return EndIf EndIf End Function ;---- Function ReadDataWave() ; Byte 0-3 Name (RIFF) For t = 0 To 3 head_name$ = head_name$ + Chr$(ReadByte(datei)) Next ; Byte 4-7 Länge head_laenge = Int(ReadByte(datei)) head_laenge = Int(ReadByte(datei))*2^8 + head_laenge head_laenge = Int(ReadByte(datei))*2^16 + head_laenge head_laenge = Int(ReadByte(datei))*2^24 + head_laenge ; Byte 8-11 Typ (WAVE) For t = 0 To 3 head_typ$ = head_typ$ + Chr$(ReadByte(datei)) Next ; Byte 12-15 Name (fmt) For t = 0 To 3 data_name$ = data_name$ + Chr$(ReadByte(datei)) Next ; Byte 16-19 Länge ($10 = 16) data_laenge = Int(ReadByte(datei)) data_laenge = Int(ReadByte(datei))*2^8 + data_laenge data_laenge = Int(ReadByte(datei))*2^16 + data_laenge data_laenge = Int(ReadByte(datei))*2^24 + data_laenge ; Byte 20-21 FormatType [0=mono] [1=stereo] <!!!> data_format = Int(ReadByte(datei)) data_format = Int(ReadByte(datei))*2^8 + data_format ; Byte 22-23 Kanalzahl <!!!> data_kanal = Int(ReadByte(datei)) data_kanal = Int(ReadByte(datei))*2^8 + data_kanal ; Byte 24-27 Sample Rate in Herz <!!!> data_sample = Int(ReadByte(datei)) data_sample = Int(ReadByte(datei))*2^8 + data_sample data_sample = Int(ReadByte(datei))*2^16 + data_sample data_sample = Int(ReadByte(datei))*2^24 + data_sample ; Byte 28-31 Bytes pro Sekunde <!!!> data_bytesprosekunde = Int(ReadByte(datei)) data_bytesprosekunde = Int(ReadByte(datei))*2^8 + data_bytesprosekunde data_bytesprosekunde = Int(ReadByte(datei))*2^16 + data_bytesprosekunde data_bytesprosekunde = Int(ReadByte(datei))*2^24 + data_bytesprosekunde ; Byte 32-33 Bytes pro Sample [1=8bit/mono] [2=8bit/stereo oder 16bit/mono] [4=16bit/stereo] <!!!> data_bytesprosample = Int(ReadByte(datei)) data_bytesprosample = Int(ReadByte(datei))*2^8 + data_bytesprosample ; Byte 34-35 Bits pro Sample <!!!> data_bitsprosample = Int(ReadByte(datei)) data_bitsprosample = Int(ReadByte(datei))*2^8 + data_bitsprosample ; Byte 36-39 Name (data) !!! im Normalfall Byte 36-39 !!! Repeat data_name$ = data_name$ + Chr$(ReadByte(datei)) If Right(data_name$,4) = "data" Then data_name$ = Right(data_name$,4) Exit EndIf Forever ; Byte 40-43 Länge <!!!> !!! im Normalfall Byte 40-43 !!! data_laenge = Int(ReadByte(datei)) data_laenge = Int(ReadByte(datei))*2^8 + data_laenge data_laenge = Int(ReadByte(datei))*2^16 + data_laenge data_laenge = Int(ReadByte(datei))*2^24 + data_laenge ; Berechnen der orginal Länge in Byte If data_kanal = 1 Then If data_bytesprosample = 1 Then data_laengeeffektiv = data_laenge If data_bytesprosample = 2 Then data_laengeeffektiv = data_laenge / 2 EndIf If data_kanal = 2 Then If data_bytesprosample = 2 Then data_laengeeffektiv = data_laenge / 2 If data_bytesprosample = 4 Then data_laengeeffektiv = data_laenge / 4 EndIf ; berechnung der Abpsiellänge in Sekunden data_timetotal# = Float(data_laengeeffektiv) / Float(data_sample) ; berechnung der Zeit pro Byte in Millisekunden data_timebyte# = 1.0 / Float(data_sample) * 1000 Local ausgabe = 0 If ausgabe = 1 Then Print data_kanal + " Kanal" Print data_sample + " Herz" Print data_bitsprosample + " Bits pro Sample" Print data_laenge + " Byte gelesene Rohdaten" Print data_laengeeffektiv + " Byte im Datensatz effektiv gespeichert" Print (data_timetotal# * 1000) + " Sekunden Abspielzeit" Print data_timebyte# + " Millisekunden Abspielzeit pro Datensatz" EndIf ; Text 0,550, "zum Starten <Bitte Taste drücken>" ; WaitKey() End Function |
||
WinXpProf&SP2, B3D V1.88, B+ V1.40, BMax101Beta, AMD TB1.4GHz, DDR266/768MB, GeForce3@64MB |
![]() |
Vertex |
![]() Antworten mit Zitat ![]() |
---|---|---|
ich habe mal den Code von husky ein wenig optimiert(und ein paar leerzeilen herausgenommen)
Code: [AUSKLAPPEN] ; WaveSample 1.5 @ René Morszeck
; ; Einlesen und Dekodieren von wave-Files 8 und 16 bit, mono und stereo ; Ausgabe der Wave's in Echtzeit mit Fehlerkorrektur ; So das die Ausgabe auch bei langsamen PC's synchron ist ; Graphics3D 1024,768,32,2 SetBuffer BackBuffer() ;######################################## Global data_format ; 0=mono 1=stereo / Normalfall auch bei Mono ist immer 1 für beide Lautspecher Global data_kanal ; 1 oder 2, gibt effektiven 1=mono/kanal 2= stereo/kanal Global data_sample ; Frequenzwiedergabe zbsp 44100 Hz Global data_bytesprosekunde ; effektive abgespielte Bytes pro Sekunde Global data_bytesprosample ; 1 (1Byte,mono), 2(1Byte,stero oder 2Byte,mono) oder 4 (2Byte,stereo) Byte Global data_bitsprosample ; 8 oder 16 Bits pro Kanal Global data_laenge ; Gelesene/Abgespielte Daten in Byte Global data_laengeeffektiv ; Gespeicherte Datensätze in Byte im Type 'wave' Global data_timetotal# ; Totale Abspielzeit in Sekunden Global data_timebyte# ; Zeit in Millisekunden pro Datensatz aus Type 'wave' für Echtzeitwiedergabe Global kanal1 Global kanal2 Global t Global timer ;---------------------------------------- ; Einstellungen für den Effekt Dim s#(359) Dim c#(359) For i=0 To 359 s#(i) = Sin(i) c#(i) = Cos(i) Next Const teiler = 256 Const data_rate = 360 a = 1 x = 1 pivot = CreatePivot() cam = CreateCamera(pivot) light = CreateLight(1,cam) RotateEntity light, 90, 0, 0 MoveEntity cam, 0, 220, -250 TurnEntity cam, 45,0,0 AmbientLight 255,255,255 ;CameraClsColor cam,0,0,255 CameraZoom cam, 1 ;CameraProjMode cam, 2 ;CameraFogMode cam, 1 ;CameraFogRange cam,250,700 ;CameraFogColor cam,180,180,180 objekt = data_rate/2 Dim o1(objekt) For i=0 To objekt-1 o1(i) = CreateSphere(4) j = 255.0/(objekt)*i EntityColor o1(i), j, 255-j, 0 ; EntityFX o1(i),12 Next ;######################################## file$ = "Windows-Anmeldeklang.wav" ; <============= hier den Namen der WaveDatei eingeben ; öffnen der Wave Datei Global datei = ReadFile(file$) ; Einlesen der WaveDaten ReadDataWave() ; Laden der Wave Datei sound = LoadSound(file$) ; und Abspielen des Sound's musik = PlaySound(sound) ; Hilfsvariabel zum Berechnen der Zeitabstände für Echtzeitwiedergabe (Synchronisation) t = MilliSecs() ;######################################## While Not KeyHit(1) ; Synchronsteuerung If (timer*data_timebyte#) < (MilliSecs()-t) Then ReadWave() timer = timer + 1 If timer = data_laenge Then Exit EndIf ; Ab hier eigene Effekte die über Kanal 1+2 gesteuert werden. ; Wen die Musik: ; 8-bit ist, so nimmt Kanal 1+2 Werte zwischen 0-255 an. ; 16-bit ist, so nimmt Kanal 1+2 Werte zwischen 0-65535 an. ; m = (timer Mod data_rate) ss = s(m)*(x/4) cc = c(m)*100 k1 = kanal1/teiler k2 = kanal2/teiler ;PositionEntity o1(m/2), ss, k1+(m/4) ,cc PositionEntity o1(m/2), m-180, k1-cc, k2-ss ;ScaleEntity o1(m/2),1,ss,1 If m = 0 Then x=x+a If (x Mod 300)=0 Then a=a*(-1) TurnEntity pivot,0,1,0 RenderWorld() td = MilliSecs()-ts Text 0,td*15,(1.0*td/data_rate) ts=MilliSecs() Flip 0 EndIf Wend ;--- StopChannel musik FreeSound sound CloseFile datei Text 0,550, "Ende <Taste Drücken>" Flip WaitKey() End ;######################################## ENDE Function ReadWave() ; Einlesen der Waves ; hier wird ab Byte 44 die WaveDaten eingelesen ; überprüfen ob Wave mono ist If data_kanal = 1 Then ; 8bit mono If data_bytesprosample = 1 Then kanal1 = ReadByte(datei) Return EndIf ; 16bit mono If data_bytesprosample = 2 Then kanal1 = ReadShort(datei) If kanal1 >= (2^15) Then kanal1 = (2^16 - kanal1) * (-1) Return EndIf EndIf ; überprüfen ob Wave stereo ist If data_kanal = 2 Then ; 8bit stereo If data_bytesprosample = 2 Then kanal1 = ReadByte(datei) kanal2 = ReadByte(datei) Return EndIf ; 16bit stereo If data_bytesprosample = 4 Then kanal1 = ReadShort(datei) kanal2 = ReadShort(datei) If kanal1 >= (2^15) Then kanal1 = (2^16 - kanal1) * (-1) If kanal2 >= (2^15) Then kanal2 = (2^16 - kanal2) * (-1) Return EndIf EndIf End Function ;---- Function ReadDataWave() ; Byte 0-3 Name (RIFF) For t = 0 To 3 head_name$ = head_name$ + Chr$(ReadByte(datei)) Next ; Byte 4-7 Länge head_laenge = ReadInt(datei) ; Byte 8-11 Typ (WAVE) For t = 0 To 3 head_typ$ = head_typ$ + Chr$(ReadByte(datei)) Next ; Byte 12-15 Name (fmt) For t = 0 To 3 data_name$ = data_name$ + Chr$(ReadByte(datei)) Next ; Byte 16-19 Länge ($10 = 16) data_laenge = ReadInt(datei) ; Byte 20-21 FormatType [0=mono] [1=stereo] <!!!> data_format = ReadShort(datei) ; Byte 22-23 Kanalzahl <!!!> data_kanal = ReadShort(datei) ; Byte 24-27 Sample Rate in Herz <!!!> data_sample = ReadInt(datei) ; Byte 28-31 Bytes pro Sekunde <!!!> data_bytesprosekunde = ReadInt(datei) ; Byte 32-33 Bytes pro Sample [1=8bit/mono] [2=8bit/stereo oder 16bit/mono] [4=16bit/stereo] <!!!> data_bytesprosample = ReadShort(datei) ; Byte 34-35 Bits pro Sample <!!!> data_bitsprosample = ReadShort(datei) ; Byte 36-39 Name (data) !!! im Normalfall Byte 36-39 !!! Repeat data_name$ = data_name$ + Chr$(ReadByte(datei)) If Right(data_name$,4) = "data" Then data_name$ = Right(data_name$,4) Exit EndIf Forever ; Byte 40-43 Länge <!!!> !!! im Normalfall Byte 40-43 !!! data_laenge = ReadInt(datei) ; Berechnen der orginal Länge in Byte If data_kanal = 1 Then If data_bytesprosample = 1 Then data_laengeeffektiv = data_laenge If data_bytesprosample = 2 Then data_laengeeffektiv = data_laenge / 2 EndIf If data_kanal = 2 Then If data_bytesprosample = 2 Then data_laengeeffektiv = data_laenge / 2 If data_bytesprosample = 4 Then data_laengeeffektiv = data_laenge / 4 EndIf ; berechnung der Abpsiellänge in Sekunden data_timetotal# = Float(data_laengeeffektiv) / Float(data_sample) ; berechnung der Zeit pro Byte in Millisekunden data_timebyte# = 1.0 / Float(data_sample) * 1000 Local ausgabe = 0 If ausgabe = 1 Then Print data_kanal + " Kanal" Print data_sample + " Herz" Print data_bitsprosample + " Bits pro Sample" Print data_laenge + " Byte gelesene Rohdaten" Print data_laengeeffektiv + " Byte im Datensatz effektiv gespeichert" Print (data_timetotal# * 1000) + " Sekunden Abspielzeit" Print data_timebyte# + " Millisekunden Abspielzeit pro Datensatz" EndIf End Function mfg olli |
||
vertex.dreamfall.at | GitHub |
![]() |
Bigmichi |
![]() Antworten mit Zitat ![]() |
---|---|---|
hmmmm ich komm da irgendwie net so ganz klar mit da ist zwar ein beispiel aber da wird nur GetLevel beschrieben ich brauch aber von mehreren Hertz freqs die daten =( kann mir jemand vielleicht ein kleines Bsp machen ? =) | ||
![]() |
D2006Administrator |
![]() Antworten mit Zitat ![]() |
---|---|---|
kein Beispiel, aber ein Befehl:
Code: [AUSKLAPPEN] BASS_ChannelGetData(Stream%, Bank*, Flag%)
der Rest steht allgemein verständlich in der Hilfe (*.chm). Ich gebs ja zu, ich schiebe schon seit einiger Zeit ein Tutorial dafür vor mich her... MfG D2006 |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group