diff options
author | Guenter Geiger <ggeiger@users.sourceforge.net> | 2004-02-02 12:18:59 +0000 |
---|---|---|
committer | Guenter Geiger <ggeiger@users.sourceforge.net> | 2004-02-02 12:18:59 +0000 |
commit | 2e416ee0095f1bf608f849f156d564e0f45fb8ab (patch) | |
tree | 9e4881e81953b434b91dbd35218d78f05b27e82e /pd/portaudio/pa_tests/pa_minlat.c | |
parent | ae6b5d89ea93b95c2990895077cf5e8f0bba9ad9 (diff) |
merged in version_0_37_1test6
svn path=/trunk/; revision=1305
Diffstat (limited to 'pd/portaudio/pa_tests/pa_minlat.c')
-rw-r--r-- | pd/portaudio/pa_tests/pa_minlat.c | 176 |
1 files changed, 0 insertions, 176 deletions
diff --git a/pd/portaudio/pa_tests/pa_minlat.c b/pd/portaudio/pa_tests/pa_minlat.c deleted file mode 100644 index 736445a7..00000000 --- a/pd/portaudio/pa_tests/pa_minlat.c +++ /dev/null @@ -1,176 +0,0 @@ -/* - * $Id: pa_minlat.c,v 1.1.1.1 2003-05-09 16:03:56 ggeiger Exp $ - * paminlat.c - * Experiment with different numbers of buffers to determine the - * minimum latency for a computer. - * - * Author: Phil Burk http://www.softsynth.com - * - * This program uses the PortAudio Portable Audio Library. - * For more information see: http://www.portaudio.com - * Copyright (c) 1999-2000 Ross Bencina and Phil Burk - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files - * (the "Software"), to deal in the Software without restriction, - * including without limitation the rights to use, copy, modify, merge, - * publish, distribute, sublicense, and/or sell copies of the Software, - * and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * Any person wishing to distribute modifications to the Software is - * requested to send the modifications to the original developer so that - * they can be incorporated into the canonical version. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR - * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF - * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - */ -#include <stdio.h> -#include <stdlib.h> -#include <math.h> -#include "portaudio.h" - -#ifndef M_PI -#define M_PI (3.14159265) -#endif -#define TWOPI (M_PI * 2.0) - -#define DEFAULT_BUFFER_SIZE (32) - -typedef struct -{ - double left_phase; - double right_phase; -} -paTestData; - -/* Very simple synthesis routine to generate two sine waves. */ -static int paminlatCallback( void *inputBuffer, void *outputBuffer, - unsigned long framesPerBuffer, - PaTimestamp outTime, void *userData ) -{ - paTestData *data = (paTestData*)userData; - float *out = (float*)outputBuffer; - unsigned int i; - double left_phaseInc = 0.02; - double right_phaseInc = 0.06; - - double left_phase = data->left_phase; - double right_phase = data->right_phase; - - for( i=0; i<framesPerBuffer; i++ ) - { - left_phase += left_phaseInc; - if( left_phase > TWOPI ) left_phase -= TWOPI; - *out++ = (float) sin( left_phase ); - - right_phase += right_phaseInc; - if( right_phase > TWOPI ) right_phase -= TWOPI; - *out++ = (float) sin( right_phase ); - } - - data->left_phase = left_phase; - data->right_phase = right_phase; - return 0; -} -void main( int argc, char **argv ); -void main( int argc, char **argv ) -{ - PaStream *stream; - PaError err; - paTestData data; - int go; - int outLatency = 0; - int minLatency = DEFAULT_BUFFER_SIZE * 2; - int framesPerBuffer; - double sampleRate = 44100.0; - char str[256]; - printf("pa_minlat - Determine minimum latency for your computer.\n"); - printf(" usage: pa_minlat {userBufferSize}\n"); - printf(" for example: pa_minlat 64\n"); - printf("Adjust your stereo until you hear a smooth tone in each speaker.\n"); - printf("Then try to find the smallest number of frames that still sounds smooth.\n"); - printf("Note that the sound will stop momentarily when you change the number of buffers.\n"); - - /* Get bufferSize from command line. */ - framesPerBuffer = ( argc > 1 ) ? atol( argv[1] ) : DEFAULT_BUFFER_SIZE; - printf("Frames per buffer = %d\n", framesPerBuffer ); - - data.left_phase = data.right_phase = 0.0; - - err = Pa_Initialize(); - if( err != paNoError ) goto error; - - outLatency = sampleRate * 200.0 / 1000.0; // 200 msec - - /* Try different numBuffers in a loop. */ - go = 1; - while( go ) - { - - printf("Latency = %d frames = %6.1f msec.\n", outLatency, - (outLatency * 1000.0 / sampleRate) ); - err = Pa_OpenStream( - &stream, - paNoDevice, - 0, /* no input */ - paFloat32, /* 32 bit floating point input */ - 0, - NULL, - Pa_GetDefaultOutputDevice(), /* default output device */ - 2, /* stereo output */ - paFloat32, /* 32 bit floating point output */ - outLatency, - NULL, - sampleRate, - framesPerBuffer, - paClipOff, /* we won't output out of range samples so don't bother clipping them */ - paminlatCallback, - &data ); - if( err != paNoError ) goto error; - if( stream == NULL ) goto error; - - /* Start audio. */ - err = Pa_StartStream( stream ); - if( err != paNoError ) goto error; - - /* Ask user for a new nlatency. */ - printf("\nMove windows around to see if the sound glitches.\n"); - printf("Latency currently %d, enter new number, or 'q' to quit: ", outLatency ); - gets( str ); - if( str[0] == 'q' ) go = 0; - else - { - outLatency = atol( str ); - if( outLatency < minLatency ) - { - printf( "Latency below minimum of %d! Set to minimum!!!\n", minLatency ); - outLatency = minLatency; - } - } - /* Stop sound until ENTER hit. */ - err = Pa_StopStream( stream ); - if( err != paNoError ) goto error; - err = Pa_CloseStream( stream ); - if( err != paNoError ) goto error; - } - printf("A good setting for latency would be somewhat higher than\n"); - printf("the minimum latency that worked.\n"); - printf("PortAudio: Test finished.\n"); - Pa_Terminate(); - return; -error: - Pa_Terminate(); - fprintf( stderr, "An error occured while using the portaudio stream\n" ); - fprintf( stderr, "Error number: %d\n", err ); - fprintf( stderr, "Error message: %s\n", Pa_GetErrorText( err ) ); -} |