\section{Rt\-Audio  Class Reference}
\label{classRtAudio}\index{RtAudio@{Rt\-Audio}}
{\tt \#include $<$Rt\-Audio.h$>$}

\subsection*{Public Types}
\begin{CompactItemize}
\item 
typedef unsigned long {\bf RTAUDIO\_\-FORMAT}
\item 
typedef int ($\ast$ {\bf RTAUDIO\_\-CALLBACK} )(char $\ast$buffer, int buffer\-Size, void $\ast$user\-Data)
\item 
enum \{ {\bf MAX\_\-SAMPLE\_\-RATES} =  14 
 \}
\end{CompactItemize}
\subsection*{Public Methods}
\begin{CompactItemize}
\item 
{\bf Rt\-Audio} ()
\begin{CompactList}\small\item\em The default constructor.\item\end{CompactList}\item 
{\bf Rt\-Audio} (int $\ast$stream\-Id, int output\-Device, int output\-Channels, int input\-Device, int input\-Channels, {\bf RTAUDIO\_\-FORMAT} format, int sample\-Rate, int $\ast$buffer\-Size, int number\-Of\-Buffers)
\begin{CompactList}\small\item\em A constructor which can be used to open a stream during instantiation.\item\end{CompactList}\item 
{\bf $\sim$Rt\-Audio} ()
\begin{CompactList}\small\item\em The destructor.\item\end{CompactList}\item 
int {\bf open\-Stream} (int output\-Device, int output\-Channels, int input\-Device, int input\-Channels, {\bf RTAUDIO\_\-FORMAT} format, int sample\-Rate, int $\ast$buffer\-Size, int number\-Of\-Buffers)
\begin{CompactList}\small\item\em A public method for opening a stream with the specified parameters.\item\end{CompactList}\item 
void {\bf set\-Stream\-Callback} (int stream\-Id, {\bf RTAUDIO\_\-CALLBACK} callback, void $\ast$user\-Data)
\begin{CompactList}\small\item\em A public method which sets a user-defined callback function for a given stream.\item\end{CompactList}\item 
void {\bf cancel\-Stream\-Callback} (int stream\-Id)
\begin{CompactList}\small\item\em A public method which cancels a callback process and function for a given stream.\item\end{CompactList}\item 
int {\bf get\-Device\-Count} (void)
\begin{CompactList}\small\item\em A public method which returns the number of audio devices found.\item\end{CompactList}\item 
void {\bf get\-Device\-Info} (int device, {\bf RTAUDIO\_\-DEVICE} $\ast$info)
\begin{CompactList}\small\item\em Fill a user-supplied {\bf RTAUDIO\_\-DEVICE} {\rm (p.\,\pageref{structRtAudio_1_1RTAUDIO__DEVICE})} structure for a specified device.\item\end{CompactList}\item 
char$\ast$ const {\bf get\-Stream\-Buffer} (int stream\-Id)
\begin{CompactList}\small\item\em A public method which returns a pointer to the buffer for an open stream.\item\end{CompactList}\item 
void {\bf tick\-Stream} (int stream\-Id)
\begin{CompactList}\small\item\em Public method used to trigger processing of input/output data for a stream.\item\end{CompactList}\item 
void {\bf close\-Stream} (int stream\-Id)
\begin{CompactList}\small\item\em Public method which closes a stream and frees any associated buffers.\item\end{CompactList}\item 
void {\bf start\-Stream} (int stream\-Id)
\begin{CompactList}\small\item\em Public method which starts a stream.\item\end{CompactList}\item 
void {\bf stop\-Stream} (int stream\-Id)
\begin{CompactList}\small\item\em Stop a stream, allowing any samples remaining in the queue to be played out and/or read in.\item\end{CompactList}\item 
void {\bf abort\-Stream} (int stream\-Id)
\begin{CompactList}\small\item\em Stop a stream, discarding any samples remaining in the input/output queue.\item\end{CompactList}\item 
int {\bf stream\-Will\-Block} (int stream\-Id)
\begin{CompactList}\small\item\em Queries a stream to determine whether a call to the {\bf tick\-Stream}() {\rm (p.\,\pageref{classRtAudio_a9})} method will block.\item\end{CompactList}\end{CompactItemize}
\subsection*{Static Public Attributes}
\begin{CompactItemize}
\item 
const {\bf RTAUDIO\_\-FORMAT} {\bf RTAUDIO\_\-SINT8}
\item 
const {\bf RTAUDIO\_\-FORMAT} {\bf RTAUDIO\_\-SINT16}
\item 
const {\bf RTAUDIO\_\-FORMAT} {\bf RTAUDIO\_\-SINT24}
\item 
const {\bf RTAUDIO\_\-FORMAT} {\bf RTAUDIO\_\-SINT32}
\item 
const {\bf RTAUDIO\_\-FORMAT} {\bf RTAUDIO\_\-FLOAT32}
\item 
const {\bf RTAUDIO\_\-FORMAT} {\bf RTAUDIO\_\-FLOAT64}
\end{CompactItemize}


\subsection{Member Typedef Documentation}
\index{RtAudio@{Rt\-Audio}!RTAUDIO_FORMAT@{RTAUDIO\_\-FORMAT}}
\index{RTAUDIO_FORMAT@{RTAUDIO\_\-FORMAT}!RtAudio@{Rt\-Audio}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}typedef unsigned long Rt\-Audio::RTAUDIO\_\-FORMAT}\label{classRtAudio_s0}


