/** * Created on 8 jul. 2004 * @author J�r�me JOUVIE (Jouvieje) * * WANT TO CONTACT ME ? * @author J�r�me JOUVIE (Jouvieje) * @site http://jerome.jouvie.free.fr/ * @mail jerome.jouvie@gmail.com * * ABOUT * This sample show you how to use FMUSIC_CALLBACK */ package org.jouvieje.Fmod.Extras; import org.jouvieje.Fmod.Fmod; import org.jouvieje.Fmod.Init; import org.jouvieje.Fmod.Callbacks.FMUSIC_CALLBACK; import org.jouvieje.Fmod.Defines.VERSIONS; import org.jouvieje.Fmod.Exceptions.InitException; import org.jouvieje.Fmod.Structures.FMUSIC_MODULE; public class MusicCallback implements VERSIONS { public static void main(String[] args) { /* * NativeFmod Init */ try { Init.loadLibraries(); } catch(InitException e) { System.out.println("NativeFmod error! "+e.getMessage()); System.exit(1); } /* * Checking NativeFmodEx version */ if(NATIVEFMOD_LIBRARY_VERSION != NATIVEFMOD_JAR_VERSION) { System.out.println("Error! NativeFmod library version ("+NATIVEFMOD_LIBRARY_VERSION+") is different to jar version ("+NATIVEFMOD_JAR_VERSION+")"); System.exit(0); } /*==================================================*/ /* * Checking Fmod version */ if(Fmod.FSOUND_GetVersion() < FMOD_VERSION) { System.out.println("Error : You are using the wrong DLL version! You should be using FMOD "+FMOD_VERSION); System.exit(1); } System.out.println("MusicCallback example"); System.out.println(""); // ========================================================================================== // INITIALIZE FMOD // ========================================================================================== System.out.print("Initialize Fmod..."); if(!Fmod.FSOUND_Init(44100, 32, 0)) { System.err.println(Fmod.FMOD_ErrorString(Fmod.FSOUND_GetError())); System.exit(1); } System.out.println("OK"); // ========================================================================================== // LOADING THE SEQUENCE // ========================================================================================== String sequenceName = "Media/invtro94.s3m"; System.out.println(""); System.out.print("Loading the sequence "+sequenceName); FMUSIC_MODULE sequence = Fmod.FMUSIC_LoadSong(sequenceName); if(sequence == null) { System.out.println(""); System.err.println(sequenceName+" not found !"); System.out.println("Closing Fmod..."); Fmod.FSOUND_Close(); System.out.println("Finish"); System.exit(1); } System.out.println(""); // ========================================================================================== // CALLBACKS // ========================================================================================== System.out.println("Creating and adding callbacks"); FMUSIC_CALLBACK zxxCallback = new FMUSIC_CALLBACK() { public void FMUSIC_CALLBACK(FMUSIC_MODULE mod, short param) { System.out.println("ZxxCallback : param="+param); } }; FMUSIC_CALLBACK orderCallback = new FMUSIC_CALLBACK() { public void FMUSIC_CALLBACK(FMUSIC_MODULE mod, short param) { System.out.println("OrderCallback : param="+param); } }; FMUSIC_CALLBACK rowCallback = new FMUSIC_CALLBACK() { public void FMUSIC_CALLBACK(FMUSIC_MODULE mod, short param) { System.out.println("RowCallback : param="+param); } }; FMUSIC_CALLBACK instCallback = new FMUSIC_CALLBACK() { public void FMUSIC_CALLBACK(FMUSIC_MODULE mod, short param) { System.out.println("InstCallback : param="+param); } }; Fmod.FMUSIC_SetZxxCallback(sequence, zxxCallback); Fmod.FMUSIC_SetOrderCallback(sequence, orderCallback, 1); //Call at each order Fmod.FMUSIC_SetRowCallback(sequence, rowCallback, 10); //Call at each 10 row Fmod.FMUSIC_SetInstCallback(sequence, instCallback, 1); //Call at each instrument // ========================================================================================== // PLAYING // ========================================================================================== System.out.println(""); System.out.println("During the playing, press any key to quit."); Console.readString("Press a key to play the sequence ..."); Fmod.FMUSIC_SetLooping(sequence, false); Fmod.FMUSIC_PlaySong(sequence); Console.readString(); // ========================================================================================== // END // ========================================================================================== System.out.print("Close the sequence..."); Fmod.FMUSIC_StopSong(sequence); Fmod.FMUSIC_FreeSong(sequence); System.out.println("Finish"); System.out.print("Close Fmod..."); Fmod.FSOUND_Close(); System.out.println("Finish"); System.exit(0); } }