/** @page querying_devices Enumerating and Querying PortAudio Devices @ingroup tutorial @section tut_query1 Querying Devices It is often fine to use the default device as we did previously in this tutorial, but there are times when you'll want to explicitly choose the device from a list of available devices on the system. To see a working example of this, check out pa_devs.c in the tests/ directory of the PortAudio source code. To do so, you'll need to first initialize PortAudio and Query for the number of Devices: @code int numDevices; numDevices = Pa_GetDeviceCount(); if( numDevices < 0 ) { printf( "ERROR: Pa_CountDevices returned 0x%x\n", numDevices ); err = numDevices; goto error; } @endcode If you want to get information about each device, simply loop through as follows: @code const PaDeviceInfo *deviceInfo; for( i=0; idefaultLowInputLatency ; inputParameters.hostApiSpecificStreamInfo = NULL; //See you specific host's API docs for info on using this field bzero( &outputParameters, sizeof( outputParameters ) ); //not necessary if you are filling in all the fields outputParameters.channelCount = outChan; outputParameters.device = outDevNum; outputParameters.hostApiSpecificStreamInfo = NULL; outputParameters.sampleFormat = paFloat32; outputParameters.suggestedLatency = Pa_GetDeviceInfo(outDevNum)->defaultLowOutputLatency ; outputParameters.hostApiSpecificStreamInfo = NULL; //See you specific host's API docs for info on using this field err = Pa_OpenStream( &stream, &inputParameters, &outputParameters, srate, framesPerBuffer, paNoFlag, //flags that can be used to define dither, clip settings and more portAudioCallback, //your callback function (void *)this ); //data to be passed to callback. In C++, it is frequently (void *)this //don't forget to check errors! @endcode Previous: \ref utility_functions | Next: \ref blocking_read_write */