\index{RtAudio@{Rt\-Audio}!RTAUDIO_CALLBACK@{RTAUDIO\_\-CALLBACK}}
\index{RTAUDIO_CALLBACK@{RTAUDIO\_\-CALLBACK}!RtAudio@{Rt\-Audio}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}typedef int($\ast$ Rt\-Audio::RTAUDIO\_\-CALLBACK)(char $\ast$buffer, int buffer\-Size, void $\ast$user\-Data)}\label{classRtAudio_s1}




\subsection{Member Enumeration Documentation}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}anonymous enum}\label{classRtAudio_s3}


\begin{Desc}
\item[{\bf Enumeration values:}]\par
\begin{description}
\index{MAX_SAMPLE_RATES@{MAX\_\-SAMPLE\_\-RATES}!RtAudio@{Rt\-Audio}}\index{RtAudio@{RtAudio}!MAX_SAMPLE_RATES@{MAX\_\-SAMPLE\_\-RATES}}\item[
{\em MAX\_\-SAMPLE\_\-RATES}\label{classRtAudio_s3s2}
]\end{description}
\end{Desc}



\subsection{Constructor \& Destructor Documentation}
\index{RtAudio@{Rt\-Audio}!RtAudio@{RtAudio}}
\index{RtAudio@{RtAudio}!RtAudio@{Rt\-Audio}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}Rt\-Audio::Rt\-Audio ()}\label{classRtAudio_a0}


The default constructor.

Probes the system to make sure at least one audio input/output device is available and determines the api-specific identifier for each device found. An {\bf Rt\-Error} {\rm (p.\,\pageref{classRtError})} error can be thrown if no devices are found or if a memory allocation error occurs. \index{RtAudio@{Rt\-Audio}!RtAudio@{RtAudio}}
\index{RtAudio@{RtAudio}!RtAudio@{Rt\-Audio}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}Rt\-Audio::Rt\-Audio (int $\ast$ {\em stream\-Id}, int {\em output\-Device}, int {\em output\-Channels}, int {\em input\-Device}, int {\em input\-Channels}, {\bf RTAUDIO\_\-FORMAT} {\em format}, int {\em sample\-Rate}, int $\ast$ {\em buffer\-Size}, int {\em number\-Of\-Buffers})}\label{classRtAudio_a1}


A constructor which can be used to open a stream during instantiation.

The specified output and/or input device identifiers correspond to those enumerated via the {\bf get\-Device\-Info}() {\rm (p.\,\pageref{classRtAudio_a7})} method. If device = 0, the default or first available devices meeting the given parameters is selected. If an output or input channel value is zero, the corresponding device value is ignored. When a stream is successfully opened, its identifier is returned via the \char`\"{}stream\-Id\char`\"{} pointer. An {\bf Rt\-Error} {\rm (p.\,\pageref{classRtError})} can be thrown if no devices are found for the given parameters, if a memory allocation error occurs, or if a driver error occurs. \begin{Desc}
\item[{\bf See also: }]\par
{\bf open\-Stream}() {\rm (p.\,\pageref{classRtAudio_a3})} \end{Desc}
\index{RtAudio@{Rt\-Audio}!~RtAudio@{$\sim$RtAudio}}
\index{~RtAudio@{$\sim$RtAudio}!RtAudio@{Rt\-Audio}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}Rt\-Audio::$\sim$Rt\-Audio ()}\label{classRtAudio_a2}


