Sound sichtbar machen ?

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Bigmichi

Betreff: Sound sichtbar machen ?

BeitragSa, Dez 25, 2004 13:35
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSa, Dez 25, 2004 13:51
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSa, Dez 25, 2004 14:01
Antworten mit Zitat
Benutzer-Profile anzeigen
ja das hab ich mri auch schon egdacht weil die ja dabei war nur wie funktioniert das o.O
 

D²O

BeitragSa, Dez 25, 2004 17:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Morszeck->Ping-husky Wink
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

BeitragSa, Dez 25, 2004 18:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Lad dir die BlitzBass.dll runter, und schau dir die Beispiele an...
Suum cuique

[ www.ffs-net.de.vu ] [ Raycaster ]

Vertex

BeitragSa, Dez 25, 2004 22:47
Antworten mit Zitat
Benutzer-Profile anzeigen
http://mitglied.lycos.de/theve...BASSex.rar
Andere Dateien sind nur böse Wink
vertex.dreamfall.at | GitHub
 

morszeck

BeitragSa, Dez 25, 2004 23:41
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSo, Dez 26, 2004 11:52
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSo, Jan 16, 2005 14:19
Antworten mit Zitat
Benutzer-Profile anzeigen
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 ? =)

D2006

Administrator

BeitragSo, Jan 16, 2005 22:33
Antworten mit Zitat
Benutzer-Profile anzeigen
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

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group