blitzcc.exe stürtzt ab

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

ewok1

Betreff: blitzcc.exe stürtzt ab

BeitragDi, Sep 06, 2011 17:12
Antworten mit Zitat
Benutzer-Profile anzeigen
hallo

Ich wollte einmal die channel Funktionen ausprobieren und sties dann auf folgendes Problem: Als ich eine Variabel setzte um mit dem Joystick den Befehl BlitzBasic: [AUSKLAPPEN]
ChannelPitch
zu steuern, stürzte mir der Compiler (blitzcc.exe) ab. Auch als ich es das 2. und 3. mal ausführte funktionierte es nicht.

hier der Quellcode:
BlitzBasic: [AUSKLAPPEN]
		balance = 0
play = 1
pitch = 44100
While Not KeyHit(1)
Text 0,0, "(1) Party Rock Anthem"
Text 0,10,"(2) Where Them Girls At"
WaitKey
If KeyHit(2) Then SoundID = LoadSound ("C:\Users\Patrick\Music\LMFAO\Party Rock Anthem ...
If KeyHit(3) Then SoundID = LoadSound ("C:\Users\Patrick\Music\David Guetta\David Guetta ...
ChannelID = PlaySound (SoundID)
While Not ende = 1
pitch = JoyZ() * 500
If KeyHit(205) = 1 Then balance = 1
If KeyHit(203) = -1 Then balance = -1
If KeyHit(57) Then PauseChannel ChannelID : play = play -1
If KeyHit(28) Then ResumeChannel ChannelID : play = play +1
If KeyHit(211) Then StopChannel ChannelID : ende = 1
ChannelPitch ChannelID, pitch
ChannelPan ChannelID ,balance
If play = 1 Then Text 200,0,"|>"
If play = 0 Then Text 230,0,"||"
Text 0,0,"pitch: " + pitch
Text 0,10,"links(-) " + balance + " rechts(+)"
Cls
Wend
Wend
End

habe ich etwas falsch programmiert, oder ist das ein Fehler des Compilers?

ZEVS

BeitragDi, Sep 06, 2011 17:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich weiß nicht, wie sich der pitch-Wert auf deinen Joystick verändert, möglich, dass deine Soundkarte das nicht mitmacht.
Des weitern fällt mir auf:
Dein Code ist sehr schlecht eingerückt. Alles gleich stark einzurücken, bringt nichts, außer geringerer Zeilenbreite.
Zitat:
BlitzBasic: [AUSKLAPPEN]
If KeyHit(203) = -1 Then

Das wird bestimmt niemals passieren, denn KeyHit gibt immer 0 oder 1 zurück.
Das Programm läuft ungebremst, hat also vielleicht 100 FPS. Das heißt, 100 mal in der Sekunde wird der Tastaturtreiber mit deinen ganzen KeyHits genervt, während der Soundtreiber ständig zum Verändern des Channels aufgefordert wird. Da kann ich abstürzende Programme menschlich sehr gut verstehen. Das ist aber bestimmt kein Grund. Links: Flip, CreateTimer.
Ein Flip tut bestimmt gut. Schau dir doch mal das DoubleBuffering an (SetBuffer BackBuffer).
Wenn der Sound gestoppt wird, wird er trotzdem danach noch gepitcht. Das kann nicht gut gehen.
Wenn jemand am Anfang nicht 1 oder 2 drückt, wird ein leerer Sound geladen und gespielt. Irgendwann kommt es dabei zu einem Fehler.
Ich persönlich bestehe immer darauf, ein Programm mittels Esc beenden zu können.
Das play +/- 1 funktioniert nur dann, wenn man keine Taste zweimal drückt. Sonst kommt es auch zu Werten wie 2 oder -1.

Hast du nun etwas falsch programmiert? Ich habe keinen offensichtlichen Fehler gefunden, aber das kann gut sein. Wohlmöglich hast du "richtig" programmiert und es liegt am Compiler, dann solltest du diesen Bug umgehen. Das wäre sie einzig "richtige" Lösung.

ZEVS

edit: Natürlich liegt es an Zitat:
BlitzBasic: [AUSKLAPPEN]
pitch = JoyZ() * 500
!
pitch ist nur für Werte zwischen 8000 und 44100 zugelassen! JoyZ gibt nur Werte zwischen -1 und 1, sodass pitch zwischen -500 und 500 liegt. Da macht doch keine Soundkarte der Welt mit!
  • Zuletzt bearbeitet von ZEVS am Di, Sep 06, 2011 17:38, insgesamt einmal bearbeitet

Xeres

Moderator

BeitragDi, Sep 06, 2011 17:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Bitte rücke den Code in Zukunft richtig ein, sodass man sieht, wo Schleifen anfangen und enden. Die beiden verschachtelten Schleifen sind auch nicht zu empfehlen.
Das eigentliche Problem könnte an der balance liegen, das sollte eine Fließkommazahl zwischen -1.0 und +1.0 sein, keine Integer. Siehe ChannelPan.
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)

ewok1

BeitragDi, Sep 06, 2011 18:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielen Dank Zevs!
Soweit wie du habe ich gar nicht gedacht! :)
Jetzt weiss ich wie ich das Problem lösen kann.
Ich glaube ich sollte nächstes mal ein noch ein bisschen mehr überlegen bevor ich hier frage.

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group