The destructor.

Stops and closes any open streams and devices and deallocates buffer and structure memory. 

\subsection{Member Function Documentation}
\index{RtAudio@{Rt\-Audio}!openStream@{openStream}}
\index{openStream@{openStream}!RtAudio@{Rt\-Audio}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}int Rt\-Audio::open\-Stream (int {\em output\-Device}, int {\em output\-Channels}, int {\em input\-Device}, int {\em input\-Channels}, {\bf RTAUDIO\_\-FORMAT} {\em format}, int {\em sample\-Rate}, int $\ast$ {\em buffer\-Size}, int {\em number\-Of\-Buffers})}\label{classRtAudio_a3}


A public method for opening a stream with the specified parameters.

If successful, the opened stream ID is returned. Otherwise, an {\bf Rt\-Error} {\rm (p.\,\pageref{classRtError})} is thrown.\begin{Desc}
\item[{\bf Parameters: }]\par
\begin{description}
\item[
{\em output\-Device:}]If equal to 0, the default or first device found meeting the given parameters is opened. Otherwise, the device number should correspond to one of those enumerated via the {\bf get\-Device\-Info}() {\rm (p.\,\pageref{classRtAudio_a7})} method. \item[
{\em output\-Channels:}]The desired number of output channels. If equal to zero, the output\-Device identifier is ignored. \item[
{\em input\-Device:}]If equal to 0, the default or first device found meeting the given parameters is opened. Otherwise, the device number should correspond to one of those enumerated via the {\bf get\-Device\-Info}() {\rm (p.\,\pageref{classRtAudio_a7})} method. \item[
{\em input\-Channels:}]The desired number of input channels. If equal to zero, the input\-Device identifier is ignored. \item[
{\em format:}]An RTAUDIO\_\-FORMAT specifying the desired sample data format. \item[
{\em sample\-Rate:}]The desired sample rate (sample frames per second). \item[
{\em buffer\-Size:}]A pointer value indicating the desired internal buffer size in sample frames. The actual value used by the device is returned via the same pointer. A value of zero can be specified, in which case the lowest allowable value is determined. \item[
{\em number\-Of\-Buffers:}]A value which can be used to help control device latency. More buffers typically result in more robust performance, though at a cost of greater latency. A value of zero can be specified, in which case the lowest allowable value is used. \end{description}
\end{Desc}
\index{RtAudio@{Rt\-Audio}!setStreamCallback@{setStreamCallback}}
\index{setStreamCallback@{setStreamCallback}!RtAudio@{Rt\-Audio}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void Rt\-Audio::set\-Stream\-Callback (int {\em stream\-Id}, {\bf RTAUDIO\_\-CALLBACK} {\em callback}, void $\ast$ {\em user\-Data})}\label{classRtAudio_a4}


A public method which sets a user-defined callback function for a given stream.

This method assigns a callback function to a specific, previously opened stream for non-blocking stream functionality. A separate process is initiated, though the user function is called only when the stream is \char`\"{}running\char`\"{} (between calls to the {\bf start\-Stream}() {\rm (p.\,\pageref{classRtAudio_a11})} and {\bf stop\-Stream}() {\rm (p.\,\pageref{classRtAudio_a12})} methods, respectively). The callback process remains active for the duration of the stream and is automatically shutdown when the stream is closed (via the {\bf close\-Stream}() {\rm (p.\,\pageref{classRtAudio_a10})} method or by object destruction). The callback process can also be shutdown and the user function de-referenced through an explicit call to the {\bf cancel\-Stream\-Callback}() {\rm (p.\,\pageref{classRtAudio_a5})} method. Note that a single stream can use only blocking or callback functionality at the same time, though it is possible to alternate modes on the same stream through the use of the {\bf set\-Stream\-Callback}() {\rm (p.\,\pageref{classRtAudio_a4})} and {\bf cancel\-Stream\-Callback}() {\rm (p.\,\pageref{classRtAudio_a5})} methods (the blocking {\bf tick\-Stream}() {\rm (p.\,\pageref{classRtAudio_a9})} method can be used before a callback is set and/or after a callback is cancelled). An {\bf Rt\-Error} {\rm (p.\,\pageref{classRtError})} will be thrown for an invalid device argument. \index{RtAudio@{Rt\-Audio}!cancelStreamCallback@{cancelStreamCallback}}
\index{cancelStreamCallback@{cancelStreamCallback}!RtAudio@{Rt\-Audio}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void Rt\-Audio::cancel\-Stream\-Callback (int {\em stream\-Id})}\label{classRtAudio_a5}


