[commited] get current play-position of an audio-track (2 posts)

  • Profile picture of ttrocha ttrocha32p said 1 year, 11 months ago:

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

  • Profile picture of ttrocha ttrocha32p said 1 year, 9 months ago:

    Just for info: commited