For any sound that’s longer than a few seconds it is preferable to stream it from disk instead of fully loading it into RAM. libGDX provides a Music interface that lets you do that.
To load a Music instance we can do the following:
Music music = Gdx.audio.newMusic(Gdx.files.internal("data/mymusic.mp3"));
This loads an MP3 file called
"mymusic.mp3" from the internal directory
Playing back the music instance works as follows:
Of course you can set various playback attributes of the
music.setVolume(0.5f); // sets the volume to half the maximum volume music.setLooping(true); // will repeat playback until music.stop() is called music.stop(); // stops the playback music.pause(); // pauses the playback music.play(); // resumes the playback boolean isPlaying = music.isPlaying(); // obvious :) boolean isLooping = music.isLooping(); // obvious as well :) float position = music.getPosition(); // returns the playback position in seconds
Music instances are heavy on some backends (such as Android), you should usually not have more than about 10 loaded and more than 1 or 2 playing at the same time.
Music instance needs to be disposed if it is no longer needed, to free up resources.