PlaySine.java

Go to the documentation of this file.
00001 
00007 package com.portaudio;
00008 
00009 import com.portaudio.TestBasic.SineOscillator;
00010 
00011 public class PlaySine
00012 {
00020         private void writeSineData( BlockingStream stream, int framesPerBuffer,
00021                         int numFrames, int sampleRate )
00022         {
00023                 float[] buffer = new float[framesPerBuffer * 2];
00024                 SineOscillator osc1 = new SineOscillator( 200.0, sampleRate );
00025                 SineOscillator osc2 = new SineOscillator( 300.0, sampleRate );
00026                 int framesLeft = numFrames;
00027                 while( framesLeft > 0 )
00028                 {
00029                         int index = 0;
00030                         int framesToWrite = (framesLeft > framesPerBuffer) ? framesPerBuffer
00031                                         : framesLeft;
00032                         for( int j = 0; j < framesToWrite; j++ )
00033                         {
00034                                 buffer[index++] = (float) osc1.next();
00035                                 buffer[index++] = (float) osc2.next();
00036                         }
00037                         stream.write( buffer, framesToWrite );
00038                         framesLeft -= framesToWrite;
00039                 }
00040         }
00041 
00045         public void play()
00046         {
00047                 PortAudio.initialize();
00048 
00049                 // Get the default device and setup the stream parameters.
00050                 int deviceId = PortAudio.getDefaultOutputDevice();
00051                 DeviceInfo deviceInfo = PortAudio.getDeviceInfo( deviceId );
00052                 double sampleRate = deviceInfo.defaultSampleRate;
00053                 System.out.println( "  deviceId    = " + deviceId );
00054                 System.out.println( "  sampleRate  = " + sampleRate );
00055                 System.out.println( "  device name = " + deviceInfo.name );
00056 
00057                 StreamParameters streamParameters = new StreamParameters();
00058                 streamParameters.channelCount = 2;
00059                 streamParameters.device = deviceId;
00060                 streamParameters.suggestedLatency = deviceInfo.defaultLowOutputLatency;
00061                 System.out.println( "  suggestedLatency = "
00062                                 + streamParameters.suggestedLatency );
00063 
00064                 int framesPerBuffer = 256;
00065                 int flags = 0;
00066                 
00067                 // Open a stream for output.
00068                 BlockingStream stream = PortAudio.openStream( null, streamParameters,
00069                                 (int) sampleRate, framesPerBuffer, flags );
00070 
00071                 int numFrames = (int) (sampleRate * 4); // enough for 4 seconds
00072 
00073                 stream.start();
00074 
00075                 writeSineData( stream, framesPerBuffer, numFrames, (int) sampleRate );
00076 
00077                 stream.stop();
00078                 stream.close();
00079 
00080                 PortAudio.terminate();
00081                 System.out.println( "JPortAudio test complete." );
00082         }
00083 
00084         public static void main( String[] args )
00085         {
00086                 PlaySine player = new PlaySine();
00087                 player.play();
00088         }
00089 }

Generated on Sat Aug 6 19:33:25 2016 for PortAudio by  doxygen 1.5.6