[commited] get current play-position of an audio-track

Hola,



I added a new method to audioplayer that returns the position(in secs) of the current track.



Usage:


audioTrack.getPlayer().getPosition()



Patch (with test in TestMusicQueue):

Index: src/com/jmex/audio/openal/OpenALMemoryAudioPlayer.java
===================================================================
--- src/com/jmex/audio/openal/OpenALMemoryAudioPlayer.java   (revision 5382)
+++ src/com/jmex/audio/openal/OpenALMemoryAudioPlayer.java   (working copy)
@@ -36,6 +36,7 @@
 import java.util.logging.Logger;
 
 import org.lwjgl.openal.AL10;
+import org.lwjgl.openal.AL11;
 
 import com.jme.math.Vector3f;
 import com.jmex.audio.AudioBuffer;
@@ -116,6 +117,8 @@
         }
     }
    
+    
+    
     @Override
     public void applyTrackProperties() {
         OpenALPropertyTool.applyProperties(this, source);
@@ -159,6 +162,11 @@
         AL10.alSource3f(source.getId(), AL10.AL_VELOCITY, vel.x, vel.y, vel.z);
     }
 
+    public float getPosition()
+    {
+         return AL10.alGetSourcef(source.getId(), AL11.AL_SEC_OFFSET);
+    }
+    
     @Override
     public void setVolume(float volume) {
         super.setVolume(volume);
Index: src/com/jmex/audio/openal/OpenALStreamedAudioPlayer.java
===================================================================
--- src/com/jmex/audio/openal/OpenALStreamedAudioPlayer.java   (revision 5382)
+++ src/com/jmex/audio/openal/OpenALStreamedAudioPlayer.java   (working copy)
@@ -40,6 +40,7 @@
 import java.util.logging.Logger;
 
 import org.lwjgl.openal.AL10;
+import org.lwjgl.openal.AL11;
 
 import com.jme.math.Vector3f;
 import com.jme.util.geom.BufferUtils;
@@ -173,6 +174,11 @@
         }
     }
 
+    public float getPosition()
+    {
+         return AL10.alGetSourcef(source.getId(), AL11.AL_SEC_OFFSET);
+    }
+    
     @Override
     public void pause() {
         isPaused = true;
Index: src/jmetest/audio/TestMusicQueue.java
===================================================================
--- src/jmetest/audio/TestMusicQueue.java   (revision 5382)
+++ src/jmetest/audio/TestMusicQueue.java   (working copy)
@@ -40,11 +40,14 @@
 import com.jmex.audio.AudioTrack;
 import com.jmex.audio.MusicTrackQueue;
 import com.jmex.audio.MusicTrackQueue.RepeatType;
+import com.jmex.audio.player.AudioPlayer;
 
 public class TestMusicQueue extends SimpleGame {
    private static final Logger logger = Logger.getLogger(TestMusicQueue.class
          .getName());
-
+   
+   private MusicTrackQueue queue;
+   
    /**
     * Entry point for the test,
     *
@@ -62,11 +65,12 @@
          AudioTrack track = AudioSystem.getSystem().createAudioTrack(
                TestMusicQueue.class.getClassLoader().getResource(
                      "jmetest/data/sound/Footsteps.wav"), false);
-         MusicTrackQueue queue = AudioSystem.getSystem().getMusicQueue();
+         queue = AudioSystem.getSystem().getMusicQueue();
          queue.setCrossfadeinTime(0);
          queue.setRepeatType(RepeatType.ONE);
          queue.addTrack(track);
          queue.play();
+         
       } catch (Exception e) {
          logger.logp(Level.SEVERE, this.getClass().toString(),
                "simpleAppletSetup()", "Exception", e);
@@ -76,5 +80,6 @@
    @Override
    protected void simpleUpdate() {
       AudioSystem.getSystem().update();
+      System.out.println("Position in current track: "+queue.getCurrentTrack().getPlayer().getPosition());
    }
 }
Index: src/com/jmex/audio/player/AudioPlayer.java
===================================================================
--- src/com/jmex/audio/player/AudioPlayer.java   (revision 5382)
+++ src/com/jmex/audio/player/AudioPlayer.java   (working copy)
@@ -84,6 +84,9 @@
    
     public abstract void applyTrackProperties();
 
+    abstract public float getPosition();
+
+    
     public void loop(boolean shouldLoop) {
         loop = shouldLoop;
     }

Just for info: commited