summaryrefslogtreecommitdiffstats
path: root/test/src/Sound3DTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'test/src/Sound3DTest.java')
-rw-r--r--test/src/Sound3DTest.java116
1 files changed, 116 insertions, 0 deletions
diff --git a/test/src/Sound3DTest.java b/test/src/Sound3DTest.java
new file mode 100644
index 0000000..f6a65a3
--- /dev/null
+++ b/test/src/Sound3DTest.java
@@ -0,0 +1,116 @@
+/**
+* Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*
+* -Redistribution of source code must retain the above copyright notice,
+* this list of conditions and the following disclaimer.
+*
+* -Redistribution 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 Sun Microsystems, Inc. or the names of contributors may
+* be used to endorse or promote products derived from this software without
+* specific prior written permission.
+*
+* This software is provided "AS IS," without a warranty of any kind.
+* ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING
+* ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR
+* NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN MICROSYSTEMS, INC. ("SUN") AND ITS
+* LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A
+* RESULT OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
+* IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT
+* OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR
+* PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
+* ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF SUN HAS
+* BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+*
+* You acknowledge that this software is not designed or intended for use in the
+* design, construction, operation or maintenance of any nuclear facility.
+*/
+import java.io.*;
+import javax.sound.sampled.*;
+import net.java.games.joal.*;
+import net.java.games.sound3d.*;
+
+/**
+ * @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) {
+ try {
+ AudioSystem3D.init();
+ } catch (ALException e) {
+ e.printStackTrace();
+ return;
+ }
+
+ // create the initial context - this can be collapsed into the init.
+ Device device = AudioSystem3D.openDevice(null);
+ 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();
+ }
+ }
+}