com.github.mathiewz.slick.openal.AudioLoader Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of modernized-slick Show documentation
Show all versions of modernized-slick Show documentation
The main purpose of this libraryis to modernize and maintain the slick2D library.
The newest version!
package com.github.mathiewz.slick.openal;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
/**
* A utility to provide a simple and rational interface to the
* slick internals
*
* @author kevin
*/
public class AudioLoader {
/** AIF Format Indicator */
private static final String AIF = "AIF";
/** WAV Format Indicator */
private static final String WAV = "WAV";
/** OGG Format Indicator */
private static final String OGG = "OGG";
/** MOD/XM Format Indicator */
private static final String MOD = "MOD";
/** MOD/XM Format Indicator */
private static final String XM = "XM";
/** True if the audio loader has be initialised */
private static boolean inited = false;
/**
* Initialise the audio loader
*/
private static void init() {
if (!inited) {
SoundStore.get().init();
inited = true;
}
}
/**
* Get audio data in a playable state by loading the complete audio into
* memory.
*
* @param format
* The format of the audio to be loaded (something like "XM" or "OGG")
* @param in
* The input stream from which to load the audio data
* @return An object representing the audio data
* @throws IOException
* Indicates a failure to access the audio data
*/
public static Audio getAudio(String format, InputStream in) throws IOException {
init();
if (format.equals(AIF)) {
return SoundStore.get().getAIF(in);
}
if (format.equals(WAV)) {
return SoundStore.get().getWAV(in);
}
if (format.equals(OGG)) {
return SoundStore.get().getOgg(in);
}
throw new IOException("Unsupported format for non-streaming Audio: " + format);
}
/**
* Get audio data in a playable state by setting up a stream that can be piped into
* OpenAL - i.e. streaming audio
*
* @param format
* The format of the audio to be loaded (something like "XM" or "OGG")
* @param url
* The location of the data that should be streamed
* @return An object representing the audio data
* @throws IOException
* Indicates a failure to access the audio data
*/
public static Audio getStreamingAudio(String format, URL url) throws IOException {
init();
if (format.equals(OGG)) {
return SoundStore.get().getOggStream(url);
}
if (format.equals(MOD)) {
return SoundStore.get().getMOD(url.openStream());
}
if (format.equals(XM)) {
return SoundStore.get().getMOD(url.openStream());
}
throw new IOException("Unsupported format for streaming Audio: " + format);
}
/**
* Allow the streaming system to update itself
*/
public static void update() {
init();
SoundStore.get().poll(0);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy