PortAudio 2.0
Utility Functions

In addition to the functions described elsewhere in this tutorial, PortAudio provides a number of Utility functions that are useful in a variety of circumstances. You'll want to read the portaudio.h reference, which documents the entire V19 API for details, but we'll try to cover the basics here.

Version Information

PortAudio offers two functions to determine the PortAudio Version. This is most useful when you are using PortAudio as a dynamic library, but it may also be useful at other times.

int Pa_GetVersion (void)
const char * Pa_GetVersionText (void)
const char * Pa_GetVersionText(void)
Definition pa_front.c:117
int Pa_GetVersion(void)
Definition pa_front.c:112

Error Text

PortAudio allows you to get error text from an error number.

const char * Pa_GetErrorText (PaError errorCode)
int PaError
Definition portaudio.h:122
const char * Pa_GetErrorText(PaError errorCode)
Definition pa_front.c:435

Stream State

PortAudio Streams exist in 3 states: Active, Stopped, and Callback Stopped. If a stream is in callback stopped state, you'll need to stop it before you can start it again. If you need to query the state of a PortAudio stream, there are two functions for doing so:

void PaStream
Definition portaudio.h:644
PaError Pa_IsStreamActive(PaStream *stream)
Definition pa_front.c:1539
PaError Pa_IsStreamStopped(PaStream *stream)
Definition pa_front.c:1523

Stream Info

If you need to retrieve info about a given stream, such as latency, and sample rate info, there's a function for that too:

const PaStreamInfo * Pa_GetStreamInfo(PaStream *stream)
Definition pa_front.c:1556
Definition portaudio.h:1052

Stream Time

If you need to synchronise other activities such as display updates or MIDI output with the PortAudio callback you need to know the current time according to the same timebase used by the stream callback timestamps.

PaTime Pa_GetStreamTime(PaStream *stream)
Definition pa_front.c:1592
double PaTime
Definition portaudio.h:465

Usage

To determine how much CPU is being used by the callback, use these:

double Pa_GetStreamCpuLoad (PaStream *stream)
double Pa_GetStreamCpuLoad(PaStream *stream)
Definition pa_front.c:1621

Other utilities

These functions allow you to determine the size of a sample from its format and sleep for a given amount of time. The sleep function should not be used for precise timing or synchronization because it makes few guarantees about the exact length of time it waits. It is most useful for testing.

void Pa_Sleep (long msec)
void Pa_Sleep(long msec)
Definition pa_unix_util.c:112
unsigned long PaSampleFormat
Definition portaudio.h:489
PaError Pa_GetSampleSize(PaSampleFormat format)
Definition pa_front.c:1788

Previous: Closing a Stream and Terminating PortAudio | Next: Enumerating and Querying PortAudio Devices