Files
stk/doc/html/classStk.html
2013-09-29 23:41:50 +02:00

353 lines
21 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"> &nbsp; <img src="mcgill.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="links.html">Links</a> &nbsp; <a class="qindex" href="faq.html">FAQ</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
<HR>
<!-- Generated by Doxygen 1.4.4 -->
<h1>Stk Class Reference</h1><!-- doxytag: class="Stk" --><code>#include &lt;<a class="el" href="Stk_8h-source.html">Stk.h</a>&gt;</code>
<p>
<p>Inheritance diagram for Stk:
<p><center><img src="classStk.png" usemap="#Stk_map" border="0" alt=""></center>
<map name="Stk_map">
<area href="classEffect.html" alt="Effect" shape="rect" coords="80,56,150,80">
<area href="classFileRead.html" alt="FileRead" shape="rect" coords="80,112,150,136">
<area href="classFileWrite.html" alt="FileWrite" shape="rect" coords="80,168,150,192">
<area href="classFilter.html" alt="Filter" shape="rect" coords="80,224,150,248">
<area href="classFunction.html" alt="Function" shape="rect" coords="80,280,150,304">
<area href="classGenerator.html" alt="Generator" shape="rect" coords="80,336,150,360">
<area href="classInstrmnt.html" alt="Instrmnt" shape="rect" coords="80,392,150,416">
<area href="classMessager.html" alt="Messager" shape="rect" coords="80,448,150,472">
<area href="classMidiFileIn.html" alt="MidiFileIn" shape="rect" coords="80,504,150,528">
<area href="classMutex.html" alt="Mutex" shape="rect" coords="80,560,150,584">
<area href="classPhonemes.html" alt="Phonemes" shape="rect" coords="80,616,150,640">
<area href="classSkini.html" alt="Skini" shape="rect" coords="80,672,150,696">
<area href="classSocket.html" alt="Socket" shape="rect" coords="80,728,150,752">
<area href="classSphere.html" alt="Sphere" shape="rect" coords="80,784,150,808">
<area href="classThread.html" alt="Thread" shape="rect" coords="80,840,150,864">
<area href="classVector3D.html" alt="Vector3D" shape="rect" coords="80,896,150,920">
<area href="classVoicer.html" alt="Voicer" shape="rect" coords="80,952,150,976">
<area href="classWvIn.html" alt="WvIn" shape="rect" coords="80,1008,150,1032">
<area href="classWvOut.html" alt="WvOut" shape="rect" coords="80,1064,150,1088">
</map>
<a href="classStk-members.html">List of all members.</a><hr><a name="_details"></a><h2>Detailed Description</h2>
STK base class.
<p>
Nearly all STK classes inherit from this class. The global sample rate and rawwave path variables can be queried and modified via Stk. In addition, this class provides error handling and byte-swapping functions.<p>
by Perry R. Cook and Gary P. Scavone, 1995 - 2007.<p>
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:<p>
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.<p>
Any person wishing to distribute modifications to the Software is asked to send the modifications to the original developer so that they can be incorporated into the canonical version. This is, however, not a binding provision of this license.<p>
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.
<p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classStk.html#a0">ignoreSampleRateChange</a> (bool ignore=true)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A function to enable/disable the automatic updating of class data when the STK sample rate changes. <a href="#a0"></a><br></td></tr>
<tr><td colspan="2"><br><h2>Static Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e0"></a><!-- doxytag: member="Stk::sampleRate" ref="e0" args="(void)" -->
static StkFloat&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classStk.html#e0">sampleRate</a> (void)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Static method which returns the current STK sample rate. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classStk.html#e1">setSampleRate</a> (StkFloat rate)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Static method that sets the STK sample rate. <a href="#e1"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e2"></a><!-- doxytag: member="Stk::rawwavePath" ref="e2" args="(void)" -->
static std::string&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classStk.html#e2">rawwavePath</a> (void)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Static method which returns the current rawwave path. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e3"></a><!-- doxytag: member="Stk::setRawwavePath" ref="e3" args="(std::string path)" -->
static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classStk.html#e3">setRawwavePath</a> (std::string path)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Static method which sets the STK rawwave path. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e4"></a><!-- doxytag: member="Stk::swap16" ref="e4" args="(unsigned char *ptr)" -->
static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classStk.html#e4">swap16</a> (unsigned char *ptr)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Static method which byte-swaps a 16-bit data type. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e5"></a><!-- doxytag: member="Stk::swap32" ref="e5" args="(unsigned char *ptr)" -->
static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classStk.html#e5">swap32</a> (unsigned char *ptr)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Static method which byte-swaps a 32-bit data type. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e6"></a><!-- doxytag: member="Stk::swap64" ref="e6" args="(unsigned char *ptr)" -->
static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classStk.html#e6">swap64</a> (unsigned char *ptr)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Static method which byte-swaps a 64-bit data type. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e7"></a><!-- doxytag: member="Stk::sleep" ref="e7" args="(unsigned long milliseconds)" -->
static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classStk.html#e7">sleep</a> (unsigned long milliseconds)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Static cross-platform method to sleep for a number of milliseconds. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e8"></a><!-- doxytag: member="Stk::handleError" ref="e8" args="(const char *message, StkError::Type type)" -->
static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classStk.html#e8">handleError</a> (const char *message, StkError::Type type)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Static function for error reporting and handling using c-strings. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e9"></a><!-- doxytag: member="Stk::handleError" ref="e9" args="(std::string message, StkError::Type type)" -->
static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classStk.html#e9">handleError</a> (std::string message, StkError::Type type)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Static function for error reporting and handling using c++ strings. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e10"></a><!-- doxytag: member="Stk::showWarnings" ref="e10" args="(bool status)" -->
static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classStk.html#e10">showWarnings</a> (bool status)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Toggle display of WARNING and STATUS messages. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e11"></a><!-- doxytag: member="Stk::printErrors" ref="e11" args="(bool status)" -->
static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classStk.html#e11">printErrors</a> (bool status)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Toggle display of error messages before throwing exceptions. <br></td></tr>
<tr><td colspan="2"><br><h2>Static Public Attributes</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">static const StkFormat&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classStk.html#s0">STK_SINT8</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">static const StkFormat&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classStk.html#s1">STK_SINT16</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">static const StkFormat&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classStk.html#s2">STK_SINT24</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">static const StkFormat&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classStk.html#s3">STK_SINT32</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">static const StkFormat&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classStk.html#s4">STK_FLOAT32</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">static const StkFormat&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classStk.html#s5">STK_FLOAT64</a></td></tr>
<tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b0"></a><!-- doxytag: member="Stk::Stk" ref="b0" args="(void)" -->
&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classStk.html#b0">Stk</a> (void)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Default constructor. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b1"></a><!-- doxytag: member="Stk::~Stk" ref="b1" args="(void)" -->
virtual&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classStk.html#b1">~Stk</a> (void)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Class destructor. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b2"></a><!-- doxytag: member="Stk::sampleRateChanged" ref="b2" args="(StkFloat newRate, StkFloat oldRate)" -->
virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classStk.html#b2">sampleRateChanged</a> (StkFloat newRate, StkFloat oldRate)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This function should be implemented in subclasses that depend on the sample rate. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b3"></a><!-- doxytag: member="Stk::addSampleRateAlert" ref="b3" args="(Stk *ptr)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classStk.html#b3">addSampleRateAlert</a> (<a class="el" href="classStk.html">Stk</a> *ptr)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add class pointer to list for sample rate change notification. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b4"></a><!-- doxytag: member="Stk::removeSampleRateAlert" ref="b4" args="(Stk *ptr)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classStk.html#b4">removeSampleRateAlert</a> (<a class="el" href="classStk.html">Stk</a> *ptr)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Remove class pointer from list for sample rate change notification. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b5"></a><!-- doxytag: member="Stk::handleError" ref="b5" args="(StkError::Type type)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classStk.html#b5">handleError</a> (StkError::Type type)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Internal function for error reporting which assumes message in <code>errorString_</code> variable. <br></td></tr>
</table>
<hr><h2>Member Function Documentation</h2>
<a class="anchor" name="e1"></a><!-- doxytag: member="Stk::setSampleRate" ref="e1" args="(StkFloat rate)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">static void Stk::setSampleRate </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">StkFloat&nbsp;</td>
<td class="mdname1" valign="top" nowrap> <em>rate</em> </td>
<td class="md" valign="top">&nbsp;)&nbsp;</td>
<td class="md" nowrap><code> [static]</code></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Static method that sets the STK sample rate.
<p>
The sample rate set using this method is queried by all STK classes which depend on its value. It is initialized to the default SRATE set in <a class="el" href="Stk_8h-source.html">Stk.h</a>. Many STK classes use the sample rate during instantiation. Therefore, if you wish to use a rate which is different from the default rate, it is imperative that it be set <em>BEFORE</em> STK objects are instantiated. A few classes that make use of the global STK sample rate are automatically notified when the rate changes so that internal class data can be appropriately updated. However, this has not been fully implemented. Specifically, classes that appropriately update their own data when either a setFrequency() or noteOn() function is called do not currently receive the automatic notification of rate change. If the user wants a specific class instance to ignore such notifications, perhaps in a multi-rate context, the function <a class="el" href="classStk.html#a0">Stk::ignoreSampleRateChange()</a> should be called. </td>
</tr>
</table>
<a class="anchor" name="a0"></a><!-- doxytag: member="Stk::ignoreSampleRateChange" ref="a0" args="(bool ignore=true)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">void Stk::ignoreSampleRateChange </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">bool&nbsp;</td>
<td class="mdname1" valign="top" nowrap> <em>ignore</em> = <code>true</code> </td>
<td class="md" valign="top">&nbsp;)&nbsp;</td>
<td class="md" nowrap><code> [inline]</code></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
A function to enable/disable the automatic updating of class data when the STK sample rate changes.
<p>
This function allows the user to enable or disable class data updates in response to global sample rate changes on a class by class basis.
<p>
Reimplemented in <a class="el" href="classBiQuad.html#a2">BiQuad</a>, <a class="el" href="classTwoPole.html#a2">TwoPole</a>, and <a class="el" href="classTwoZero.html#a2">TwoZero</a>. </td>
</tr>
</table>
<hr><h2>Member Data Documentation</h2>
<a class="anchor" name="s0"></a><!-- doxytag: member="Stk::STK_SINT8" ref="s0" args="" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">const StkFormat <a class="el" href="classStk.html#s0">Stk::STK_SINT8</a><code> [static]</code> </td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
-128 to +127 </td>
</tr>
</table>
<a class="anchor" name="s1"></a><!-- doxytag: member="Stk::STK_SINT16" ref="s1" args="" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">const StkFormat <a class="el" href="classStk.html#s1">Stk::STK_SINT16</a><code> [static]</code> </td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
-32768 to +32767 </td>
</tr>
</table>
<a class="anchor" name="s2"></a><!-- doxytag: member="Stk::STK_SINT24" ref="s2" args="" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">const StkFormat <a class="el" href="classStk.html#s2">Stk::STK_SINT24</a><code> [static]</code> </td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Upper 3 bytes of 32-bit signed integer. </td>
</tr>
</table>
<a class="anchor" name="s3"></a><!-- doxytag: member="Stk::STK_SINT32" ref="s3" args="" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">const StkFormat <a class="el" href="classStk.html#s3">Stk::STK_SINT32</a><code> [static]</code> </td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
-2147483648 to +2147483647. </td>
</tr>
</table>
<a class="anchor" name="s4"></a><!-- doxytag: member="Stk::STK_FLOAT32" ref="s4" args="" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">const StkFormat <a class="el" href="classStk.html#s4">Stk::STK_FLOAT32</a><code> [static]</code> </td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Normalized between plus/minus 1.0. </td>
</tr>
</table>
<a class="anchor" name="s5"></a><!-- doxytag: member="Stk::STK_FLOAT64" ref="s5" args="" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">const StkFormat <a class="el" href="classStk.html#s5">Stk::STK_FLOAT64</a><code> [static]</code> </td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Normalized between plus/minus 1.0. </td>
</tr>
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="Stk_8h-source.html">Stk.h</a></ul>
<HR>
<table>
<tr><td><A HREF="http://ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr>
<tr><td>&copy;1995-2007 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
</table>
</BODY>
</HTML>