Release 4.4.0 tarball

This commit is contained in:
Gary Scavone
2013-09-29 23:44:33 +02:00
committed by Stephen Sinclair
parent 3706458166
commit d2ed001eb5
1427 changed files with 44061 additions and 39976 deletions

View File

@@ -8,13 +8,15 @@
<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><a class="anchor" name="faq">Frequently Asked Questions</a></h1><ul>
<li><a class="el" href="faq.html#license">Does STK have a license?</a></li><li><a class="el" href="faq.html#filerate">Why is my file sample rate wrong?</a></li><li><a class="el" href="faq.html#computesample">Hey, why was the tick() function replaced by computeSample() in various STK classes?</a></li><li><a class="el" href="faq.html#tickframe">What is the difference between the tick() and tickFrame() functions?</a></li><li><a class="el" href="faq.html#endianness">Why does the sound I generated with STK sound like *&amp;#@!?</a></li><li><a class="el" href="faq.html#xwindows">Why do I get a Tk display error message?</a></li></ul>
<!-- Generated by Doxygen 1.5.8 -->
<div class="contents">
<h1><a class="anchor" name="faq">Frequently Asked Questions </a></h1><ul>
<li><a class="el" href="faq.html#license">Does STK have a license?</a></li><li><a class="el" href="faq.html#filerate">Why is my file sample rate wrong?</a></li><li><a class="el" href="faq.html#endianness">Why does the sound I generated with STK sound like *&amp;#@!?</a></li><li><a class="el" href="faq.html#xwindows">Why do I get a Tk display error message?</a></li></ul>
<h2><a class="anchor" name="license">
Does STK have a license?</a></h2>
Yes, we finally made something official for release 4.3.0. It is listed in the <a class="el" href="classStk.html">Stk</a> class and a few other places in the distribution, but I'll repeat it here for clarity:<p>
<div class="fragment"><pre class="fragment">The Synthesis ToolKit in C++ (STK) is a set of open source audio
Yes, we finally made something official for release 4.3.0. It is listed in the Stk class and a few other places in the distribution, but I'll repeat it here for clarity:<p>
<div class="fragment"><pre class="fragment">
The Synthesis ToolKit in C++ (STK) is a set of open source audio
signal processing and algorithmic synthesis classes written in the
C++ programming language. STK was designed to facilitate rapid
development of music synthesis and audio processing software, with
@@ -28,7 +30,7 @@ work with any standard C++ compiler.
STK WWW site: http://ccrma.stanford.edu/software/stk/
The Synthesis ToolKit in C++ (STK)
Copyright (c) 1995-2007 Perry R. Cook and Gary P. Scavone
Copyright (c) 1995-2009 Perry R. Cook and Gary P. Scavone
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -55,27 +57,24 @@ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
</pre></div><h2><a class="anchor" name="filerate">
Why is my file sample rate wrong?</a></h2>
When the <a class="el" href="classFileWvIn.html">FileWvIn</a> class loads a soundfile, it automatically sets its internal read increment based on the soundfile rate and the current STK sample rate. For example, if the current STK sample rate is 44100 Hz and the soundfile rate is 22050 Hz, the read increment, or rate, will be set to 0.5 and the file will be interpolated so that is sounds correct at 44100 Hz. For most cases, this works fine. However, consider the following example:<p>
<div class="fragment"><pre class="fragment"><a class="code" href="classFileWvIn.html">FileWvIn</a> input( <span class="stringliteral">"infile"</span> ); <span class="comment">// read an input soundfile</span>
When the FileWvIn class loads a soundfile, it automatically sets its internal read increment based on the soundfile rate and the current STK sample rate. For example, if the current STK sample rate is 44100 Hz and the soundfile rate is 22050 Hz, the read increment, or rate, will be set to 0.5 and the file will be interpolated so that is sounds correct at 44100 Hz. For most cases, this works fine. However, consider the following example:<p>
<div class="fragment"><pre class="fragment">FileWvIn input( <span class="stringliteral">"infile"</span> ); <span class="comment">// read an input soundfile</span>
StkFloat sampleRate = input.getFileRate();
<a class="code" href="classStk.html#e1">Stk::setSampleRate</a>( sampleRate ); <span class="comment">// set a new STK sample rate based on the file rate</span>
Stk::setSampleRate( sampleRate ); <span class="comment">// set a new STK sample rate based on the file rate</span>
</pre></div><p>
With version 4.3 and higher of STK, the <a class="el" href="classFileWvIn.html">FileWvIn</a> class will be notified of a sample rate change and it will automatically adjust its read rate accordingly. Previous versions of STK did not perform this change and thus, the read rate could end up being incorrect. If you do not want <a class="el" href="classFileWvIn.html">FileWvIn</a> to perform this automatic adjustment, you can call the <code>ignoreSampleRateChange()</code> function for a given class instance.<h2><a class="anchor" name="tickframe">
What is the difference between the tick() and tickFrame() functions?</a></h2>
<em>tickFrame()</em> functions are provided in classes that can handle multi-channel data. A <em>sample frame</em> of audio data represents a single "slice" in time across many audio channels. The <a class="el" href="classWvIn.html">WvIn</a> and <a class="el" href="classWvOut.html">WvOut</a> subclasses are the primary classes in STK that currently implement the <em>tickFrame()</em> functions. <em>tick()</em> functions are used for monophonic classes. Note, however, that the <a class="el" href="classWvIn.html">WvIn</a> and <a class="el" href="classWvOut.html">WvOut</a> classes also implement <em>tick()</em> functions though their behavior is dependent on the number of channels you are working with. For example, if using the <a class="el" href="classFileWvIn.html">FileWvIn</a> class with a monophonic soundfile, then there is no difference between the <em>tick()</em> and <em>tickFrame()</em> functions (aside from the format of their arguments). But if you have a multi-channel file open, then the single value returned from the tick() function is an average of all the samples in the multi-channel sample frame.<h2><a class="anchor" name="computesample">
Hey, why was the tick() function replaced by computeSample() in various STK classes?</a></h2>
C++ doesn't like overloaded virtual functions. All STK classes that implement a single-sample <em>tick()</em> function also provide an overloaded version that takes an <a class="el" href="classStkFrames.html">StkFrames</a> argument (for vectorized computations). Further, many STK classes inherit from abstract base classes (<a class="el" href="classInstrmnt.html">Instrmnt</a>, <a class="el" href="classGenerator.html">Generator</a>, ...) and it is most convenient to define functionality common to all subclasses (like the <em>tick()</em> function that takes an <a class="el" href="classStkFrames.html">StkFrames</a> argument) in only the base class. So, to get around the overloaded virtual function problem, STK now uses the <em>computeSample()</em> function as a non-overloaded virtual function that is implemented in all subclasses (it essentially replaces the <em>tick()</em> function). Note, however, that the overloaded <em>tick()</em> functions are still available to the user ... they are implemented in the base classes.<h2><a class="anchor" name="endianness">
With version 4.3 and higher of STK, the FileWvIn class will be notified of a sample rate change and it will automatically adjust its read rate accordingly. Previous versions of STK did not perform this change and thus, the read rate could end up being incorrect. If you do not want FileWvIn to perform this automatic adjustment, you can call the <code>ignoreSampleRateChange()</code> function for a given class instance.<h2><a class="anchor" name="endianness">
Why does the sound I generated with STK sound like *&amp;#@!?</a></h2>
If the resultant sound generated by an STK program sounds like noise (and you're not doing an MLS experiment), the problem is likely related to the byte "endianness" of your computer. By default, STK assumes "big endian" byte order. If you are working with STK classes on a PC (Windows or Linux), you <em>must</em> define the <code>__LITTLE_ENDIAN__</code> preprocessor definition <em>before</em> compiling. If after reading this you realize you need to make this change, do not forget to recompile all STK classes from scratch.<h2><a class="anchor" name="xwindows">
Why do I get a Tk display error message?</a></h2>
The following error will be printed to your terminal window if you attempt to start an STK tcl/tk interface without the X Server first running:<p>
<div class="fragment"><pre class="fragment">Application initialization failed: <span class="keyword">this</span> isn't a Tk applicationcouldn't connect to display <span class="stringliteral">":0.0"</span>
The following error may be printed to your terminal window (depending on the version of the tcl/tk interpreter you are running) if you attempt to start an STK tcl/tk interface without the X Server first running:<p>
<div class="fragment"><pre class="fragment">Application initialization failed: <span class="keyword">this</span> isn<span class="stringliteral">'t a Tk applicationcouldn'</span>t connect to display <span class="stringliteral">":0.0"</span>
</pre></div><p>
Simply start your X server and then try the command again. <HR>
Simply start your X server and then try the command again. </div>
<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>
<tr><td>&copy;1995-2009 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
</table>
</BODY>