Files
stk/doc/html/classRtDuplex.html
2013-09-29 23:33:56 +02:00

290 lines
11 KiB
HTML

<HTML>
<HEAD>
<TITLE>The Synthesis ToolKit in C++ (STK)</TITLE>
<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
</HEAD>
<BODY BGCOLOR="#FFFFFF">
<CENTER>
<img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P>
<a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
<HR>
<!-- Generated by Doxygen 1.2.8.1 -->
<h1>RtDuplex Class Reference</h1>STK realtime audio input/output class.
<a href="#_details">More...</a>
<p>
<code>#include &lt;<a class="el" href="RtDuplex_8h-source.html">RtDuplex.h</a>&gt;</code>
<p>
<p>Inheritance diagram for RtDuplex::
<p><center><img src="classRtDuplex.gif" usemap="#RtDuplex_map" border="0"></center>
<map name="RtDuplex_map">
<area href="classStk.html" alt="Stk" shape="rect" coords="0,0,62,24">
</map>
<a href="classRtDuplex-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
<tr><td colspan=2><br><h2>Public Methods</h2></td></tr>
<tr><td nowrap align=right valign=top>&nbsp;</td><td valign=bottom><a class="el" href="classRtDuplex.html#a0">RtDuplex</a> (int nChannels=1, MY_FLOAT sampleRate=Stk::sampleRate(), int device=0, int bufferFrames=RT_BUFFER_SIZE, int nBuffers=2)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Default constructor.</em> <a href="#a0">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="a1" doxytag="RtDuplex::~RtDuplex"></a>
&nbsp;</td><td valign=bottom><a class="el" href="classRtDuplex.html#a1">~RtDuplex</a> ()</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Class destructor.</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>void&nbsp;</td><td valign=bottom><a class="el" href="classRtDuplex.html#a2">start</a> (void)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Start the audio input/output stream.</em> <a href="#a2">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>void&nbsp;</td><td valign=bottom><a class="el" href="classRtDuplex.html#a3">stop</a> (void)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Stop the audio input/output stream.</em> <a href="#a3">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="a4" doxytag="RtDuplex::lastOut"></a>
MY_FLOAT&nbsp;</td><td valign=bottom><a class="el" href="classRtDuplex.html#a4">lastOut</a> (void) const</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Return the average across the last output sample frame.</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>MY_FLOAT&nbsp;</td><td valign=bottom><a class="el" href="classRtDuplex.html#a5">tick</a> (const MY_FLOAT sample)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Output a single sample to all channels in a sample frame and return the average across one new input sample frame of data.</em> <a href="#a5">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>MY_FLOAT*&nbsp;</td><td valign=bottom><a class="el" href="classRtDuplex.html#a6">tick</a> (MY_FLOAT *vector, unsigned int vectorSize)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Output each sample in \vector to all channels per frame and return averaged input sample frames of new data in <em>vector</em>.</em> <a href="#a6">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="a7" doxytag="RtDuplex::lastFrame"></a>
const MY_FLOAT*&nbsp;</td><td valign=bottom><a class="el" href="classRtDuplex.html#a7">lastFrame</a> (void) const</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Return a pointer to the last output sample frame.</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>MY_FLOAT*&nbsp;</td><td valign=bottom><a class="el" href="classRtDuplex.html#a8">tickFrame</a> (MY_FLOAT *frameVector, unsigned int frames=1)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Output sample <em>frames</em> from <em>frameVector</em> and return new input frames in <em>frameVector</em>.</em> <a href="#a8">More...</a><em></em></font><br><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
STK realtime audio input/output class.
<p>
This class provides a simplified interface to RtAudio for realtime audio input/output. It is also possible to achieve duplex operation using separate <a class="el" href="classRtWvIn.html">RtWvIn</a> and <a class="el" href="classRtWvOut.html">RtWvOut</a> classes, but this class ensures better input/output syncronization.
<p>
RtDuplex supports multi-channel data in interleaved format. It is important to distinguish the <a class="el" href="classRtDuplex.html#a5">tick</a>() methods, which output single samples to all channels in a sample frame and return samples produced by averaging across sample frames, from the <a class="el" href="classRtDuplex.html#a8">tickFrame</a>() methods, which take/return pointers to multi-channel sample frames.
<p>
by Perry R. Cook and Gary P. Scavone, 1995 - 2002.
<p>
<hr><h2>Constructor &amp; Destructor Documentation</h2>
<a name="a0" doxytag="RtDuplex::RtDuplex"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td nowrap valign="top"><b>
RtDuplex::RtDuplex (
</b></td>
<td valign="bottom"><b>
int <em>nChannels</em> = 1,
</b></td>
</tr>
<tr>
<td></td>
<td><b>
MY_FLOAT <em>sampleRate</em> = Stk::sampleRate(),
</b></td>
</tr>
<tr>
<td></td>
<td><b>
int <em>device</em> = 0,
</b></td>
</tr>
<tr>
<td></td>
<td><b>
int <em>bufferFrames</em> = RT_BUFFER_SIZE,
</b></td>
</tr>
<tr>
<td></td>
<td><b>
int <em>nBuffers</em> = 2&nbsp;)
</b></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Default constructor.
<p>
The <em>device</em> argument is passed to RtAudio during instantiation. The default value (zero) will select the default device on your system or the first device found meeting the specified parameters. On systems with multiple soundcards/devices, values greater than zero can be specified in accordance with the order that the devices are enumerated by the underlying audio API. The default buffer size of RT_BUFFER_SIZE is defined in Stk.h. An <a class="el" href="classStkError.html">StkError</a> will be thrown if an error occurs duing instantiation. </td>
</tr>
</table>
<hr><h2>Member Function Documentation</h2>
<a name="a2" doxytag="RtDuplex::start"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td nowrap valign="top"><b>
void RtDuplex::start (
</b></td>
<td valign="bottom"><b>
void&nbsp;)
</b></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Start the audio input/output stream.
<p>
The stream is started automatically, if necessary, when a <a class="el" href="classRtDuplex.html#a5">tick</a>() or tickFrame method is called. </td>
</tr>
</table>
<a name="a3" doxytag="RtDuplex::stop"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td nowrap valign="top"><b>
void RtDuplex::stop (
</b></td>
<td valign="bottom"><b>
void&nbsp;)
</b></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Stop the audio input/output stream.
<p>
It may be necessary to use this method to avoid audio overflow/underflow problems if you wish to temporarily stop the audio stream. </td>
</tr>
</table>
<a name="a5" doxytag="RtDuplex::tick"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td nowrap valign="top"><b>
MY_FLOAT RtDuplex::tick (
</b></td>
<td valign="bottom"><b>
const MY_FLOAT <em>sample</em>&nbsp;)
</b></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Output a single sample to all channels in a sample frame and return the average across one new input sample frame of data.
<p>
An <a class="el" href="classStkError.html">StkError</a> will be thrown if an error occurs during input/output. </td>
</tr>
</table>
<a name="a6" doxytag="RtDuplex::tick"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td nowrap valign="top"><b>
MY_FLOAT * RtDuplex::tick (
</b></td>
<td valign="bottom"><b>
MY_FLOAT * <em>vector</em>,
</b></td>
</tr>
<tr>
<td></td>
<td><b>
unsigned int <em>vectorSize</em>&nbsp;)
</b></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Output each sample in \vector to all channels per frame and return averaged input sample frames of new data in <em>vector</em>.
<p>
An <a class="el" href="classStkError.html">StkError</a> will be thrown if an error occurs during input/output. </td>
</tr>
</table>
<a name="a8" doxytag="RtDuplex::tickFrame"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td nowrap valign="top"><b>
MY_FLOAT * RtDuplex::tickFrame (
</b></td>
<td valign="bottom"><b>
MY_FLOAT * <em>frameVector</em>,
</b></td>
</tr>
<tr>
<td></td>
<td><b>
unsigned int <em>frames</em> = 1&nbsp;)
</b></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Output sample <em>frames</em> from <em>frameVector</em> and return new input frames in <em>frameVector</em>.
<p>
An <a class="el" href="classStkError.html">StkError</a> will be thrown if an error occurs during input/output. </td>
</tr>
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="RtDuplex_8h-source.html">RtDuplex.h</a></ul>
<HR>
<table>
<tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr>
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
</table>
</BODY>
</HTML>