/* $Id: patest1.c,v 1.1.1.1 2002/01/22 00:52:33 phil Exp $ patest1.c Ring modulate the audio input with a sine wave for 20 seconds using the Portable Audio api Author: Ross Bencina Modifications: April 5th, 2001 - PLB - Check for NULL inputBuffer. */ #include #include #include "portaudio.h" #ifndef M_PI #define M_PI (3.14159265) #endif typedef struct { float sine[100]; int phase; int sampsToGo; } patest1data; static int patest1Callback( void *inputBuffer, void *outputBuffer, unsigned long bufferFrames, PaTimestamp outTime, void *userData ) { patest1data *data = (patest1data*)userData; float *in = (float*)inputBuffer; float *out = (float*)outputBuffer; int framesToCalc = bufferFrames; unsigned long i; int finished = 0; /* Check to see if any input data is available. */ if(inputBuffer == NULL) return 0; if( data->sampsToGo < bufferFrames ) { framesToCalc = data->sampsToGo; finished = 1; } for( i=0; isine[data->phase]; /* left */ *out++ = *in++ * data->sine[data->phase++]; /* right */ if( data->phase >= 100 ) data->phase = 0; } data->sampsToGo -= framesToCalc; /* zero remainder of final buffer if not already done */ for( ; i