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;
}