Audio tests: Used non-deprecated constructor, replaced "AudioApp" class by SimpleApplication

git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@8149 75d07b2b-3a1a-0410-a2c5-0572b91ccdca
3.0
roo..om 13 years ago
parent d613ed7c84
commit 1acd324d02
  1. 84
      engine/src/test/jme3test/audio/AudioApp.java
  2. 78
      engine/src/test/jme3test/audio/TestAmbient.java
  3. 21
      engine/src/test/jme3test/audio/TestDoppler.java
  4. 13
      engine/src/test/jme3test/audio/TestMusicStreaming.java
  5. 11
      engine/src/test/jme3test/audio/TestOgg.java
  6. 59
      engine/src/test/jme3test/audio/TestReverb.java
  7. 56
      engine/src/test/jme3test/audio/TestWav.java

@ -1,84 +0,0 @@
/*
* Copyright (c) 2009-2010 jMonkeyEngine
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'jMonkeyEngine' nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package jme3test.audio;
import com.jme3.audio.AudioRenderer;
import com.jme3.asset.AssetManager;
import com.jme3.asset.DesktopAssetManager;
import com.jme3.audio.AudioContext;
import com.jme3.audio.Listener;
import com.jme3.system.AppSettings;
import com.jme3.system.JmeSystem;
public class AudioApp {
private static final float UPDATE_RATE = 0.01f;
protected AssetManager assetManager;
protected Listener listener;
protected AudioRenderer audioRenderer;
public AudioApp(){
AppSettings settings = new AppSettings(true);
settings.setRenderer(null); // force dummy renderer (?)
settings.setAudioRenderer(AppSettings.LWJGL_OPENAL);
audioRenderer = JmeSystem.newAudioRenderer(settings);
audioRenderer.initialize();
assetManager = new DesktopAssetManager(true);
listener = new Listener();
audioRenderer.setListener(listener);
}
public void initAudioApp(){
AudioContext.setAudioRenderer(audioRenderer);
}
public void updateAudioApp(float tpf){
}
public void start(){
initAudioApp();
while (true){
updateAudioApp(UPDATE_RATE);
audioRenderer.update(UPDATE_RATE);
try{
Thread.sleep((int) (UPDATE_RATE * 1000f));
}catch (InterruptedException ex){
ex.printStackTrace();
}
}
}
}

@ -1,13 +1,10 @@
/* /*
* Copyright (c) 2009-2010 jMonkeyEngine * Copyright (c) 2009-2010 jMonkeyEngine All rights reserved.
* All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are * modification, are permitted provided that the following conditions are met:
* met: * * * Redistributions of source code must retain the above copyright notice,
* * this list of conditions and the following disclaimer.
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* *
* * Redistributions in binary form must reproduce the above copyright * * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the * notice, this list of conditions and the following disclaimer in the
@ -17,71 +14,56 @@
* may be used to endorse or promote products derived from this software * may be used to endorse or promote products derived from this software
* without specific prior written permission. * without specific prior written permission.
* *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * POSSIBILITY OF SUCH DAMAGE.
*/ */
package jme3test.audio; package jme3test.audio;
import com.jme3.app.SimpleApplication;
import com.jme3.audio.AudioNode; import com.jme3.audio.AudioNode;
//import com.jme3.audio.PointAudioSource; import com.jme3.audio.Environment;
import com.jme3.math.FastMath;
import com.jme3.math.Vector3f; import com.jme3.math.Vector3f;
public class TestAmbient extends AudioApp { public class TestAmbient extends SimpleApplication {
private AudioNode river, nature, waves; private AudioNode nature, waves;
// private PointAudioSource waves;
private float time = 0;
private float nextTime = 1;
public static void main(String[] args){ public static void main(String[] args) {
TestAmbient test = new TestAmbient(); TestAmbient test = new TestAmbient();
test.start(); test.start();
} }
@Override @Override
public void initAudioApp(){ public void simpleInitApp() {
float[] eax = new float[]{15, 38.0f, 0.300f, -1000, -3300, 0,
1.49f, 0.54f, 1.00f, -2560, 0.162f, 0.00f, 0.00f,
0.00f, -229, 0.088f, 0.00f, 0.00f, 0.00f, 0.125f, 1.000f,
0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x3f};
Environment env = new Environment(eax);
audioRenderer.setEnvironment(env);
waves = new AudioNode(assetManager, "Sound/Environment/Ocean Waves.ogg", false); waves = new AudioNode(assetManager, "Sound/Environment/Ocean Waves.ogg", false);
waves.setPositional(true); waves.setPositional(true);
nature = new AudioNode(assetManager, "Sound/Environment/Nature.ogg", true);
// river = new AudioSource(manager, "sounds/river.ogg");
// float[] eax = new float[]
// {15, 38.0f, 0.300f, -1000, -3300, 0, 1.49f, 0.54f, 1.00f, -2560, 0.162f, 0.00f,0.00f,0.00f, -229, 0.088f, 0.00f,0.00f,0.00f, 0.125f, 1.000f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x3f }
// ;
//
// Environment env = new Environment(eax);
// ar.setEnvironment(env);
waves.setLocalTranslation(new Vector3f(4, -1, 30)); waves.setLocalTranslation(new Vector3f(4, -1, 30));
waves.setMaxDistance(5); waves.setMaxDistance(5);
waves.setRefDistance(1); waves.setRefDistance(1);
nature = new AudioNode(assetManager, "Sound/Environment/River.ogg", true);
nature.setVolume(3); nature.setVolume(3);
audioRenderer.playSourceInstance(waves); audioRenderer.playSourceInstance(waves);
audioRenderer.playSource(nature); audioRenderer.playSource(nature);
} }
@Override @Override
public void updateAudioApp(float tpf){ public void simpleUpdate(float tpf) {
time += tpf;
if (time > nextTime){
time = 0;
nextTime = FastMath.nextRandomFloat() * 2 + 0.5f;
} }
}
} }

