diff options
Diffstat (limited to 'unit_tests/src/Sound3DTest.java')
-rw-r--r-- | unit_tests/src/Sound3DTest.java | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/unit_tests/src/Sound3DTest.java b/unit_tests/src/Sound3DTest.java new file mode 100644 index 0000000..c90e988 --- /dev/null +++ b/unit_tests/src/Sound3DTest.java @@ -0,0 +1,91 @@ +/* + * Created on May 1, 2003 + * + * + * Copyright 2003 Sun Microsystems, Inc. All rights reserved. + * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. + */ +import java.io.IOException; + +import javax.sound.sampled.UnsupportedAudioFileException; + +import net.java.games.sound3d.AudioSystem3D; +import net.java.games.sound3d.Context; +import net.java.games.sound3d.Device; +import net.java.games.sound3d.Listener; +import net.java.games.sound3d.Source; + +/** + * @author Athomas Goldberg + * + */ +public class Sound3DTest { + + public static float lerp(float v1, float v2, float t) { + float result = 0; + result = v1 + ((v2-v1) * t); + return result; + } + + public static void main(String[] args) { + AudioSystem3D.init(); + + // create the initial context - this can be collapsed into the init. + Device device = AudioSystem3D.openDevice("DirectSound3D"); + Context context = AudioSystem3D.createContext(device); + AudioSystem3D.makeContextCurrent(context); + + // get the listener object + Listener listener = AudioSystem3D.getListener(); + listener.setPosition(0,0,0); + + // load a source and play it + try { + Source source1 = AudioSystem3D.loadSource("lewiscarroll.wav"); + source1.setPosition(0,0,0); + source1.setLooping(true); + source1.play(); + + try { + Thread.sleep(10000); + } catch (InterruptedException e) { + + } + + // move the source + source1.setPosition(1,1,1); + + // move the listener + for(int i = 0; i < 1000; i++) { + float t = ((float)i)/1000f; + float lp = lerp(0f,2f,t); + listener.setPosition(lp,lp,lp); + try { + Thread.sleep(10); + } catch (InterruptedException e) { + + } + } + + // fade listener out. + for(int i = 0; i < 1000; i++) { + float t = ((float)i)/1000f; + float lp = lerp(1f,0f,t); + listener.setGain(lp); + try { + Thread.sleep(10); + } catch (InterruptedException e) { + } + } + + source1.stop(); + source1.delete(); + context.destroy(); + device.close(); + } catch (IOException e) { + e.printStackTrace(); + } catch (UnsupportedAudioFileException e) { + e.printStackTrace(); + } + } +} |