import java.net.*; import jass.generators.*; import jass.render.*; import jass.engine.*; public class GrooveDemo { int buffersizeJASS = 32; // buffers computed for rendering. Determines latency jitter boolean useNative = true; // use native libs or JavaSound int bufferSizeJavaSound = 8*1024; // if use JavaSound // Number of internal buffers of size buffersizeJASS. So latency is buffersizeJASS*bufferSizeJavaSound/srate. // On LINUX buffersizeJASS < 32 is not possible on my system, on windows can go as low as 2. // buffersizeJASS*bufferSizeJavaSound is renderBuffersize; I find 1024 is very solid, smaller up to 128 or lower is // possible but I can't check since my second HD is funny (interrupts CPU when accessing) int numRtAudioBuffersNative=0; float srate = 44100; SourcePlayer sourcePlayer; // render object Groove theGroove; // encapsulates hardware public static void main (String[] args) { if(args.length != 3) { System.out.println("Usage: java GrooveDemo jassBuffersize(2^k) renderBuffersize(2^m) mono16bit44KHzwavfile.wav"); return; } new GrooveDemo(args); } public GrooveDemo(String[] args) { initAudio(args); } private void initAudio(String[] args) { buffersizeJASS = Integer.parseInt(args[0]); int renderBuffersize = Integer.parseInt(args[1]); if(renderBuffersize == 0) { useNative = false; } else { numRtAudioBuffersNative = renderBuffersize/buffersizeJASS; } sourcePlayer = new SourcePlayer(buffersizeJASS,bufferSizeJavaSound,srate); sourcePlayer.setUseNativeSound(useNative); sourcePlayer.setNumRtAudioBuffersNative(numRtAudioBuffersNative); try { theGroove = new Groove(srate,buffersizeJASS,args[2]); } catch(Exception e) { System.out.println("error Groove create:"+e); } // configure patch: try { sourcePlayer.addSource(theGroove); } catch(Exception e) {} //run it sourcePlayer.start(); } }