/*===============================================================================================
SIMPLEST.EXE
Copyright (c), Firelight Technologies Pty, Ltd, 1999,2000.
This is the simplest way to play a song through FMOD. It is basically Init, Load, Play!
===============================================================================================*/
/**
* I've ported the C++ FMOD example to use it with NativeFmod
*
* @author J�r�me JOUVIE (Jouvieje)
*
* WANT TO CONTACT ME ?
* E-mail :
* jerome.jouvie@gmail.com
* My web sites :
* http://jerome.jouvie.free.fr/
*/
package org.jouvieje.Fmod.Examples;
import java.nio.ByteBuffer;
import javax.swing.JPanel;
import org.jouvieje.Fmod.Fmod;
import org.jouvieje.Fmod.Init;
import org.jouvieje.Fmod.Defines.FSOUND_MODES;
import org.jouvieje.Fmod.Defines.VERSIONS;
import org.jouvieje.Fmod.Examples.Util.ConsoleGUI;
import org.jouvieje.Fmod.Examples.Util.FmodExampleFrame;
import org.jouvieje.Fmod.Examples.Util.Medias;
import org.jouvieje.Fmod.Exceptions.InitException;
import org.jouvieje.Fmod.Structures.FMUSIC_MODULE;
public class Simplest extends ConsoleGUI implements FSOUND_MODES, VERSIONS {
private static final long serialVersionUID = 1L;
public static void main(String[] args) {
new FmodExampleFrame(new Simplest());
}
private boolean init = false;
private boolean deinit = false;
private ByteBuffer modBuff = null;
private FMUSIC_MODULE mod = null;
public Simplest() {
super();
initFmod();
initialize();
}
public JPanel getPanel() { return this; }
public String getTitle() { return "FMOD Simplest example."; }
public void initFmod() {
/*
* NativeFmod Init
*/
try {
Init.loadLibraries();
} catch(InitException e) {
printExit("NativeFmod error! "+e.getMessage());
return;
}
/*
* Checking NativeFmodEx version
*/
if(NATIVEFMOD_LIBRARY_VERSION != NATIVEFMOD_JAR_VERSION) {
printExit("Error! NativeFmod library version ("+NATIVEFMOD_LIBRARY_VERSION+") is different to jar version ("+NATIVEFMOD_JAR_VERSION+")");
return;
}
/*==================================================*/
/*
* Checking Fmod version
*/
if(Fmod.FSOUND_GetVersion() < FMOD_VERSION) {
printExit("Error : You are using the wrong DLL version! You should be using FMOD "+FMOD_VERSION);
return;
}
init = true;
}
public void run() {
if(!init) {
return;
}
/*
* INITIALIZE
*/
if(!Fmod.FSOUND_Init(32000, 64, 0)) {
printExit(Fmod.FMOD_ErrorString(Fmod.FSOUND_GetError())+"\n");
return;
}
/*
* LOAD SONG
*/
modBuff = Medias.loadMediaIntoMemory("/Media/invtro94.s3m");
mod = Fmod.FMUSIC_LoadSongEx(modBuff, 0, modBuff.capacity(), FSOUND_LOADMEMORY, (int[])null, 0);
if(mod == null) {
print(Fmod.FMOD_ErrorString(Fmod.FSOUND_GetError())+"\n");
return;
}
Fmod.FMUSIC_PlaySong(mod);
/*
* UPDATE INTERFACE
*/
print("Press ENTER to quit\n");
print("=========================================================================\n");
print("Playing "+Fmod.FMUSIC_GetName(mod)+"...\n");
resetInput();
do {
printr( "order = "+Fmod.FMUSIC_GetOrder(mod)+"/"+Fmod.FMUSIC_GetNumOrders(mod) +
", row = "+Fmod.FMUSIC_GetRow(mod)+"/"+Fmod.FMUSIC_GetPatternLength(mod, Fmod.FMUSIC_GetOrder(mod)) +
" channels playing = "+Fmod.FSOUND_GetChannelsPlaying() +
" cpu usage = "+Fmod.FSOUND_GetCPUUsage()+" ");
try {
Thread.sleep(200);
} catch(InterruptedException e){}
}
while(!keyHit() && !deinit);
stop();
}
public void stop() {
if(!init || deinit) {
return;
}
deinit = true;
print("\n");
/*
* FREE SONG AND SHUT DOWN
*/
if(mod != null && !mod.isNull()) Fmod.FMUSIC_FreeSong(mod);
print("Shutdown FMOD\n");
Fmod.FSOUND_Close();
}
}