[todo] have audio update on separate thread. possible thread contention.
\r
public Music (OpenALAudio audio, FileHandle file) {\r
super(audio, file);\r
+ bitstream = new Bitstream(file.read());\r
+ decoder = new MP3Decoder();\r
+ try {\r
+ Header header = bitstream.readFrame();\r
+ if (header == null) throw new GdxRuntimeException("empty ogg"); \r
+ int channels = header.mode() == Header.SINGLE_CHANNEL ? 1 : 2;\r
+ outputBuffer = new OutputBuffer(channels, false);\r
+ decoder.setOutputBuffer(outputBuffer);\r
+ setup(channels, header.getSampleRate()); \r
+ } catch(BitstreamException e) {\r
+ throw new GdxRuntimeException("error while preloading mp3", e);\r
+ }\r
}\r
\r
protected int read (byte[] buffer) {\r
\r
public Music (OpenALAudio audio, FileHandle file) {\r
super(audio, file);\r
+ input = new OggInputStream(file.read());\r
+ setup(input.getChannels(), input.getSampleRate());\r
}\r
\r
protected int read (byte[] buffer) {\r
\r
public Music (OpenALAudio audio, FileHandle file) {\r
super(audio, file);\r
+ input = new WavInputStream(file);\r
+ setup(input.channels, input.sampleRate);\r
}\r
\r
protected int read (byte[] buffer) {\r
public class JoglDebugStarter {\r
\r
public static void main (String[] argv) {\r
- new JoglApplication(new com.badlogic.gdx.tests.Box2DTest(), "Debug Test", 480, 320, false);\r
+ new JoglApplication(new com.badlogic.gdx.tests.MusicTest(), "Debug Test", 480, 320, false);\r
}\r
}\r
\r
@Override public void create() {\r
music = Gdx.audio.newMusic(Gdx.files.internal("data/threeofaperfectpair.mp3"));\r
+// music = Gdx.audio.newMusic(Gdx.files.internal("data/cloudconnected.ogg"));\r
+// music = Gdx.audio.newMusic(Gdx.files.internal("data/sell_buy_item.wav")); \r
buttons = new TextureRegion(new Texture(Gdx.files.internal("data/playback.png")));\r
batch = new SpriteBatch();\r
font = new BitmapFont();\r