if (!soundStream.hasStreamData()) { // load all the data int buffer = alGenBuffers(); ByteBuffer sample = soundStream.getAllSamples(); alBufferData(buffer, AL_FORMAT_STEREO16, sample, soundStream.getSampleRate()); alSourcei(soundStream.getSoundId(), AL_BUFFER, buffer); } else { // upfront load some buffered data for (int i = 0; i < numberSoundBuffers; i++) { int buffer = alGenBuffers(); ByteBuffer sample = soundStream.readNextSample(); alBufferData(buffer, AL_FORMAT_STEREO16, sample, soundStream.getSampleRate()); alSourceQueueBuffers(soundStream.getSoundId(), buffer); } }
if (soundStream.hasStreamData()) { // remove any buffers already played and replace with new ones int currentBuffersProcessed = alGetSourcei(soundStream.getSoundId(), AL_BUFFERS_PROCESSED); for (int i = 0; i < currentBuffersProcessed; i++) { int buffer = alSourceUnqueueBuffers(soundStream.getSoundId()); alDeleteBuffers(buffer); buffer = alGenBuffers(); ByteBuffer sample = soundStream.readNextSample(); if (sample == null) { return; } alBufferData(buffer, AL_FORMAT_STEREO16, sample, soundStream.getSampleRate()); alSourceQueueBuffers(soundStream.getSoundId(), buffer); } } if (alGetSourcei(soundStream.getSoundId(), AL_SOURCE_STATE) != AL_PLAYING) { alSourcePlay(soundStream.getSoundId()); }
java.io.FileInputStream fin = null; try { fin = new java.io.FileInputStream("FancyPants.wav"); } catch (java.io.FileNotFoundException ex) { ex.printStackTrace(); return AL10.AL_FALSE; } WaveData waveFile = WaveData.create(fin); try { fin.close(); } catch (java.io.IOException ex) { }*/ //Loads the wave file from this class's package in your classpath WaveData waveFile = WaveData.create("FancyPants.wav"); AL10.alBufferData(buffer.get(0), waveFile.format, waveFile.data, waveFile.samplerate); waveFile.dispose();