A public method which cancels a callback process and function for a given stream.

This method shuts down a callback process and de-references the user function for a specific stream. Callback functionality can subsequently be restarted on the stream via the {\bf set\-Stream\-Callback}() {\rm (p.\,\pageref{classRtAudio_a4})} method. An {\bf Rt\-Error} {\rm (p.\,\pageref{classRtError})} will be thrown for an invalid device argument. \index{RtAudio@{Rt\-Audio}!getDeviceCount@{getDeviceCount}}
\index{getDeviceCount@{getDeviceCount}!RtAudio@{Rt\-Audio}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}int Rt\-Audio::get\-Device\-Count (void)}\label{classRtAudio_a6}


A public method which returns the number of audio devices found.

\index{RtAudio@{Rt\-Audio}!getDeviceInfo@{getDeviceInfo}}
\index{getDeviceInfo@{getDeviceInfo}!RtAudio@{Rt\-Audio}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void Rt\-Audio::get\-Device\-Info (int {\em device}, {\bf RTAUDIO\_\-DEVICE} $\ast$ {\em info})}\label{classRtAudio_a7}


Fill a user-supplied {\bf RTAUDIO\_\-DEVICE} {\rm (p.\,\pageref{structRtAudio_1_1RTAUDIO__DEVICE})} structure for a specified device.

Any device between 0 and {\bf get\-Device\-Count}() {\rm (p.\,\pageref{classRtAudio_a6})}-1 is valid. If a device is busy or otherwise unavailable, the structure member \char`\"{}probed\char`\"{} has a value of \char`\"{}false\char`\"{}. The system default input and output devices are referenced by device identifier = 0. On systems which allow dynamic default device settings, the default devices are not identified by name (specific device enumerations are assigned device identifiers $>$ 0). An {\bf Rt\-Error} {\rm (p.\,\pageref{classRtError})} will be thrown for an invalid device argument. \index{RtAudio@{Rt\-Audio}!getStreamBuffer@{getStreamBuffer}}
\index{getStreamBuffer@{getStreamBuffer}!RtAudio@{Rt\-Audio}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}char $\ast$const Rt\-Audio::get\-Stream\-Buffer (int {\em stream\-Id})}\label{classRtAudio_a8}


A public method which returns a pointer to the buffer for an open stream.

The user should fill and/or read the buffer data in interleaved format and then call the {\bf tick\-Stream}() {\rm (p.\,\pageref{classRtAudio_a9})} method. An {\bf Rt\-Error} {\rm (p.\,\pageref{classRtError})} will be thrown for an invalid stream identifier. \index{RtAudio@{Rt\-Audio}!tickStream@{tickStream}}
\index{tickStream@{tickStream}!RtAudio@{Rt\-Audio}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void Rt\-Audio::tick\-Stream (int {\em stream\-Id})}\label{classRtAudio_a9}


Public method used to trigger processing of input/output data for a stream.

This method blocks until all buffer data is read/written. An {\bf Rt\-Error} {\rm (p.\,\pageref{classRtError})} will be thrown for an invalid stream identifier or if a driver error occurs. \index{RtAudio@{Rt\-Audio}!closeStream@{closeStream}}
\index{closeStream@{closeStream}!RtAudio@{Rt\-Audio}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void Rt\-Audio::close\-Stream (int {\em stream\-Id})}\label{classRtAudio_a10}


Public method which closes a stream and frees any associated buffers.

If an invalid stream identifier is specified, this method issues a warning and returns (an {\bf Rt\-Error} {\rm (p.\,\pageref{classRtError})} is not thrown). \index{RtAudio@{Rt\-Audio}!startStream@{startStream}}
\index{startStream@{startStream}!RtAudio@{Rt\-Audio}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void Rt\-Audio::start\-Stream (int {\em stream\-Id})}\label{classRtAudio_a11}


Public method which starts a stream.

An {\bf Rt\-Error} {\rm (p.\,\pageref{classRtError})} will be thrown for an invalid stream identifier or if a driver error occurs. \index{RtAudio@{Rt\-Audio}!stopStream@{stopStream}}
\index{stopStream@{stopStream}!RtAudio@{Rt\-Audio}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void Rt\-Audio::stop\-Stream (int {\em stream\-Id})}\label{classRtAudio_a12}


