9 import com.portaudio.TestBasic.SineOscillator;
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;
47 PortAudio.initialize();
50 int deviceId = PortAudio.getDefaultOutputDevice();
51 DeviceInfo deviceInfo = PortAudio.getDeviceInfo( deviceId );
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;
68 BlockingStream stream = PortAudio.openStream( null, streamParameters,
69 (int) sampleRate, framesPerBuffer, flags );
71 int numFrames = (int) (sampleRate * 4);
75 writeSineData( stream, framesPerBuffer, numFrames, (
int) sampleRate );
80 PortAudio.terminate();
81 System.out.println(
"JPortAudio test complete." );
84 public static void main( String[] args )