diff src/com/aurellem/capture/examples/AdvancedAudio.java @ 20:bc6fbfbbadd9 spazz

retarded spazz dancing achieved
author Robert McIntyre <rlm@mit.edu>
date Sat, 29 Oct 2011 16:22:57 -0700
parents 4de7988407ef
children c7a07eefaeea
line wrap: on
line diff
     1.1 --- a/src/com/aurellem/capture/examples/AdvancedAudio.java	Sat Oct 29 15:16:06 2011 -0700
     1.2 +++ b/src/com/aurellem/capture/examples/AdvancedAudio.java	Sat Oct 29 16:22:57 2011 -0700
     1.3 @@ -1,9 +1,11 @@
     1.4  package com.aurellem.capture.examples;
     1.5  
     1.6  import java.io.File;
     1.7 +import java.nio.ByteBuffer;
     1.8  
     1.9  import com.aurellem.capture.IsoTimer;
    1.10  import com.aurellem.capture.audio.MultiListener;
    1.11 +import com.aurellem.capture.audio.SoundProcessor;
    1.12  import com.aurellem.capture.audio.WaveFileWriter;
    1.13  import com.jme3.app.SimpleApplication;
    1.14  import com.jme3.audio.AudioNode;
    1.15 @@ -20,6 +22,7 @@
    1.16  import com.jme3.math.Vector3f;
    1.17  import com.jme3.scene.Geometry;
    1.18  import com.jme3.scene.Node;
    1.19 +import com.jme3.scene.Spatial;
    1.20  import com.jme3.scene.shape.Box;
    1.21  import com.jme3.scene.shape.Sphere;
    1.22  import com.jme3.system.AppSettings;
    1.23 @@ -50,7 +53,7 @@
    1.24  		  
    1.25  			AdvancedAudio app = new AdvancedAudio();
    1.26  			AppSettings settings = new AppSettings(true);
    1.27 -			//settings.setAudioRenderer("Send");
    1.28 +			settings.setAudioRenderer("Send");
    1.29  			app.setSettings(settings);
    1.30  			app.setShowSettings(false);
    1.31  			app.setPauseOnLostFocus(false);
    1.32 @@ -61,17 +64,23 @@
    1.33  	 private MotionTrack motionControl;
    1.34  	
    1.35  	 
    1.36 -	 private void makeEar(Node root, Vector3f position){
    1.37 +	 private Spatial makeEar(Node root, Vector3f position){
    1.38  		 Material mat = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md");
    1.39  		 Geometry ear = new Geometry("ear", new Box(1.0f, 1.0f, 1.0f));
    1.40  		 ear.setLocalTranslation(position);
    1.41  		 mat.setColor("Color", ColorRGBA.Green);
    1.42  		 ear.setMaterial(mat);
    1.43  		 root.attachChild(ear);
    1.44 +		 return ear;
    1.45  	 } 
    1.46  	 
    1.47  	 private Geometry bell;
    1.48  	 
    1.49 +	 private Spatial ear1;
    1.50 +	 private Spatial ear2;
    1.51 +	 private Spatial ear3;
    1.52 +	 private Spatial ear4;
    1.53 +	 
    1.54  	 
    1.55  	 private Vector3f[] path = new Vector3f[]{
    1.56  			 // loop 1
    1.57 @@ -136,10 +145,10 @@
    1.58  		 light.setColor(ColorRGBA.White.mult(1.5f));
    1.59  		 rootNode.addLight(light);
    1.60  
    1.61 -		 makeEar(rootNode, new Vector3f(0, 0 ,20));
    1.62 -		 makeEar(rootNode, new Vector3f(0, 0 ,-20));
    1.63 -		 makeEar(rootNode, new Vector3f(20, 0 ,0));
    1.64 -		 makeEar(rootNode, new Vector3f(-20, 0 ,0));
    1.65 +		 ear1 = makeEar(rootNode, new Vector3f(0, 0 ,20));
    1.66 +		 ear2 = makeEar(rootNode, new Vector3f(0, 0 ,-20));
    1.67 +		 ear3 = makeEar(rootNode, new Vector3f(20, 0 ,0));
    1.68 +		 ear4 = makeEar(rootNode, new Vector3f(-20, 0 ,0));
    1.69  
    1.70  		 MotionPath track = new MotionPath();
    1.71  		 
    1.72 @@ -205,28 +214,57 @@
    1.73    public File data4 = new File("/home/r/tmp/data4.wav");
    1.74    public File data5 = new File("/home/r/tmp/data5.wav");
    1.75    public File data6 = new File("/home/r/tmp/data6.wav");
    1.76 +
    1.77 +
    1.78 +  public class Dancer implements SoundProcessor {
    1.79 +
    1.80 +	  Spatial entity;
    1.81 +
    1.82 +	  float scale = 2;
    1.83 +	  
    1.84 +	  public Dancer(Spatial entity){
    1.85 +		  this.entity = entity;
    1.86 +	  }
    1.87 +
    1.88 +	  /**
    1.89 +	   * this method is irrelevant since there is no state to cleanup.
    1.90 +	   */
    1.91 +	  public void cleanup() {}
    1.92 +
    1.93 +
    1.94 +	  /**
    1.95 +	   * Dance to the beat!  This is the brain of an AI entity that 
    1.96 +	   * hears it's surroundings and reacts to them.
    1.97 +	   */
    1.98 +	  public void process(ByteBuffer audioSamples, int numSamples) {
    1.99 +		  System.out.println("I'm DANCING <3");
   1.100 +		  entity.scale(this.scale);
   1.101 +		  if (this.scale == 2f){this.scale = 0.5f;}
   1.102 +		  else {this.scale = 2;}
   1.103 +	  }
   1.104 +
   1.105 +
   1.106 +  }
   1.107 +
   1.108 +  
   1.109    
   1.110    
   1.111    public void simpleInitApp() {
   1.112  	this.setTimer(new IsoTimer(60));
   1.113 -	
   1.114 +    initAudio();
   1.115 +    initKeys();
   1.116 +	createScene();
   1.117  	if (this.audioRenderer instanceof MultiListener){
   1.118  		MultiListener rf = (MultiListener)this.audioRenderer;
   1.119  		
   1.120 -		for (int n = 0; n < 0; n++){
   1.121 -			Listener zzz = new Listener();
   1.122 -			rf.addListener(zzz);
   1.123 -		}
   1.124 -		Listener listener3 = new Listener();
   1.125 +		
   1.126  		rf.addListener(auxListener);
   1.127 -		rf.addListener(listener3);
   1.128 +		
   1.129  		rf.registerSoundProcessor(new WaveFileWriter(data1));
   1.130 -		rf.registerSoundProcessor(auxListener, new WaveFileWriter(data2));
   1.131 -		rf.registerSoundProcessor(listener3, new WaveFileWriter(data3));
   1.132 +		rf.registerSoundProcessor(auxListener, new Dancer(ear1));
   1.133 +		
   1.134  	}   
   1.135 -    initAudio();
   1.136 -    initKeys();
   1.137 -	createScene();
   1.138 +
   1.139      motionControl.play();
   1.140    }
   1.141