import jass.render.*;
import jass.engine.*;
import jass.generators.*;
import java.util.*;
import java.awt.*;
/**
Pan white noise
*/
public class Stereo extends Thread {
public static void main (String args[]) throws Exception {
float srate = 44100.f;
int bufferSize = 64;
int bufferSizeJavaSound = 1024*16;
int nBuffersRtAudio = 1024/bufferSize;
boolean nativeSound = false;
int nchannels = 2;
int nSources = 1;
if(args.length != 0) {
System.out.println("Usage: java Stereo");
return;
}
final SourcePlayer player;
player = new SourcePlayer(bufferSize*nchannels,bufferSizeJavaSound,srate);
player.setNChannels(nchannels);
player.setUseNativeSound(nativeSound);
player.setNumRtAudioBuffersNative(nBuffersRtAudio);
final RandOut source = new RandOut(bufferSize);
//final Sine source = new Sine(srate,bufferSize);
//source.setFrequency(440);
final Mixer mixer = new Mixer(bufferSize*nchannels,nSources,nchannels);
mixer.addSource(source);
player.addSource(mixer);
double pan = .5;
// Add control panel
String[] names = {"pan "};
double[] val = {pan};
double[] min = {0};
double[] max = {1};
int nbuttons = 1;
Controller a_controlPanel = new Controller(new java.awt.Frame ("Stereo"),
false,val.length,nbuttons) {
public void onButton(int k) {
switch(k) {
case 0:
player.resetAGC();
mixer.setGain(0,1);
break;
}
}
public void onSlider(int k) {
switch(k) {
case 0:
mixer.setPan(0,(float)this.val[k]);
break;
}
}
};
a_controlPanel.addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosing(java.awt.event.WindowEvent e) {
System.out.println("Close handler called");
player.stopPlaying();
try{
sleep(500);
} catch(Exception e3) {
}
System.exit(0);
}
});
a_controlPanel.setSliders(val,min,max,names);
a_controlPanel.setButtonNames (new String[] {"Reset"});
a_controlPanel.setVisible(true);
player.start();
}
}