Sound wird verfälscht wiedergegeben

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

blitzking

Betreff: Sound wird verfälscht wiedergegeben

BeitragMo, Apr 12, 2010 19:39
Antworten mit Zitat
Benutzer-Profile anzeigen
wenn ich einen sound abspielen will wird dieser immer komplett verfalscht wiedergegeben
hier mal der code
Code: [AUSKLAPPEN]
AppTitle "Afghanistan"

Graphics3D 800,600,32,1

SetBuffer BackBuffer()

;camera
cam=CreateCamera()
PositionEntity cam,1300,20,0
EntityType cam,1

;light
light=CreateLight()
RotateEntity light,90,0,0

;Terrain
terrain=LoadTerrain("heightmap.BMP")
tex1=LoadTexture("grass.bmp")
EntityTexture terrain,tex1,0,0
ScaleEntity terrain,50,290,50
ScaleTexture tex1,50,50
EntityType terrain,2

;water
water=CreatePlane()

watertext=LoadTexture ("water.bmp",4)

EntityTexture water,watertext

ScaleTexture watertext,100,100

MoveEntity water,4,10,2

EntityAlpha water,0.6

;Fadenkreuz
pointer=LoadImage("crosshair.bmp")

;waffe
pistol=LoadMesh("pistol.x",cam)
PositionEntity pistol,5,-5,5
RotateEntity pistol,0,180,0

;snd
schuss=LoadSound("gunshot.wav")
SoundVolume schuss,1

schritte=LoadSound("gravel.wav")
SoundVolume schritte,1
While Not KeyDown(1)

If MouseHit(1)=True Then PlaySound schuss
If KeyHit(17)=True Then PlaySound schritte


;Steuerung  Maus
MSX = MouseXSpeed()
MSY = MouseYSpeed()

PlayerSpeed = 1

MoveMouse GraphicsWidth()/2, GraphicsHeight()/2
   
TurnEntity cam,MSY/3, MSX/3*-1,0
   
RotateEntity cam, EntityPitch(cam), EntityYaw(cam), 0
Collisions 1,2,2,2

;Steuerung Tastatur
If KeyDown(17)=True Then MoveEntity cam,0,0,1
If KeyDown(31)=True Then MoveEntity cam,0,0,-1
If KeyDown(30)=True Then MoveEntity cam ,-1,0,0
If KeyDown(32)=True Then MoveEntity cam,1,0,0


RenderWorld
DrawImage pointer,400,300
HidePointer
Flip
Wend
ClearWorld
End

Chrise

Betreff: Re: Sound wird verfälscht wiedergegeben

BeitragMo, Apr 12, 2010 19:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielleicht hast du bei Createlistener falsche Werte für Dopplereffekt und Lautstärkeregelung eingestellt Wink
Llama 1 Llama 2 Llama 3
Vielen Dank an Pummelie, der mir auf seinem Server einen Platz für LlamaNet bietet.

mpmxyz

BeitragMo, Apr 12, 2010 19:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Er nutzt ja auch 3D-Sounds. Wink
Könntest du, blitzking, mal den Fehler bitte genauer beschreiben?
Ich kann im Moment nämlich keinen erkennen.
mfG
mpmxyz
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer
 

blitzking

BeitragMo, Apr 12, 2010 19:48
Antworten mit Zitat
Benutzer-Profile anzeigen
ich hab aber keinen 3d sound
beim schuss hört sich alles normal an
wenn ich keydown(17) in keyhit(17) ändere is auch alles wida normal aber ich will ja dass der sound abgespielt wird solange sich der spieöer bewegt

Eingeproggt

BeitragMo, Apr 12, 2010 19:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du den Sound bei KeyDown abspielst so wird er mehrmals pro Sekunde (eben in jedem Frame) gestartet und das hört sich dann bestimmt nach Rattern oder ähnlichem an.
Du könntest eine zusätzliche Überprüfung mit ChannelPlaying einbauen bevor du einen Sound abspielst.

Aber 2 allgemeine Dinge:
-) Collisions und HidePointer gehören an sich nicht in die Hauptschleife
-) Ein Timer mit Flip 0 wäre mehr als nur empfehlenswert. Warum?

mfG, Christoph.
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9
 

blitzking

BeitragMo, Apr 12, 2010 20:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja aber wie genau soll ich das dann schreiben

das wurgel

BeitragMo, Apr 12, 2010 22:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Eingeproggt hat Folgendes geschrieben:

Du könntest eine zusätzliche Überprüfung mit ChannelPlaying einbauen bevor du einen Sound abspielst.

Code: [AUSKLAPPEN]
If ChannelPlaying(sound)=False Then Playsound sound
1 ist ungefähr 3
 

blitzking

BeitragFr, Apr 16, 2010 19:51
Antworten mit Zitat
Benutzer-Profile anzeigen
das geht aber auch nicht wirklich

Hubsi

BeitragFr, Apr 16, 2010 20:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Ohne jetzt Deinen Code zu kennen wage ich zu behaupten das Du den Code von wurgel 1:1 übernommen hast und das ganze etwa so aussieht:

sound=LoadSound("sfx/irgendwas.wav")
.
.
.
If ChannelPlaying(sound)=False Then PlaySound(sound)


Wen dem so ist hast Du keinen Blick in die Hilfe geworfen, oder was falsch verstanden was channels angeht. Falls ich falsch liege brauchen wir wohl oder übel die aktuellen Codefetzen Mr. Green
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Midimaster

BeitragSa, Apr 17, 2010 8:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Das If ChannelPlaying() geht beim ersten Aufruf schief, denn da gibt es ja noch keinen allozierten Channel. Der existiert ja erst, wenn der Sound schon mal gestartet wurde. Die richtige Reihenfolge ist daher:

BlitzBasic: [AUSKLAPPEN]
Global Schritte=LoadSound("gravel.wav")
SoundVolume Schritte,0
Global SchrittChannel=PlaySound(Schritte)


Repeat
If KeyDown(17) Then
If ChannelPlaying(SchrittChannel)=0 Then
SoundVolume Schritte,1
SchrittChannel=PlaySound(Schritte)
EndIf
EndIf
Forever


Der Haken ist der nicht existierende Befehl AllocChannel() in BB. Durch den Trick eines ersten Abspielen des Sounds zu Ladephase wird aber SchrittChannel aktiviert. Die Lautstärke wird sofort auf 0 gesetzt, denn du willst ja den Sound beim Laden nicht gleich einmal hören müssen.

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group