package sound;
import br.com.etyllica.loader.LoaderImpl;
import sound.paulscode.Library;
import sound.paulscode.SoundSystem;
import sound.paulscode.SoundSystemConfig;
import sound.paulscode.SoundSystemException;
import sound.paulscode.codecs.CodecJLayerMP3;
import sound.paulscode.codecs.CodecJOrbis;
import sound.paulscode.codecs.CodecWav;
import sound.paulscode.libraries.LibraryJavaSound;
/**
*
* @author yuripourre
* @license LGPLv3
*
*/
public class MultimediaLoader extends LoaderImpl {
private SoundSystem mySoundSystem;
private static MultimediaLoader instance = null;
public static MultimediaLoader getInstance() {
if(instance==null){
instance = new MultimediaLoader();
}
return instance;
}
public MultimediaLoader() {
folder = "assets/sounds/";
try {
SoundSystemConfig.setCodec( "wav", CodecWav.class );
//SoundSystemConfig.setCodec( "ogg", CodecJOgg.class );
SoundSystemConfig.setCodec( "ogg", CodecJOrbis.class );
SoundSystemConfig.setCodec( "mp3", CodecJLayerMP3.class );
SoundSystemConfig.addLibrary(LibraryJavaSound.class);
//SoundSystemConfig.addLibrary(LibraryJOAL.class);
//SoundSystemConfig.setSoundFilesPackage(folder);
mySoundSystem = new SoundSystem(LibraryJavaSound.class);
//mySoundSystem = new SoundSystem(LibraryJOAL.class);
}
catch(SoundSystemException e) {
System.err.println("Error on "+this.getClass().getSimpleName() );
}
}
public void setSoundLibrary(Class<? extends Library> library){
try {
mySoundSystem = new SoundSystem(library);
} catch (SoundSystemException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public boolean isPlaying(String path) {
return mySoundSystem.playing(path);
}
public void loadSound(String path) {
mySoundSystem.loadSound(fullPath(path));
}
public void playSound(String path) {
mySoundSystem.quickPlay( false, fullPath(path), false,
0, 0, 0,
SoundSystemConfig.ATTENUATION_NONE,
SoundSystemConfig.getDefaultRolloff());
}
//Loads ogg and mp3 too
public void loadMusic(String path) {
mySoundSystem.loadSound(fullPath(path));
}
public void playMusic(String path, boolean loop) {
mySoundSystem.backgroundMusic( fullPath(path), fullPath(path), loop );
}
public void playMusicStream(String path) {
playMusicStream(path, false);
}
public void playMusicStream(String path, boolean loop) {
//mySoundSystem.newStreamingSource(true, fullPath()+path, fullPath()+path, loop, 0, 0, 0, SoundSystemConfig.ATTENUATION_NONE, 0);
playMusic(path, loop);
}
public void stop(String path) {
mySoundSystem.stop(fullPath(path));
}
}