@ -32,12 +32,10 @@
package jme3test.audio; package jme3test.audio;
import com.jme3.asset.plugins.FileLocator; import com.jme3.app.SimpleApplication;
import com.jme3.audio.AudioNode; import com.jme3.audio.AudioNode;
import com.jme3.audio.Environment; import com.jme3.audio.Environment;
import com.jme3.audio.LowPassFilter;
import com.jme3.math.FastMath; import com.jme3.math.FastMath;
import com.jme3.math.Quaternion;
import com.jme3.math.Vector3f; import com.jme3.math.Vector3f;
import org.lwjgl.openal.AL10; import org.lwjgl.openal.AL10;
import org.lwjgl.openal.AL11; import org.lwjgl.openal.AL11;
@ -45,31 +43,23 @@ import org.lwjgl.openal.AL11;
/** /**
* Test Doppler Effect * Test Doppler Effect
*/ */
public class TestDoppler extends AudioApp { public class TestDoppler extends SimpleApplication {
private AudioNode ufo; private AudioNode ufo;
private float x = 20, z = 0; private float x = 20, z = 0;
private float rate = -0.05f; private float rate = -0.05f;
private float xDist = 20; private float xDist = 20;
private float zDist = 5; private float zDist = 5;
private float angle = FastMath.TWO_PI; private float angle = FastMath.TWO_PI;
private LowPassFilter filter = new LowPassFilter(1, 1);
public static void main(String[] args){ public static void main(String[] args){
TestDoppler test = new TestDoppler(); TestDoppler test = new TestDoppler();
test.start(); test.start();
} }
@Override @Override
public void initAudioApp(){ public void simpleInitApp(){
Quaternion q = new Quaternion();
q.lookAt(new Vector3f(0, 0, -1f), Vector3f.UNIT_Y);
listener.setRotation(q);
audioRenderer.setEnvironment(Environment.Dungeon); audioRenderer.setEnvironment(Environment.Dungeon);
AL10.alDistanceModel(AL11.AL_EXPONENT_DISTANCE); AL10.alDistanceModel(AL11.AL_EXPONENT_DISTANCE);
@ -83,7 +73,7 @@ public class TestDoppler extends AudioApp {
} }
@Override @Override
public void updateAudioApp(float tpf){ public void simpleUpdate(float tpf){
//float x = (float) (Math.cos(angle) * xDist); //float x = (float) (Math.cos(angle) * xDist);
float dx = (float) Math.sin(angle) * xDist; float dx = (float) Math.sin(angle) * xDist;
@ -107,7 +97,8 @@ public class TestDoppler extends AudioApp {
ufo.setLocalTranslation(x, 0, z); ufo.setLocalTranslation(x, 0, z);
ufo.updateGeometricState(); ufo.updateGeometricState();
System.out.println("LOC: " + (int)x +", " + (int)z + ", VEL: " + (int)dx + ", " + (int)dz); System.out.println("LOC: " + (int)x +", " + (int)z +
", VEL: " + (int)dx + ", " + (int)dz);
} }
} }

@ -32,10 +32,11 @@
package jme3test.audio; package jme3test.audio;
import com.jme3.app.SimpleApplication;
import com.jme3.asset.plugins.UrlLocator; import com.jme3.asset.plugins.UrlLocator;
import com.jme3.audio.AudioNode; import com.jme3.audio.AudioNode;
public class TestMusicStreaming extends AudioApp { public class TestMusicStreaming extends SimpleApplication {
public static void main(String[] args){ public static void main(String[] args){
TestMusicStreaming test = new TestMusicStreaming(); TestMusicStreaming test = new TestMusicStreaming();
@ -43,13 +44,13 @@ public class TestMusicStreaming extends AudioApp {
} }
@Override @Override
public void updateAudioApp(float tpf){ public void simpleInitApp(){
}
@Override
public void initAudioApp(){
assetManager.registerLocator("http://www.vorbis.com/music/", UrlLocator.class); assetManager.registerLocator("http://www.vorbis.com/music/", UrlLocator.class);
AudioNode src = new AudioNode(assetManager, "Lumme-Badloop.ogg", true); AudioNode src = new AudioNode(assetManager, "Lumme-Badloop.ogg", true);
audioRenderer.playSource(src); audioRenderer.playSource(src);
} }
@Override
public void simpleUpdate(float tpf){}
} }

@ -32,10 +32,11 @@
package jme3test.audio; package jme3test.audio;
import com.jme3.app.SimpleApplication;
import com.jme3.audio.AudioNode; import com.jme3.audio.AudioNode;
import com.jme3.audio.LowPassFilter; import com.jme3.audio.LowPassFilter;
public class TestOgg extends AudioApp { public class TestOgg extends SimpleApplication {
private AudioNode src; private AudioNode src;
@ -45,19 +46,19 @@ public class TestOgg extends AudioApp {
} }
@Override @Override
public void initAudioApp(){ public void simpleInitApp(){
System.out.println("Playing without filter"); System.out.println("Playing without filter");
src = new AudioNode(audioRenderer, assetManager, "Sound/Effects/Foot steps.ogg", true); src = new AudioNode(assetManager, "Sound/Effects/Foot steps.ogg", true);
audioRenderer.playSource(src); audioRenderer.playSource(src);
} }
@Override @Override
public void updateAudioApp(float tpf){ public void simpleUpdate(float tpf){
if (src.getStatus() != AudioNode.Status.Playing){ if (src.getStatus() != AudioNode.Status.Playing){
audioRenderer.deleteAudioData(src.getAudioData()); audioRenderer.deleteAudioData(src.getAudioData());
System.out.println("Playing with low pass filter"); System.out.println("Playing with low pass filter");
src = new AudioNode(audioRenderer, assetManager, "Sound/Effects/Foot steps.ogg", true); src = new AudioNode(assetManager, "Sound/Effects/Foot steps.ogg", true);
src.setDryFilter(new LowPassFilter(1f, .1f)); src.setDryFilter(new LowPassFilter(1f, .1f));
src.setVolume(3); src.setVolume(3);
audioRenderer.playSource(src); audioRenderer.playSource(src);

@ -1,13 +1,10 @@
/* /*
* Copyright (c) 2009-2010 jMonkeyEngine * Copyright (c) 2009-2010 jMonkeyEngine All rights reserved.
* All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are * modification, are permitted provided that the following conditions are met:
* met: * * * Redistributions of source code must retain the above copyright notice,
* * this list of conditions and the following disclaimer.
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* *
* * Redistributions in binary form must reproduce the above copyright * * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the * notice, this list of conditions and the following disclaimer in the
@ -17,56 +14,55 @@
* may be used to endorse or promote products derived from this software * may be used to endorse or promote products derived from this software
* without specific prior written permission. * without specific prior written permission.
* *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * POSSIBILITY OF SUCH DAMAGE.
*/ */
package jme3test.audio; package jme3test.audio;
import com.jme3.app.SimpleApplication;
import com.jme3.audio.AudioNode; import com.jme3.audio.AudioNode;
import com.jme3.audio.Environment; import com.jme3.audio.Environment;
//import com.jme3.audio.PointAudioSource;
import com.jme3.math.FastMath; import com.jme3.math.FastMath;
import com.jme3.math.Vector3f; import com.jme3.math.Vector3f;
public class TestReverb extends AudioApp { public class TestReverb extends SimpleApplication {
private AudioNode src; private AudioNode src;
private float time = 0; private float time = 0;
private float nextTime = 1; private float nextTime = 1;
public static void main(String[] args){ public static void main(String[] args) {
TestReverb test = new TestReverb(); TestReverb test = new TestReverb();
test.start(); test.start();
} }
@Override @Override
public void initAudioApp(){ public void simpleInitApp() {
src = new AudioNode(audioRenderer, assetManager, "Sound/Effects/Bang.wav"); src = new AudioNode(assetManager, "Sound/Effects/Bang.wav");
float[] eax = new float[] float[] eax = new float[]{15, 38.0f, 0.300f, -1000, -3300, 0,
{15, 38.0f, 0.300f, -1000, -3300, 0, 1.49f, 0.54f, 1.00f, -2560, 0.162f, 0.00f,0.00f,0.00f, -229, 0.088f, 0.00f,0.00f,0.00f, 0.125f, 1.000f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x3f } 1.49f, 0.54f, 1.00f, -2560, 0.162f, 0.00f, 0.00f, 0.00f,
; -229, 0.088f, 0.00f, 0.00f, 0.00f, 0.125f, 1.000f, 0.250f,
0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x3f};
// ar.setEnvironment(new Environment(eax)); audioRenderer.setEnvironment(new Environment(eax));
Environment env = Environment.Cavern; Environment env = Environment.Cavern;
audioRenderer.setEnvironment(env); audioRenderer.setEnvironment(env);
} }
@Override @Override
public void updateAudioApp(float tpf){ public void simpleUpdate(float tpf) {
time += tpf; time += tpf;
if (time > nextTime){ if (time > nextTime) {
Vector3f v = new Vector3f(); Vector3f v = new Vector3f();
v.setX(FastMath.nextRandomFloat()); v.setX(FastMath.nextRandomFloat());
v.setY(FastMath.nextRandomFloat()); v.setY(FastMath.nextRandomFloat());
@ -80,5 +76,4 @@ public class TestReverb extends AudioApp {
nextTime = FastMath.nextRandomFloat() * 2 + 0.5f; nextTime = FastMath.nextRandomFloat() * 2 + 0.5f;
} }
} }
} }

@ -1,13 +1,11 @@
/* /*
* Copyright (c) 2009-2010 jMonkeyEngine * Copyright (c) 2009-2010 jMonkeyEngine All rights reserved.
* All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are * modification, are permitted provided that the following conditions are met:
* met: * *
* * * Redistributions of source code must retain the above copyright notice,
* * Redistributions of source code must retain the above copyright * this list of conditions and the following disclaimer.
* notice, this list of conditions and the following disclaimer.
* *
* * Redistributions in binary form must reproduce the above copyright * * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the * notice, this list of conditions and the following disclaimer in the
@ -17,44 +15,37 @@
* may be used to endorse or promote products derived from this software * may be used to endorse or promote products derived from this software
* without specific prior written permission. * without specific prior written permission.
* *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * POSSIBILITY OF SUCH DAMAGE.
*/ */
package jme3test.audio; package jme3test.audio;
import com.jme3.app.SimpleApplication;
import com.jme3.audio.AudioNode; import com.jme3.audio.AudioNode;
public class TestWav extends AudioApp { public class TestWav extends SimpleApplication {
private float time = 0; private float time = 0;
private AudioNode src; private AudioNode src;
public static void main(String[] args){ public static void main(String[] args) {
TestWav test = new TestWav(); TestWav test = new TestWav();
test.start(); test.start();
} }
public static void sleep(float time){
try{
Thread.sleep((long) (time * 1000));
}catch (InterruptedException ex){
}
}
@Override @Override
public void updateAudioApp(float tpf){ public void simpleUpdate(float tpf) {
time += tpf; time += tpf;
if (time > .1f){ if (time > 1f) {
audioRenderer.playSourceInstance(src); audioRenderer.playSourceInstance(src);
time = 0; time = 0;
} }
@ -62,9 +53,8 @@ public class TestWav extends AudioApp {
} }
@Override @Override
public void initAudioApp(){ public void simpleInitApp() {
src = new AudioNode(audioRenderer, assetManager, "Sound/Effects/Gun.wav", false); src = new AudioNode(assetManager, "Sound/Effects/Gun.wav", false);
src.setLooping(false); src.setLooping(false);
} }
} }

Loading…
Cancel
Save