Sound wird nicht richtig abgespielt

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

BastianA

Betreff: Sound wird nicht richtig abgespielt

BeitragSo, Nov 07, 2010 10:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo, ich lade vor der Hauptschleife mit folgendem Code einen Sound.
Code: [AUSKLAPPEN]

While Not KeyHit(ESC)

;Sounds laden
Anfahren = LoadSound ("Sounds\Anfahren.wav")


Und dann will ich ihn bei einer Bedingung abspielen:
Code: [AUSKLAPPEN]
If Speed = 0 And fahrstufe = "15" Or fahrstufe = "25" Or Fahrstufe = "40" Or Fahrstufe = "70" Or Fahrstufe = "80" Then
channelID = PlaySound (Anfahren)
EndIf


Die Sound-Datei existiert, sie ist 42 Sekunden lang. Immer wenn ich dann losfahre und die Bedingung erfüllt wird höre ich nur ein Rattern, und nach 5 Sekunden kommt "Sound does not exist".

Was mache ich falsch?

Bei einem 5 Sekunden Sound möchte ich ihn auf Tastendruck abspielen:
If Speed = 0 And KeyDown (77) Then
channelID2 = PlaySound (Zurueckbleiben)
EndIf

Code: [AUSKLAPPEN]
Zurueckbleiben = LoadSound ("Sounds\Zurueckbleiben.wav")

;------------------------;
;-----HAUPTSCHLEIFE------;
;------------------------;

While Not KeyHit(ESC)



Da geht es problemlos, der Sound wird so abgespielt, wie es der Media Player auch macht. Muss ich eine bestimmte Länge beachten oder was ist an dem ersten Sound falsch?

mpmxyz

BeitragSo, Nov 07, 2010 11:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Zum "Sound does not exist":
BlitzBasic: [AUSKLAPPEN]
While Not KeyHit(ESC) ;Vor der Hauptschleife? Das sieht aber anders aus.

;Sounds laden
Anfahren = LoadSound ("Sounds\Anfahren.wav")

Zum Rattern:
Du musst auch überprüfen, ob der Sound noch abgespielt wird. (Test auf ChannelPlaying mit eventuellem Nullsetzen der Channelvariable + vor dem Abspielen ein Test, ob die Channelvariable 0 ist)
mfG
mpmxyz
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer

BastianA

BeitragSo, Nov 07, 2010 19:15
Antworten mit Zitat
Benutzer-Profile anzeigen
So, die Sounds habe ich während des Erstellens des Threads noch vor die Hauptschleife getan, habs vergessen zu ändern.
Wenn ich die Variable abfrage bekomme ich Illegal Memory Acces.
Code: [AUSKLAPPEN]

Global playsound_anfahren  = 0

While Not Keyhit (1)

If Speed = 0 And fahrstufe = "15" Or fahrstufe = "25" Or Fahrstufe = "40" Or Fahrstufe = "70" Or Fahrstufe = "80" Then
playsound_anfahren = 1
EndIf

If Not Speed = 0 And fahrstufe = "15" Or fahrstufe = "25" Or Fahrstufe = "40" Or Fahrstufe = "70" Or Fahrstufe = "80" Then
playsound_anfahren = 0
EndIf

If playsound_anfahren = 1 And ChannelPlaying (Anfahren) = 0
channelID = PlaySound (Anfahren)
EndIf



Ich habe mehrer Möglichkeiten versucht, abzufragen, ob der Sound gespielt wird und immer bekomme ich ein Illegal Memory Acces. Den selben Fehler habe ich, wenn ich meine Map als .3ds lade, den Fehler hatte ich noch nie. GIbt es sowas wie eine Poly-Grenze?

Xeres

Moderator

BeitragSo, Nov 07, 2010 19:26
Antworten mit Zitat
Benutzer-Profile anzeigen
A) Debugger anschalten, genauere Fehlermeldung & Zeile zum debuggen verwenden.
B) Sound <> Channel d.h.:
Code: [AUSKLAPPEN]
ChannelPlaying (channelID)
Wäre richtig.
C) Ja, du kannst nicht mehr als 32.000 Polys (?) Pro Surface verwenden.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

BastianA

BeitragSo, Nov 07, 2010 19:41
Antworten mit Zitat
Benutzer-Profile anzeigen
A) Der Debugger bleibt bei einer Textur mit 8x8 pixeln stehen, das kann ja nicht richtig sein
B)Danke, warn Leichtsinnsfehler, funzt jetzt
C)Also ich habe meine Map mit Anim8or gemoddelt vergleichbar mit Blender und als .3ds gespeichert die Texturenformate sind immer in der 2er Potenz und höchstens 1024x1024 pixel. Die Objekte liegen nicht übereinander, damit es keine Flackerprobleme gibt. Die .3ds besteht aus mehren Tausend Meshes die Poly-Zahl liegt bei 100.000. Ich habe mal die .3ds in drei verschiedene abgespeichert.
Ich hab jetzt versucht nur die MU_1.3ds zu laden die weniger als 20 Tausend Polys hat und ich bekomme den gleichen Fehler, bei Rendering World bleibt er stehen. Sonst habe ich immer 300 Tausend Polys für ein Mesh gehabt und es ging problemlos.

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group