import jass.render.*;
import jass.engine.*;
import jass.generators.*;
import jass.contact.*;
import java.awt.event.*;
/**
*/
public class Demo extends Controller {
static int nsliders = 1;
static int nbuttons = 0;
public Demo(java.awt.Frame parent,boolean modal) {
super (parent, modal,nsliders,nbuttons);
parent.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.out.println("Close handler called");
sp1.stopPlaying();
System.exit(0);
}
});
}
static SourcePlayer sp1;
static GramophoneGroove gramophoneGroove;
static Turntable turnTable;
static Demo app;
static double speed=1; // turntable speed 1 = normal
static double scratchp = 0.; // set to 0.0001 or so to have scratches
static String[] names = {"speed "};
static double[] val = {speed};
static double[] min = {-3};
static double[] max = {3};
public static void main (String args[]) throws SinkIsFullException, UnsupportedAudioFileFormatException {
float srate = 44100.f;
int bufferSize = 1024; // JASS buffersize, determines control rate
int bufferSizeJavaSound = 8*1024; // internal JavaSound one
if(args.length != 1) {
System.out.println("Usage: java Demo ../data/hello.wav\n");
return;
}
gramophoneGroove = new GramophoneGroove(srate,bufferSize,args[0]);
turnTable = new Turntable(srate,bufferSize);
gramophoneGroove.setTurntable(turnTable);
sp1 = new SourcePlayer(bufferSize,bufferSizeJavaSound,srate);
sp1.setUseNativeSound(false); // false if use JavaSound
sp1.addSource(gramophoneGroove);
sp1.start();
app = new Demo(new java.awt.Frame("Groove"), true);
app.setSliders(val,min,max,names);
for(int k=0;k<nsliders;k++) {
app.onSlider(k);
}
//app.setButtonNames (new String[] {"Bang","Mute"});
app.setVisible(true);
}
public void onSlider(int k) {
switch(k) {
case 0:
speed = (float)super.val[0];
turnTable.v = speed;
break;
}
}
}