Probleme mit LoopSound + PitchSound?
Übersicht

![]() |
hecticSieger des IS Talentwettbewerb 2006Betreff: Probleme mit LoopSound + PitchSound? |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich möchte ein Panzerspiel in 3D erstellen. Dabei soll der Panzer immer ein Sound abliefern da der Panzer ja auch bei Stillstand nicht aus ist. Somit habe ich den Sound vorher mit LoopSound endlos gemacht. Wenn der Panzer nun los fährt soll der Sound hoch gepitcht werden. Das tut er auch, aber nur wenn ich den Sound neu starte. Ich möchte aber bei Beschleunigung nicht ständig den Sound neu starten. Das klingt scheiße.
Wenn ich nun pitche passiert garnichts. Was soll ich machen? Mein Beispielcode ist aus der Onlinehilfe (etwas modifiziert). Code: [AUSKLAPPEN] Graphics3D 640,480
SetBuffer BackBuffer() plane=CreatePlane() camera=CreateCamera() PositionEntity camera,0,1,-10 light=CreateLight() RotateEntity light,90,0,0 cube=CreateCube() PositionEntity cube,0,1,0 microphone=CreateListener(camera,1,10,1) sound=Load3DSound("..\..\data\ring.wav") LoopSound sound pitch=22050 While Not KeyHit(1) If KeyDown(2) Then pitch=pitch-10 If KeyDown(3) Then pitch=pitch+10 SoundPitch sound,pitch If KeyDown(205)=1 Then MoveEntity cube,.3,0,0 If KeyDown(203)=1 Then MoveEntity cube,-.3,0,0 If KeyDown(208)=1 Then MoveEntity camera,0,0,-0.05 If KeyDown(200)=1 Then MoveEntity camera,0,0,0.05 If MouseHit(1)=1 Then EmitSound(sound,cube) RenderWorld Text 0,0,"Benutze Cursortasten zum Verschieben" Text 0,20,"Mit linker Maustaste Sound abspielen" Text 0,40,"Pitch: "+pitch Flip Wend End Danke im vorraus... |
||
![]() |
wunderkind |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ohne das Problem jetzt live nachzuvollziehen: Wenn ich mir die englische Hilfe ansehe (und gerade auch die auf Blitzbase.de), dann sieht es so aus, als würden die Änderungen durch soundpitch() erst greifen, nachdem das Abspielen neu gestartet wurde. Vermutlich kann soundpitch() den Sound nicht live ändern. Korregiert mich sollte ich falsch liegen.
Viele Grüße Dein Blitzforum.de Service Team |
||
BlitzBasic303Betreff: RE: |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich glaub auch wunderkind hat recht.Tut mir leid für dich ![]() Mfg BlitzBasic303 |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also mal ehrlich. Was machen denn dann die Leute die ein Autorennen programmieren mit den Motorsound? Soll man dann 100 Motorsounds mit unterschiedlichen Frequenzen gleichzeitig abspielen wo man dann nach der Motordrehzahl jeweils die richtigen Sounds nach Lautstärke slidet? Oder einen Sounds immer wieder neu starten, bei ständig ändernder Motordrezahl? Oder eine externe DLL einbeziehen, die elendig anzusteuern ist?
Wenn die letzte Lösung die einzig mögliche ist. Hat dann jemand eine passende DLL mit Beispielcode zur Hand? Würde mich echt freuen... Danke im Vorraus. |
||
andy.anonymus |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
also, ich glaube so passt das:
Code: [AUSKLAPPEN] AppTitle "Motorgeräuschsimulator"
Graphics 800,700,16,2 Print "REWG" Print "Anleitung:" Print "1.Gebe den Motor(sound)namen ein und bestätige mit ENTER." Print "2.Gebe die Samplerate des Motor(sound)s ein und bestätige wieder mit ENTER." Print "3.Gebe mit der Pfeil-Nach-Oben-Taste Gas oder Bremse mit der Pfeil-Nach-Unten-Taste." motorname$ = Input("Motorname:") sample = Input("Samlerate der Datei:") Graphics 800,600 motor=LoadSound(motorname$) LoopSound motor kanal1=PlaySound(motor) SetBuffer BackBuffer() While Not KeyHit (1) Cls If KeyDown(200) Then pitch=pitch+200 If KeyDown(208) Then pitch=pitch-200 If pitch > 0 Then pitch=pitch-100 If pitch < 0 Then pitch=pitch+100 gas=sample+pitch kmh=pitch/100 Text 379,282,motorname$,True,True Text 379,346,pitch,True,True Text 379,392,gas,True,True Text 379,429,kmh+" km/h",True,True Flip ChannelPitch kanal1,gas Wend StopChannel kanal1 FreeSound motor End |
||
An die Administration: Löscht mich bitte. (ich meine es ernst!) |
![]() |
Christoph |
![]() Antworten mit Zitat ![]() |
---|---|---|
also ich hab schon einmal ein Autospiel gemacht, bei dem ich den Pitchwert des Soundes verändert habe. Allerdings habe ich ihn nicht geloopt, sondern per channelplaying()=0 immer wieder abgespielt (dann funzte Pitch immer, nicht nur bei Neustart des Sounds) | ||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also mein erster Beitrag ist bereits 1 1/2 Jahre her. So habe ich andy.anonymus bereits per PN angesprochen, mich bei ihm dafür bedankt das er sich die Mühe gemacht hatte, aber auch erwähnt das es 'recht spät ist'.
Mein Buggy-Beispiel ist der Beweis, dass ich es bereits kann. Es geht im übrigen auch ohne If ChannelPlaying... Beim Buggy ist der Motorsample gerade mal eine Amplitude lang, das ginge mit ChannelPlaying sowieso nicht, weil vermutlich mehr Loops benötigt werden, als die Programmschleife her gibt. Was ich aber noch nicht getestet habe ist, dass Abspielen mit CreateListener und LoopSound und ...Pitch. Weil CreateListener ja nun auch so paar Vorteile aufweist. zB die währen, dass ein Doplereffekt eingegeben werden kann... |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group