48 #define NUM_SECONDS (5) 49 #define SAMPLE_RATE (44100) 50 #define FRAMES_PER_BUFFER (64) 53 #define M_PI (3.14159265) 56 #define TABLE_SIZE (200) 61 Sine() : stream(0), left_phase(0), right_phase(0)
64 for(
int i=0; i<TABLE_SIZE; i++ )
66 sine[i] = (float) sin( ((
double)i/(
double)TABLE_SIZE) * M_PI * 2. );
69 sprintf( message,
"No Message" );
76 outputParameters.
device = index;
105 if (err != paNoError)
124 return (err == paNoError);
135 return (err == paNoError);
145 return (err == paNoError);
150 int paCallbackMethod(
const void *inputBuffer,
void *outputBuffer,
151 unsigned long framesPerBuffer,
155 float *out = (
float*)outputBuffer;
162 for( i=0; i<framesPerBuffer; i++ )
164 *out++ = sine[left_phase];
165 *out++ = sine[right_phase];
167 if( left_phase >= TABLE_SIZE ) left_phase -= TABLE_SIZE;
169 if( right_phase >= TABLE_SIZE ) right_phase -= TABLE_SIZE;
180 static int paCallback(
const void *inputBuffer,
void *outputBuffer,
181 unsigned long framesPerBuffer,
188 return ((
Sine*)userData)->paCallbackMethod(inputBuffer, outputBuffer,
195 void paStreamFinishedMethod()
197 printf(
"Stream Completed: %s\n", message );
203 static void paStreamFinished(
void* userData)
205 return ((
Sine*)userData)->paStreamFinishedMethod();
209 float sine[TABLE_SIZE];
223 printf(
"PortAudio Test: output sine wave. SR = %d, BufSize = %d\n", SAMPLE_RATE, FRAMES_PER_BUFFER);
226 if( err != paNoError )
goto error;
232 printf(
"Play for %d seconds.\n", NUM_SECONDS );
242 printf(
"Test finished.\n");
248 fprintf( stderr,
"An error occured while using the portaudio stream\n" );
249 fprintf( stderr,
"Error number: %d\n", err );
PaError Pa_Initialize(void)
PaError Pa_StopStream(PaStream *stream)
PaError Pa_OpenStream(PaStream **stream, const PaStreamParameters *inputParameters, const PaStreamParameters *outputParameters, double sampleRate, unsigned long framesPerBuffer, PaStreamFlags streamFlags, PaStreamCallback *streamCallback, void *userData)
PaError Pa_SetStreamFinishedCallback(PaStream *stream, PaStreamFinishedCallback *streamFinishedCallback)
PaError Pa_StartStream(PaStream *stream)
void * hostApiSpecificStreamInfo
The portable PortAudio API.
PaSampleFormat sampleFormat
unsigned long PaStreamCallbackFlags
const PaDeviceInfo * Pa_GetDeviceInfo(PaDeviceIndex device)
PaDeviceIndex Pa_GetDefaultOutputDevice(void)
const char * Pa_GetErrorText(PaError errorCode)
PaError Pa_CloseStream(PaStream *stream)
PaError Pa_Terminate(void)