Stop a stream, allowing any samples remaining in the queue to be played out and/or read in.

An {\bf Rt\-Error} {\rm (p.\,\pageref{classRtError})} will be thrown for an invalid stream identifier or if a driver error occurs. \index{RtAudio@{Rt\-Audio}!abortStream@{abortStream}}
\index{abortStream@{abortStream}!RtAudio@{Rt\-Audio}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void Rt\-Audio::abort\-Stream (int {\em stream\-Id})}\label{classRtAudio_a13}


Stop a stream, discarding any samples remaining in the input/output queue.

An {\bf Rt\-Error} {\rm (p.\,\pageref{classRtError})} will be thrown for an invalid stream identifier or if a driver error occurs. \index{RtAudio@{Rt\-Audio}!streamWillBlock@{streamWillBlock}}
\index{streamWillBlock@{streamWillBlock}!RtAudio@{Rt\-Audio}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}int Rt\-Audio::stream\-Will\-Block (int {\em stream\-Id})}\label{classRtAudio_a14}


Queries a stream to determine whether a call to the {\bf tick\-Stream}() {\rm (p.\,\pageref{classRtAudio_a9})} method will block.

A return value of 0 indicates that the stream will NOT block. A positive return value indicates the number of sample frames that cannot yet be processed without blocking. 

\subsection{Member Data Documentation}
\index{RtAudio@{Rt\-Audio}!RTAUDIO_SINT8@{RTAUDIO\_\-SINT8}}
\index{RTAUDIO_SINT8@{RTAUDIO\_\-SINT8}!RtAudio@{Rt\-Audio}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}const {\bf RTAUDIO\_\-FORMAT} Rt\-Audio::RTAUDIO\_\-SINT8\hspace{0.3cm}{\tt  [static]}}\label{classRtAudio_p0}


\index{RtAudio@{Rt\-Audio}!RTAUDIO_SINT16@{RTAUDIO\_\-SINT16}}
\index{RTAUDIO_SINT16@{RTAUDIO\_\-SINT16}!RtAudio@{Rt\-Audio}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}const {\bf RTAUDIO\_\-FORMAT} Rt\-Audio::RTAUDIO\_\-SINT16\hspace{0.3cm}{\tt  [static]}}\label{classRtAudio_p1}


\index{RtAudio@{Rt\-Audio}!RTAUDIO_SINT24@{RTAUDIO\_\-SINT24}}
\index{RTAUDIO_SINT24@{RTAUDIO\_\-SINT24}!RtAudio@{Rt\-Audio}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}const {\bf RTAUDIO\_\-FORMAT} Rt\-Audio::RTAUDIO\_\-SINT24\hspace{0.3cm}{\tt  [static]}}\label{classRtAudio_p2}


Upper 3 bytes of 32-bit integer. \index{RtAudio@{Rt\-Audio}!RTAUDIO_SINT32@{RTAUDIO\_\-SINT32}}
\index{RTAUDIO_SINT32@{RTAUDIO\_\-SINT32}!RtAudio@{Rt\-Audio}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}const {\bf RTAUDIO\_\-FORMAT} Rt\-Audio::RTAUDIO\_\-SINT32\hspace{0.3cm}{\tt  [static]}}\label{classRtAudio_p3}


\index{RtAudio@{Rt\-Audio}!RTAUDIO_FLOAT32@{RTAUDIO\_\-FLOAT32}}
\index{RTAUDIO_FLOAT32@{RTAUDIO\_\-FLOAT32}!RtAudio@{Rt\-Audio}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}const {\bf RTAUDIO\_\-FORMAT} Rt\-Audio::RTAUDIO\_\-FLOAT32\hspace{0.3cm}{\tt  [static]}}\label{classRtAudio_p4}


Normalized between plus/minus 1.0. \index{RtAudio@{Rt\-Audio}!RTAUDIO_FLOAT64@{RTAUDIO\_\-FLOAT64}}
\index{RTAUDIO_FLOAT64@{RTAUDIO\_\-FLOAT64}!RtAudio@{Rt\-Audio}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}const {\bf RTAUDIO\_\-FORMAT} Rt\-Audio::RTAUDIO\_\-FLOAT64\hspace{0.3cm}{\tt  [static]}}\label{classRtAudio_p5}


Normalized between plus/minus 1.0. 

The documentation for this class was generated from the following file:\begin{CompactItemize}
\item 
{\bf Rt\-Audio.h}\end{CompactItemize}
