20 private void writeSineData(
BlockingStream stream,
int framesPerBuffer,
21 int numFrames,
int sampleRate )
23 float[] buffer =
new float[framesPerBuffer * 2];
24 SineOscillator osc1 =
new SineOscillator( 200.0, sampleRate );
25 SineOscillator osc2 =
new SineOscillator( 300.0, sampleRate );
26 int framesLeft = numFrames;
27 while( framesLeft > 0 )
30 int framesToWrite = (framesLeft > framesPerBuffer) ? framesPerBuffer
32 for(
int j = 0; j < framesToWrite; j++ )
34 buffer[index++] = (float) osc1.next();
35 buffer[index++] = (float) osc2.next();
37 stream.
write( buffer, framesToWrite );
38 framesLeft -= framesToWrite;
50 int deviceId =
PortAudio.getDefaultOutputDevice();
52 double sampleRate = deviceInfo.defaultSampleRate;
53 System.out.println(
" deviceId = " + deviceId );
54 System.out.println(
" sampleRate = " + sampleRate );
55 System.out.println(
" device name = " + deviceInfo.name );
58 streamParameters.channelCount = 2;
59 streamParameters.device = deviceId;
60 streamParameters.suggestedLatency = deviceInfo.defaultLowOutputLatency;
61 System.out.println(
" suggestedLatency = " 62 + streamParameters.suggestedLatency );
64 int framesPerBuffer = 256;
69 (
int) sampleRate, framesPerBuffer, flags );
71 int numFrames = (int) (sampleRate * 4);
75 writeSineData( stream, framesPerBuffer, numFrames, (
int) sampleRate );
81 System.out.println(
"JPortAudio test complete." );
84 public static void main( String[] args )
static native void initialize()
static native void terminate()
boolean write(float[] buffer, int numFrames)