summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xconfigure2
-rw-r--r--doc/html/RtError_8h-source.html8
-rw-r--r--doc/html/RtMidi_8h-source.html8
-rw-r--r--doc/html/annotated.html12
-rw-r--r--doc/html/classRtError-members.html14
-rw-r--r--doc/html/classRtError.html48
-rw-r--r--doc/html/classRtMidi-members.html2
-rw-r--r--doc/html/classRtMidi.html6
-rw-r--r--doc/html/classRtMidiIn-members.html28
-rw-r--r--doc/html/classRtMidiIn.html197
-rw-r--r--doc/html/classRtMidiOut-members.html18
-rw-r--r--doc/html/classRtMidiOut.html112
-rw-r--r--doc/html/doxygen.css245
-rw-r--r--doc/html/doxygen.pngbin2352 -> 1576 bytes
-rw-r--r--doc/html/files.html2
-rw-r--r--doc/html/functions.html11
-rw-r--r--doc/html/functions_enum.html25
-rw-r--r--doc/html/functions_func.html43
-rw-r--r--doc/html/functions_type.html25
-rw-r--r--doc/html/hierarchy.html2
-rw-r--r--doc/html/index.html104
-rwxr-xr-xdoxygen/html/MidiFileIn_8cpp-source.html350
-rwxr-xr-xdoxygen/html/MidiFileIn_8h-source.html93
-rwxr-xr-xdoxygen/html/RtError_8h-source.html63
-rwxr-xr-xdoxygen/html/RtMidi_8cpp-source.html482
-rwxr-xr-xdoxygen/html/RtMidi_8h-source.html145
-rwxr-xr-xdoxygen/html/Stk_8cpp-source.html128
-rwxr-xr-xdoxygen/html/Stk_8h-source.html162
-rwxr-xr-xdoxygen/html/annotated.html29
-rwxr-xr-xdoxygen/html/classMidiFileIn-members.html44
-rwxr-xr-xdoxygen/html/classMidiFileIn.html296
-rwxr-xr-xdoxygen/html/classMidiFileIn.pngbin307 -> 0 bytes
-rwxr-xr-xdoxygen/html/classRtError-members.html27
-rwxr-xr-xdoxygen/html/classRtError.html56
-rwxr-xr-xdoxygen/html/classRtMidi-members.html21
-rwxr-xr-xdoxygen/html/classRtMidi.html44
-rwxr-xr-xdoxygen/html/classRtMidi.pngbin412 -> 0 bytes
-rwxr-xr-xdoxygen/html/classRtMidiIn-members.html32
-rwxr-xr-xdoxygen/html/classRtMidiIn.html281
-rwxr-xr-xdoxygen/html/classRtMidiIn.pngbin300 -> 0 bytes
-rwxr-xr-xdoxygen/html/classRtMidiOut-members.html29
-rwxr-xr-xdoxygen/html/classRtMidiOut.html166
-rwxr-xr-xdoxygen/html/classRtMidiOut.pngbin317 -> 0 bytes
-rwxr-xr-xdoxygen/html/classStk-members.html35
-rwxr-xr-xdoxygen/html/classStk.html232
-rwxr-xr-xdoxygen/html/classStk.pngbin313 -> 0 bytes
-rwxr-xr-xdoxygen/html/classStkError-members.html26
-rwxr-xr-xdoxygen/html/classStkError.html53
-rwxr-xr-xdoxygen/html/doxygen.css49
-rwxr-xr-xdoxygen/html/doxygen.pngbin2352 -> 0 bytes
-rwxr-xr-xdoxygen/html/files.html32
-rwxr-xr-xdoxygen/html/functions.html65
-rwxr-xr-xdoxygen/html/hierarchy.html33
-rwxr-xr-xdoxygen/html/index.html24
-rwxr-xr-xdoxygen/html/midiin_8cpp-source.html83
-rwxr-xr-xdoxygen/html/miditime_8cpp-source.html93
-rwxr-xr-xdoxygen/html/newRtMidi_8h-source.html148
-rwxr-xr-xdoxygen/html/oldRtMidi_8cpp-source.html385
-rwxr-xr-xdoxygen/html/oldRtMidi_8h-source.html163
-rwxr-xr-xdoxygen/html/playsmf_8cpp-source.html117
60 files changed, 596 insertions, 4302 deletions
diff --git a/configure b/configure
index dc53eae..de5e6ce 100755
--- a/configure
+++ b/configure
@@ -3311,7 +3311,7 @@ echo "$as_me:$LINENO: checking for MIDI API" >&5
echo $ECHO_N "checking for MIDI API... $ECHO_C" >&6
case $host in
*-*-linux*)
- midi_api=_D__LINUX_ALSA__
+ midi_api=-D__LINUX_ALSASEQ__
echo "$as_me:$LINENO: checking for snd_seq_open in -lasound" >&5
diff --git a/doc/html/RtError_8h-source.html b/doc/html/RtError_8h-source.html
index db0f4ce..4985841 100644
--- a/doc/html/RtError_8h-source.html
+++ b/doc/html/RtError_8h-source.html
@@ -7,7 +7,7 @@
<CENTER>
<a class="qindex" href="index.html">Tutorial</a> &nbsp; <a class="qindex" href="annotated.html">Class/Enum List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </CENTER>
<HR>
-<!-- Generated by Doxygen 1.3-rc3 -->
+<!-- Generated by Doxygen 1.3.6 -->
<h1>RtError.h</h1><div class="fragment"><pre>00001 <span class="comment">/************************************************************************/</span>
00010 <span class="comment">/************************************************************************/</span>
00011
@@ -20,7 +20,7 @@
<a name="l00018"></a><a class="code" href="classRtError.html">00018</a> <span class="keyword">class </span><a class="code" href="classRtError.html">RtError</a>
00019 {
00020 <span class="keyword">public</span>:
-<a name="l00022"></a><a class="code" href="classRtError.html#s11">00022</a> <span class="keyword">enum</span> <a class="code" href="classRtError.html#s11">Type</a> {
+<a name="l00022"></a><a class="code" href="classRtError.html#w11">00022</a> <span class="keyword">enum</span> <a class="code" href="classRtError.html#w11">Type</a> {
00023 WARNING,
00024 DEBUG_WARNING,
00025 UNSPECIFIED,
@@ -36,7 +36,7 @@
00035
00036 <span class="keyword">protected</span>:
00037 std::string message_;
-00038 <a class="code" href="classRtError.html#s11">Type</a> type_;
+00038 Type type_;
00039
00040 <span class="keyword">public</span>:
<a name="l00042"></a><a class="code" href="classRtError.html#a0">00042</a> <a class="code" href="classRtError.html#a0">RtError</a>(<span class="keyword">const</span> std::string&amp; message, Type type = RtError::UNSPECIFIED) : message_(message), type_(type) {}
@@ -45,7 +45,7 @@
00046
<a name="l00048"></a><a class="code" href="classRtError.html#a2">00048</a> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classRtError.html#a2">printMessage</a>(<span class="keywordtype">void</span>) { std::cout &lt;&lt; <span class="charliteral">'\n'</span> &lt;&lt; message_ &lt;&lt; <span class="stringliteral">"\n\n"</span>; }
00049
-<a name="l00051"></a><a class="code" href="classRtError.html#a3">00051</a> <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="classRtError.html#s11">Type</a>&amp; <a class="code" href="classRtError.html#a3">getType</a>(<span class="keywordtype">void</span>) { <span class="keywordflow">return</span> type_; }
+<a name="l00051"></a><a class="code" href="classRtError.html#a3">00051</a> <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="classRtError.html#w11">Type</a>&amp; <a class="code" href="classRtError.html#a3">getType</a>(<span class="keywordtype">void</span>) { <span class="keywordflow">return</span> type_; }
00052
<a name="l00054"></a><a class="code" href="classRtError.html#a4">00054</a> <span class="keyword">virtual</span> <span class="keyword">const</span> std::string&amp; <a class="code" href="classRtError.html#a4">getMessage</a>(<span class="keywordtype">void</span>) { <span class="keywordflow">return</span> message_; }
00055 };
diff --git a/doc/html/RtMidi_8h-source.html b/doc/html/RtMidi_8h-source.html
index 9bda7a2..39be019 100644
--- a/doc/html/RtMidi_8h-source.html
+++ b/doc/html/RtMidi_8h-source.html
@@ -7,11 +7,11 @@
<CENTER>
<a class="qindex" href="index.html">Tutorial</a> &nbsp; <a class="qindex" href="annotated.html">Class/Enum List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </CENTER>
<HR>
-<!-- Generated by Doxygen 1.3-rc3 -->
+<!-- Generated by Doxygen 1.3.6 -->
<h1>RtMidi.h</h1><div class="fragment"><pre>00001 <span class="comment">/**********************************************************************/</span>
00036 <span class="comment">/**********************************************************************/</span>
00037
-00038 <span class="comment">// RtMidi: Version 1.0.0, 17 September 2004</span>
+00038 <span class="comment">// RtMidi: Version 1.0.1, 20 September 2004</span>
00039
00040 <span class="preprocessor">#ifndef RTMIDI_H</span>
00041 <span class="preprocessor"></span><span class="preprocessor">#define RTMIDI_H</span>
@@ -49,7 +49,7 @@
00088 {
00089 <span class="keyword">public</span>:
00090
-<a name="l00092"></a><a class="code" href="classRtMidiIn.html#s0">00092</a> <span class="keyword">typedef</span> void (*RtMidiCallback)( <span class="keywordtype">double</span> timeStamp, std::vector&lt;unsigned char&gt; *message, <span class="keywordtype">void</span> *userData);
+<a name="l00092"></a><a class="code" href="classRtMidiIn.html#w0">00092</a> <span class="keyword">typedef</span> void (*<a class="code" href="classRtMidiIn.html#w0">RtMidiCallback</a>)( <span class="keywordtype">double</span> timeStamp, std::vector&lt;unsigned char&gt; *message, <span class="keywordtype">void</span> *userData);
00093
00095
00098 <a class="code" href="classRtMidiIn.html#a0">RtMidiIn</a>();
@@ -63,7 +63,7 @@
00117 <span class="keywordtype">void</span> <a class="code" href="classRtMidiIn.html#a3">openVirtualPort</a>();
00118
00120
-00126 <span class="keywordtype">void</span> <a class="code" href="classRtMidiIn.html#a4">setCallback</a>( RtMidiCallback callback, <span class="keywordtype">void</span> *userData = 0 );
+00126 <span class="keywordtype">void</span> <a class="code" href="classRtMidiIn.html#a4">setCallback</a>( <a class="code" href="classRtMidiIn.html#w0">RtMidiCallback</a> callback, <span class="keywordtype">void</span> *userData = 0 );
00127
00129
00133 <span class="keywordtype">void</span> <a class="code" href="classRtMidiIn.html#a5">cancelCallback</a>();
diff --git a/doc/html/annotated.html b/doc/html/annotated.html
index 3ad461c..677ed14 100644
--- a/doc/html/annotated.html
+++ b/doc/html/annotated.html
@@ -7,12 +7,12 @@
<CENTER>
<a class="qindex" href="index.html">Tutorial</a> &nbsp; <a class="qindex" href="annotated.html">Class/Enum List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </CENTER>
<HR>
-<!-- Generated by Doxygen 1.3-rc3 -->
-<h1>RtMidi Compound List</h1>Here are the classes, structs, unions and interfaces with brief descriptions:<table>
- <tr><td class="indexkey"><a class="el" href="classRtError.html">RtError</a></td><td class="indexvalue">Exception handling class for RtAudio &amp; <a class="el" href="classRtMidi.html">RtMidi</a></td></tr>
- <tr><td class="indexkey"><a class="el" href="classRtMidi.html">RtMidi</a></td><td class="indexvalue">An abstract base class for realtime MIDI input/output</td></tr>
- <tr><td class="indexkey"><a class="el" href="classRtMidiIn.html">RtMidiIn</a></td><td class="indexvalue">A realtime MIDI input class</td></tr>
- <tr><td class="indexkey"><a class="el" href="classRtMidiOut.html">RtMidiOut</a></td><td class="indexvalue">A realtime MIDI output class</td></tr>
+<!-- Generated by Doxygen 1.3.6 -->
+<h1>RtMidi Class List</h1>Here are the classes, structs, unions and interfaces with brief descriptions:<table>
+ <tr><td class="indexkey"><a class="el" href="classRtError.html">RtError</a></td><td class="indexvalue">Exception handling class for RtAudio &amp; <a class="el" href="classRtMidi.html">RtMidi</a> </td></tr>
+ <tr><td class="indexkey"><a class="el" href="classRtMidi.html">RtMidi</a></td><td class="indexvalue">An abstract base class for realtime MIDI input/output </td></tr>
+ <tr><td class="indexkey"><a class="el" href="classRtMidiIn.html">RtMidiIn</a></td><td class="indexvalue">A realtime MIDI input class </td></tr>
+ <tr><td class="indexkey"><a class="el" href="classRtMidiOut.html">RtMidiOut</a></td><td class="indexvalue">A realtime MIDI output class </td></tr>
</table>
<HR>
diff --git a/doc/html/classRtError-members.html b/doc/html/classRtError-members.html
index f3bb904..c73c5a9 100644
--- a/doc/html/classRtError-members.html
+++ b/doc/html/classRtError-members.html
@@ -7,14 +7,14 @@
<CENTER>
<a class="qindex" href="index.html">Tutorial</a> &nbsp; <a class="qindex" href="annotated.html">Class/Enum List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </CENTER>
<HR>
-<!-- Generated by Doxygen 1.3-rc3 -->
+<!-- Generated by Doxygen 1.3.6 -->
<h1>RtError Member List</h1>This is the complete list of members for <a class="el" href="classRtError.html">RtError</a>, including all inherited members.<table>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classRtError.html#a4">getMessage</a>(void)</td><td><a class="el" href="classRtError.html">RtError</a></td><td><code> [inline, virtual]</code></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classRtError.html#a3">getType</a>(void)</td><td><a class="el" href="classRtError.html">RtError</a></td><td><code> [inline, virtual]</code></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classRtError.html#a2">printMessage</a>(void)</td><td><a class="el" href="classRtError.html">RtError</a></td><td><code> [inline, virtual]</code></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classRtError.html#a0">RtError</a>(const std::string &amp;message, Type type=RtError::UNSPECIFIED)</td><td><a class="el" href="classRtError.html">RtError</a></td><td><code> [inline]</code></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classRtError.html#s11">Type</a> enum name</td><td><a class="el" href="classRtError.html">RtError</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classRtError.html#a1">~RtError</a>(void)</td><td><a class="el" href="classRtError.html">RtError</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classRtError.html#a4">getMessage</a>(void)</td><td><a class="el" href="classRtError.html">RtError</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classRtError.html#a3">getType</a>(void)</td><td><a class="el" href="classRtError.html">RtError</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classRtError.html#a2">printMessage</a>(void)</td><td><a class="el" href="classRtError.html">RtError</a></td><td><code> [inline, virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classRtError.html#a0">RtError</a>(const std::string &amp;message, Type type=RtError::UNSPECIFIED)</td><td><a class="el" href="classRtError.html">RtError</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classRtError.html#w11">Type</a> enum name</td><td><a class="el" href="classRtError.html">RtError</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classRtError.html#a1">~RtError</a>(void)</td><td><a class="el" href="classRtError.html">RtError</a></td><td><code> [inline, virtual]</code></td></tr>
</table><HR>
<table><tr><td><img src="../images/mcgill.gif" width=165></td>
diff --git a/doc/html/classRtError.html b/doc/html/classRtError.html
index 395a949..cbf8ee9 100644
--- a/doc/html/classRtError.html
+++ b/doc/html/classRtError.html
@@ -7,8 +7,8 @@
<CENTER>
<a class="qindex" href="index.html">Tutorial</a> &nbsp; <a class="qindex" href="annotated.html">Class/Enum List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </CENTER>
<HR>
-<!-- Generated by Doxygen 1.3-rc3 -->
-<h1>RtError Class Reference</h1>Exception handling class for RtAudio &amp; <a class="el" href="classRtMidi.html">RtMidi</a>.
+<!-- Generated by Doxygen 1.3.6 -->
+<h1>RtError Class Reference</h1>Exception handling class for RtAudio &amp; <a class="el" href="classRtMidi.html">RtMidi</a>.
<a href="#_details">More...</a>
<p>
<code>#include &lt;<a class="el" href="RtError_8h-source.html">RtError.h</a>&gt;</code>
@@ -16,29 +16,35 @@
<a href="classRtError-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
<tr><td></td></tr>
<tr><td colspan=2><br><h2>Public Types</h2></td></tr>
-<tr><td nowrap align=right valign=top>enum &nbsp;</td><td valign=bottom><a class="el" href="classRtError.html#s11">Type</a> </td></tr>
-<tr><td>&nbsp;</td><td><font size=-1><em>Defined RtError types.</em></font><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>enum &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classRtError.html#w11">Type</a> </td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Defined RtError types. <br><br></td></tr>
<tr><td colspan=2><br><h2>Public Member Functions</h2></td></tr>
-<tr><td nowrap align=right valign=top><a name="a0" doxytag="RtError::RtError"></a>
-&nbsp;</td><td valign=bottom><a class="el" href="classRtError.html#a0">RtError</a> (const std::string &amp;message, <a class="el" href="classRtError.html#s11">Type</a> type=RtError::UNSPECIFIED)</td></tr>
-<tr><td>&nbsp;</td><td><font size=-1><em>The constructor.</em></font><br><br></td></tr>
-<tr><td nowrap align=right valign=top><a name="a1" doxytag="RtError::~RtError"></a>
-virtual&nbsp;</td><td valign=bottom><a class="el" href="classRtError.html#a1">~RtError</a> (void)</td></tr>
-<tr><td>&nbsp;</td><td><font size=-1><em>The destructor.</em></font><br><br></td></tr>
-<tr><td nowrap align=right valign=top><a name="a2" doxytag="RtError::printMessage"></a>
-virtual void&nbsp;</td><td valign=bottom><a class="el" href="classRtError.html#a2">printMessage</a> (void)</td></tr>
-<tr><td>&nbsp;</td><td><font size=-1><em>Prints "thrown" error message to stdout.</em></font><br><br></td></tr>
-<tr><td nowrap align=right valign=top><a name="a3" doxytag="RtError::getType"></a>
-virtual const <a class="el" href="classRtError.html#s11">Type</a> &amp;&nbsp;</td><td valign=bottom><a class="el" href="classRtError.html#a3">getType</a> (void)</td></tr>
-<tr><td>&nbsp;</td><td><font size=-1><em>Returns the "thrown" error message type.</em></font><br><br></td></tr>
-<tr><td nowrap align=right valign=top><a name="a4" doxytag="RtError::getMessage"></a>
-virtual const std::string &amp;&nbsp;</td><td valign=bottom><a class="el" href="classRtError.html#a4">getMessage</a> (void)</td></tr>
-<tr><td>&nbsp;</td><td><font size=-1><em>Returns the "thrown" error message string.</em></font><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a0" doxytag="RtError::RtError" ></a>
+&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classRtError.html#a0">RtError</a> (const std::string &amp;message, <a class="el" href="classRtError.html#w11">Type</a> type=RtError::UNSPECIFIED)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The constructor. <br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a1" doxytag="RtError::~RtError" ></a>
+virtual&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classRtError.html#a1">~RtError</a> (void)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The destructor. <br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a2" doxytag="RtError::printMessage" ></a>
+virtual void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classRtError.html#a2">printMessage</a> (void)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Prints "thrown" error message to stdout. <br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a3" doxytag="RtError::getType" ></a>
+virtual const <a class="el" href="classRtError.html#w11">Type</a> &amp;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classRtError.html#a3">getType</a> (void)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the "thrown" error message type. <br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a4" doxytag="RtError::getMessage" ></a>
+virtual const std::string &amp;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classRtError.html#a4">getMessage</a> (void)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the "thrown" error message string. <br><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
-Exception handling class for RtAudio &amp; <a class="el" href="classRtMidi.html">RtMidi</a>.
+Exception handling class for RtAudio &amp; <a class="el" href="classRtMidi.html">RtMidi</a>.
<p>
-The RtError class is quite simple but it does allow errors to be "caught" by <a class="el" href="classRtError.html#s11">RtError::Type</a>. See the RtAudio and <a class="el" href="classRtMidi.html">RtMidi</a> documentation to know which methods can "throw" an RtError.
+The RtError class is quite simple but it does allow errors to be "caught" by <a class="el" href="classRtError.html#w11">RtError::Type</a>. See the RtAudio and <a class="el" href="classRtMidi.html">RtMidi</a> documentation to know which methods can "throw" an RtError.
<p>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="RtError_8h-source.html">RtError.h</a></ul>
diff --git a/doc/html/classRtMidi-members.html b/doc/html/classRtMidi-members.html
index 18e99aa..a6b2f32 100644
--- a/doc/html/classRtMidi-members.html
+++ b/doc/html/classRtMidi-members.html
@@ -7,7 +7,7 @@
<CENTER>
<a class="qindex" href="index.html">Tutorial</a> &nbsp; <a class="qindex" href="annotated.html">Class/Enum List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </CENTER>
<HR>
-<!-- Generated by Doxygen 1.3-rc3 -->
+<!-- Generated by Doxygen 1.3.6 -->
<h1>RtMidi Member List</h1>This is the complete list of members for <a class="el" href="classRtMidi.html">RtMidi</a>, including all inherited members.<table>
</table><HR>
diff --git a/doc/html/classRtMidi.html b/doc/html/classRtMidi.html
index e7be341..1b78b92 100644
--- a/doc/html/classRtMidi.html
+++ b/doc/html/classRtMidi.html
@@ -7,8 +7,8 @@
<CENTER>
<a class="qindex" href="index.html">Tutorial</a> &nbsp; <a class="qindex" href="annotated.html">Class/Enum List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </CENTER>
<HR>
-<!-- Generated by Doxygen 1.3-rc3 -->
-<h1>RtMidi Class Reference</h1>An abstract base class for realtime MIDI input/output.
+<!-- Generated by Doxygen 1.3.6 -->
+<h1>RtMidi Class Reference</h1>An abstract base class for realtime MIDI input/output.
<a href="#_details">More...</a>
<p>
<code>#include &lt;<a class="el" href="RtMidi_8h-source.html">RtMidi.h</a>&gt;</code>
@@ -23,7 +23,7 @@
<tr><td></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
-An abstract base class for realtime MIDI input/output.
+An abstract base class for realtime MIDI input/output.
<p>
This class implements some common functionality for the realtime MIDI input/output subclasses <a class="el" href="classRtMidiIn.html">RtMidiIn</a> and <a class="el" href="classRtMidiOut.html">RtMidiOut</a>.<p>
RtMidi WWW site: <a href="http://music.mcgill.ca/~gary/rtmidi/">http://music.mcgill.ca/~gary/rtmidi/</a><p>
diff --git a/doc/html/classRtMidiIn-members.html b/doc/html/classRtMidiIn-members.html
index f03b7c1..dab2552 100644
--- a/doc/html/classRtMidiIn-members.html
+++ b/doc/html/classRtMidiIn-members.html
@@ -7,21 +7,21 @@
<CENTER>
<a class="qindex" href="index.html">Tutorial</a> &nbsp; <a class="qindex" href="annotated.html">Class/Enum List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </CENTER>
<HR>
-<!-- Generated by Doxygen 1.3-rc3 -->
+<!-- Generated by Doxygen 1.3.6 -->
<h1>RtMidiIn Member List</h1>This is the complete list of members for <a class="el" href="classRtMidiIn.html">RtMidiIn</a>, including all inherited members.<table>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classRtMidiIn.html#a5">cancelCallback</a>()</td><td><a class="el" href="classRtMidiIn.html">RtMidiIn</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classRtMidiIn.html#a6">closePort</a>(void)</td><td><a class="el" href="classRtMidiIn.html">RtMidiIn</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classRtMidiIn.html#a11">getMessage</a>(std::vector&lt; unsigned char &gt; *message)</td><td><a class="el" href="classRtMidiIn.html">RtMidiIn</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classRtMidiIn.html#a7">getPortCount</a>()</td><td><a class="el" href="classRtMidiIn.html">RtMidiIn</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classRtMidiIn.html#a8">getPortName</a>(unsigned int portNumber=0)</td><td><a class="el" href="classRtMidiIn.html">RtMidiIn</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classRtMidiIn.html#a10">ignoreTypes</a>(bool midiSysex=true, bool midiTime=true, bool midiSense=true)</td><td><a class="el" href="classRtMidiIn.html">RtMidiIn</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classRtMidiIn.html#a2">openPort</a>(unsigned int portNumber=0)</td><td><a class="el" href="classRtMidiIn.html">RtMidiIn</a></td><td><code> [virtual]</code></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classRtMidiIn.html#a3">openVirtualPort</a>()</td><td><a class="el" href="classRtMidiIn.html">RtMidiIn</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classRtMidiIn.html#s0">RtMidiCallback</a> typedef</td><td><a class="el" href="classRtMidiIn.html">RtMidiIn</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classRtMidiIn.html#a0">RtMidiIn</a>()</td><td><a class="el" href="classRtMidiIn.html">RtMidiIn</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classRtMidiIn.html#a4">setCallback</a>(RtMidiCallback callback, void *userData=0)</td><td><a class="el" href="classRtMidiIn.html">RtMidiIn</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classRtMidiIn.html#a9">setQueueSizeLimit</a>(unsigned int queueSize)</td><td><a class="el" href="classRtMidiIn.html">RtMidiIn</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classRtMidiIn.html#a1">~RtMidiIn</a>()</td><td><a class="el" href="classRtMidiIn.html">RtMidiIn</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classRtMidiIn.html#a5">cancelCallback</a>()</td><td><a class="el" href="classRtMidiIn.html">RtMidiIn</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classRtMidiIn.html#a6">closePort</a>(void)</td><td><a class="el" href="classRtMidiIn.html">RtMidiIn</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classRtMidiIn.html#a11">getMessage</a>(std::vector&lt; unsigned char &gt; *message)</td><td><a class="el" href="classRtMidiIn.html">RtMidiIn</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classRtMidiIn.html#a7">getPortCount</a>()</td><td><a class="el" href="classRtMidiIn.html">RtMidiIn</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classRtMidiIn.html#a8">getPortName</a>(unsigned int portNumber=0)</td><td><a class="el" href="classRtMidiIn.html">RtMidiIn</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classRtMidiIn.html#a10">ignoreTypes</a>(bool midiSysex=true, bool midiTime=true, bool midiSense=true)</td><td><a class="el" href="classRtMidiIn.html">RtMidiIn</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classRtMidiIn.html#a2">openPort</a>(unsigned int portNumber=0)</td><td><a class="el" href="classRtMidiIn.html">RtMidiIn</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classRtMidiIn.html#a3">openVirtualPort</a>()</td><td><a class="el" href="classRtMidiIn.html">RtMidiIn</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classRtMidiIn.html#w0">RtMidiCallback</a> typedef</td><td><a class="el" href="classRtMidiIn.html">RtMidiIn</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classRtMidiIn.html#a0">RtMidiIn</a>()</td><td><a class="el" href="classRtMidiIn.html">RtMidiIn</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classRtMidiIn.html#a4">setCallback</a>(RtMidiCallback callback, void *userData=0)</td><td><a class="el" href="classRtMidiIn.html">RtMidiIn</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classRtMidiIn.html#a9">setQueueSizeLimit</a>(unsigned int queueSize)</td><td><a class="el" href="classRtMidiIn.html">RtMidiIn</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classRtMidiIn.html#a1">~RtMidiIn</a>()</td><td><a class="el" href="classRtMidiIn.html">RtMidiIn</a></td><td></td></tr>
</table><HR>
<table><tr><td><img src="../images/mcgill.gif" width=165></td>
diff --git a/doc/html/classRtMidiIn.html b/doc/html/classRtMidiIn.html
index ced103b..4255030 100644
--- a/doc/html/classRtMidiIn.html
+++ b/doc/html/classRtMidiIn.html
@@ -7,8 +7,8 @@
<CENTER>
<a class="qindex" href="index.html">Tutorial</a> &nbsp; <a class="qindex" href="annotated.html">Class/Enum List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </CENTER>
<HR>
-<!-- Generated by Doxygen 1.3-rc3 -->
-<h1>RtMidiIn Class Reference</h1>A realtime MIDI input class.
+<!-- Generated by Doxygen 1.3.6 -->
+<h1>RtMidiIn Class Reference</h1>A realtime MIDI input class.
<a href="#_details">More...</a>
<p>
<code>#include &lt;<a class="el" href="RtMidi_8h-source.html">RtMidi.h</a>&gt;</code>
@@ -21,55 +21,68 @@
<a href="classRtMidiIn-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
<tr><td></td></tr>
<tr><td colspan=2><br><h2>Public Types</h2></td></tr>
-<tr><td nowrap align=right valign=top><a name="s0" doxytag="RtMidiIn::RtMidiCallback"></a>
-typedef void(*&nbsp;</td><td valign=bottom><a class="el" href="classRtMidiIn.html#s0">RtMidiCallback</a> )(double timeStamp, std::vector&lt; unsigned char &gt; *message, void *userData)</td></tr>
-<tr><td>&nbsp;</td><td><font size=-1><em>User callback function type definition.</em></font><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="w0" doxytag="RtMidiIn::RtMidiCallback" ></a>
+typedef void(*&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classRtMidiIn.html#w0">RtMidiCallback</a> )(double timeStamp, std::vector&lt; unsigned char &gt; *message, void *userData)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">User callback function type definition. <br><br></td></tr>
<tr><td colspan=2><br><h2>Public Member Functions</h2></td></tr>
-<tr><td nowrap align=right valign=top>&nbsp;</td><td valign=bottom><a class="el" href="classRtMidiIn.html#a0">RtMidiIn</a> ()</td></tr>
-<tr><td>&nbsp;</td><td><font size=-1><em>Default constructor.</em> <a href="#a0"></a><em></em></font><br><br></td></tr>
-<tr><td nowrap align=right valign=top><a name="a1" doxytag="RtMidiIn::~RtMidiIn"></a>
-&nbsp;</td><td valign=bottom><a class="el" href="classRtMidiIn.html#a1">~RtMidiIn</a> ()</td></tr>
-<tr><td>&nbsp;</td><td><font size=-1><em>If a MIDI connection is still open, it will be closed by the destructor.</em></font><br><br></td></tr>
-<tr><td nowrap align=right valign=top>void&nbsp;</td><td valign=bottom><a class="el" href="classRtMidiIn.html#a2">openPort</a> (unsigned int portNumber=0)</td></tr>
-<tr><td>&nbsp;</td><td><font size=-1><em>Open a MIDI input connection.</em> <a href="#a2"></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="classRtMidiIn.html#a3">openVirtualPort</a> ()</td></tr>
-<tr><td>&nbsp;</td><td><font size=-1><em>Create a virtual input port to allow software connections (OS X and ALSA only).</em> <a href="#a3"></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="classRtMidiIn.html#a4">setCallback</a> (<a class="el" href="classRtMidiIn.html#s0">RtMidiCallback</a> callback, void *userData=0)</td></tr>
-<tr><td>&nbsp;</td><td><font size=-1><em>Set a callback function to be invoked for incoming MIDI messages.</em> <a href="#a4"></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="classRtMidiIn.html#a5">cancelCallback</a> ()</td></tr>
-<tr><td>&nbsp;</td><td><font size=-1><em>Cancel use of the current callback function (if one exists).</em> <a href="#a5"></a><em></em></font><br><br></td></tr>
-<tr><td nowrap align=right valign=top><a name="a6" doxytag="RtMidiIn::closePort"></a>
-void&nbsp;</td><td valign=bottom><a class="el" href="classRtMidiIn.html#a6">closePort</a> (void)</td></tr>
-<tr><td>&nbsp;</td><td><font size=-1><em>Close an open MIDI connection (if one exists).</em></font><br><br></td></tr>
-<tr><td nowrap align=right valign=top><a name="a7" doxytag="RtMidiIn::getPortCount"></a>
-unsigned int&nbsp;</td><td valign=bottom><a class="el" href="classRtMidiIn.html#a7">getPortCount</a> ()</td></tr>
-<tr><td>&nbsp;</td><td><font size=-1><em>Return the number of available MIDI input ports.</em></font><br><br></td></tr>
-<tr><td nowrap align=right valign=top>std::string&nbsp;</td><td valign=bottom><a class="el" href="classRtMidiIn.html#a8">getPortName</a> (unsigned int portNumber=0)</td></tr>
-<tr><td>&nbsp;</td><td><font size=-1><em>Return a string identifier for the specified MIDI input port number.</em> <a href="#a8"></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="classRtMidiIn.html#a9">setQueueSizeLimit</a> (unsigned int queueSize)</td></tr>
-<tr><td>&nbsp;</td><td><font size=-1><em>Set the maximum number of MIDI messages to be saved in the queue.</em> <a href="#a9"></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="classRtMidiIn.html#a10">ignoreTypes</a> (bool midiSysex=true, bool midiTime=true, bool midiSense=true)</td></tr>
-<tr><td>&nbsp;</td><td><font size=-1><em>Specify whether certain MIDI message types should be queued or ignored during input.</em> <a href="#a10"></a><em></em></font><br><br></td></tr>
-<tr><td nowrap align=right valign=top>double&nbsp;</td><td valign=bottom><a class="el" href="classRtMidiIn.html#a11">getMessage</a> (std::vector&lt; unsigned char &gt; *message)</td></tr>
-<tr><td>&nbsp;</td><td><font size=-1><em>Fill the user-provided vector with the data bytes for the next available MIDI message in the input queue and return the event delta-time in seconds.</em> <a href="#a11"></a><em></em></font><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classRtMidiIn.html#a0">RtMidiIn</a> ()</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Default constructor. <a href="#a0"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a1" doxytag="RtMidiIn::~RtMidiIn" ></a>
+&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classRtMidiIn.html#a1">~RtMidiIn</a> ()</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">If a MIDI connection is still open, it will be closed by the destructor. <br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classRtMidiIn.html#a2">openPort</a> (unsigned int portNumber=0)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Open a MIDI input connection. <a href="#a2"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classRtMidiIn.html#a3">openVirtualPort</a> ()</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a virtual input port to allow software connections (OS X and ALSA only). <a href="#a3"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classRtMidiIn.html#a4">setCallback</a> (<a class="el" href="classRtMidiIn.html#w0">RtMidiCallback</a> callback, void *userData=0)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a callback function to be invoked for incoming MIDI messages. <a href="#a4"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classRtMidiIn.html#a5">cancelCallback</a> ()</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Cancel use of the current callback function (if one exists). <a href="#a5"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a6" doxytag="RtMidiIn::closePort" ></a>
+void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classRtMidiIn.html#a6">closePort</a> (void)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Close an open MIDI connection (if one exists). <br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a7" doxytag="RtMidiIn::getPortCount" ></a>
+unsigned int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classRtMidiIn.html#a7">getPortCount</a> ()</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return the number of available MIDI input ports. <br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>std::string&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classRtMidiIn.html#a8">getPortName</a> (unsigned int portNumber=0)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return a string identifier for the specified MIDI input port number. <a href="#a8"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classRtMidiIn.html#a9">setQueueSizeLimit</a> (unsigned int queueSize)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the maximum number of MIDI messages to be saved in the queue. <a href="#a9"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classRtMidiIn.html#a10">ignoreTypes</a> (bool midiSysex=true, bool midiTime=true, bool midiSense=true)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Specify whether certain MIDI message types should be queued or ignored during input. <a href="#a10"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>double&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classRtMidiIn.html#a11">getMessage</a> (std::vector&lt; unsigned char &gt; *message)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Fill the user-provided vector with the data bytes for the next available MIDI message in the input queue and return the event delta-time in seconds. <a href="#a11"></a><br><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
-A realtime MIDI input class.
+A realtime MIDI input class.
<p>
This class provides a common, platform-independent API for realtime MIDI input. It allows access to a single MIDI input port. Incoming MIDI messages are either saved to a queue for retrieval using the <a class="el" href="classRtMidiIn.html#a11">getMessage()</a> function or immediately passed to a user-specified callback function. Create multiple instances of this class to connect to more than one MIDI device at the same time. With the OS-X and Linux ALSA MIDI APIs, it is also possible to open a virtual input port to which other MIDI software clients can connect.<p>
by Gary P. Scavone, 2003-2004.
<p>
<hr><h2>Constructor &amp; Destructor Documentation</h2>
-<a name="a0" doxytag="RtMidiIn::RtMidiIn"></a><p>
-<table width="100%" cellpadding="2" cellspacing="0" border="0">
+<a class="anchor" name="a0" doxytag="RtMidiIn::RtMidiIn" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
<tr>
- <td class="md">
+ <td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> RtMidiIn::RtMidiIn </td>
<td class="md" valign="top">(&nbsp;</td>
- <td class="mdname1" valign="top" nowrap>&nbsp; </td>
- <td class="md" valign="top">)&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
<td class="md" nowrap></td>
</tr>
@@ -85,23 +98,23 @@ by Gary P. Scavone, 2003-2004.
<td>
<p>
-Default constructor.
+Default constructor.
<p>
An exception will be thrown if a MIDI system initialization error occurs. </td>
</tr>
</table>
<hr><h2>Member Function Documentation</h2>
-<a name="a2" doxytag="RtMidiIn::openPort"></a><p>
-<table width="100%" cellpadding="2" cellspacing="0" border="0">
+<a class="anchor" name="a2" doxytag="RtMidiIn::openPort" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
<tr>
- <td class="md">
+ <td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> void RtMidiIn::openPort </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">unsigned int&nbsp;</td>
- <td class="mdname1" valign="top" nowrap>&nbsp; <em>portNumber</em> = 0 </td>
- <td class="md" valign="top">)&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>portNumber</em> = 0 </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
<td class="md" nowrap><code> [virtual]</code></td>
</tr>
@@ -117,23 +130,23 @@ An exception will be thrown if a MIDI system initialization error occurs. </
<td>
<p>
-Open a MIDI input connection.
+Open a MIDI input connection.
<p>
An optional port number greater than 0 can be specified. Otherwise, the default or first port found is opened.
<p>
Implements <a class="el" href="classRtMidi.html">RtMidi</a>. </td>
</tr>
</table>
-<a name="a3" doxytag="RtMidiIn::openVirtualPort"></a><p>
-<table width="100%" cellpadding="2" cellspacing="0" border="0">
+<a class="anchor" name="a3" doxytag="RtMidiIn::openVirtualPort" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
<tr>
- <td class="md">
+ <td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> void RtMidiIn::openVirtualPort </td>
<td class="md" valign="top">(&nbsp;</td>
- <td class="mdname1" valign="top" nowrap>&nbsp; </td>
- <td class="md" valign="top">)&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
<td class="md" nowrap></td>
</tr>
@@ -149,27 +162,27 @@ Implements <a class="el" href="classRtMidi.html">RtMidi</a>. </td>
<td>
<p>
-Create a virtual input port to allow software connections (OS X and ALSA only).
+Create a virtual input port to allow software connections (OS X and ALSA only).
<p>
This function creates a virtual MIDI input port to which other software applications can connect. This type of functionality is currently only supported by the Macintosh OS-X and Linux ALSA APIs (the function does nothing for the other APIs). </td>
</tr>
</table>
-<a name="a4" doxytag="RtMidiIn::setCallback"></a><p>
-<table width="100%" cellpadding="2" cellspacing="0" border="0">
+<a class="anchor" name="a4" doxytag="RtMidiIn::setCallback" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
<tr>
- <td class="md">
+ <td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> void RtMidiIn::setCallback </td>
<td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="classRtMidiIn.html#s0">RtMidiCallback</a>&nbsp;</td>
- <td class="mdname" nowrap>&nbsp; <em>callback</em>, </td>
+ <td class="md" nowrap valign="top"><a class="el" href="classRtMidiIn.html#w0">RtMidiCallback</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>callback</em>, </td>
</tr>
<tr>
- <td></td>
+ <td class="md" nowrap align="right"></td>
<td></td>
<td class="md" nowrap>void *&nbsp;</td>
- <td class="mdname" nowrap>&nbsp; <em>userData</em> = 0</td>
+ <td class="mdname" nowrap> <em>userData</em> = 0</td>
</tr>
<tr>
<td></td>
@@ -189,21 +202,21 @@ This function creates a virtual MIDI input port to which other software applicat
<td>
<p>
-Set a callback function to be invoked for incoming MIDI messages.
+Set a callback function to be invoked for incoming MIDI messages.
<p>
The callback function will be called whenever an incoming MIDI message is received. While not absolutely necessary, it is best to set the callback function before opening a MIDI port to avoid leaving some messages in the queue. </td>
</tr>
</table>
-<a name="a5" doxytag="RtMidiIn::cancelCallback"></a><p>
-<table width="100%" cellpadding="2" cellspacing="0" border="0">
+<a class="anchor" name="a5" doxytag="RtMidiIn::cancelCallback" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
<tr>
- <td class="md">
+ <td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> void RtMidiIn::cancelCallback </td>
<td class="md" valign="top">(&nbsp;</td>
- <td class="mdname1" valign="top" nowrap>&nbsp; </td>
- <td class="md" valign="top">)&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
<td class="md" nowrap></td>
</tr>
@@ -219,22 +232,22 @@ The callback function will be called whenever an incoming MIDI message is receiv
<td>
<p>
-Cancel use of the current callback function (if one exists).
+Cancel use of the current callback function (if one exists).
<p>
Subsequent incoming MIDI messages will be written to the queue and can be retrieved with the <em>getMessage</em> function. </td>
</tr>
</table>
-<a name="a8" doxytag="RtMidiIn::getPortName"></a><p>
-<table width="100%" cellpadding="2" cellspacing="0" border="0">
+<a class="anchor" name="a8" doxytag="RtMidiIn::getPortName" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
<tr>
- <td class="md">
+ <td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> std::string RtMidiIn::getPortName </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">unsigned int&nbsp;</td>
- <td class="mdname1" valign="top" nowrap>&nbsp; <em>portNumber</em> = 0 </td>
- <td class="md" valign="top">)&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>portNumber</em> = 0 </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
<td class="md" nowrap></td>
</tr>
@@ -250,22 +263,22 @@ Subsequent incoming MIDI messages will be written to the queue and can be retrie
<td>
<p>
-Return a string identifier for the specified MIDI input port number.
+Return a string identifier for the specified MIDI input port number.
<p>
An exception is thrown if an invalid port specifier is provided. </td>
</tr>
</table>
-<a name="a9" doxytag="RtMidiIn::setQueueSizeLimit"></a><p>
-<table width="100%" cellpadding="2" cellspacing="0" border="0">
+<a class="anchor" name="a9" doxytag="RtMidiIn::setQueueSizeLimit" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
<tr>
- <td class="md">
+ <td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> void RtMidiIn::setQueueSizeLimit </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">unsigned int&nbsp;</td>
- <td class="mdname1" valign="top" nowrap>&nbsp; <em>queueSize</em> </td>
- <td class="md" valign="top">)&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>queueSize</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
<td class="md" nowrap></td>
</tr>
@@ -281,33 +294,33 @@ An exception is thrown if an invalid port specifier is provided. </td>
<td>
<p>
-Set the maximum number of MIDI messages to be saved in the queue.
+Set the maximum number of MIDI messages to be saved in the queue.
<p>
If the queue size limit is reached, incoming messages will be ignored. The default limit is 1024. </td>
</tr>
</table>
-<a name="a10" doxytag="RtMidiIn::ignoreTypes"></a><p>
-<table width="100%" cellpadding="2" cellspacing="0" border="0">
+<a class="anchor" name="a10" doxytag="RtMidiIn::ignoreTypes" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
<tr>
- <td class="md">
+ <td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> void RtMidiIn::ignoreTypes </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">bool&nbsp;</td>
- <td class="mdname" nowrap>&nbsp; <em>midiSysex</em> = true, </td>
+ <td class="mdname" nowrap> <em>midiSysex</em> = true, </td>
</tr>
<tr>
- <td></td>
+ <td class="md" nowrap align="right"></td>
<td></td>
<td class="md" nowrap>bool&nbsp;</td>
- <td class="mdname" nowrap>&nbsp; <em>midiTime</em> = true, </td>
+ <td class="mdname" nowrap> <em>midiTime</em> = true, </td>
</tr>
<tr>
- <td></td>
+ <td class="md" nowrap align="right"></td>
<td></td>
<td class="md" nowrap>bool&nbsp;</td>
- <td class="mdname" nowrap>&nbsp; <em>midiSense</em> = true</td>
+ <td class="mdname" nowrap> <em>midiSense</em> = true</td>
</tr>
<tr>
<td></td>
@@ -327,22 +340,22 @@ If the queue size limit is reached, incoming messages will be ignored. The defau
<td>
<p>
-Specify whether certain MIDI message types should be queued or ignored during input.
+Specify whether certain MIDI message types should be queued or ignored during input.
<p>
By default, MIDI timing and active sensing messages are ignored during message input because of their relative high data rates. MIDI sysex messages are ignored by default as well. Variable values of "true" imply that the respective message type will be ignored. </td>
</tr>
</table>
-<a name="a11" doxytag="RtMidiIn::getMessage"></a><p>
-<table width="100%" cellpadding="2" cellspacing="0" border="0">
+<a class="anchor" name="a11" doxytag="RtMidiIn::getMessage" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
<tr>
- <td class="md">
+ <td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> double RtMidiIn::getMessage </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">std::vector&lt; unsigned char &gt; *&nbsp;</td>
- <td class="mdname1" valign="top" nowrap>&nbsp; <em>message</em> </td>
- <td class="md" valign="top">)&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>message</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
<td class="md" nowrap></td>
</tr>
@@ -358,7 +371,7 @@ By default, MIDI timing and active sensing messages are ignored during message i
<td>
<p>
-Fill the user-provided vector with the data bytes for the next available MIDI message in the input queue and return the event delta-time in seconds.
+Fill the user-provided vector with the data bytes for the next available MIDI message in the input queue and return the event delta-time in seconds.
<p>
This function returns immediately whether a new message is available or not. A valid message is indicated by a non-zero vector size. An exception is thrown if an error occurs during message retrieval or an input connection was not previously established. </td>
</tr>
diff --git a/doc/html/classRtMidiOut-members.html b/doc/html/classRtMidiOut-members.html
index 451ad23..9416f1a 100644
--- a/doc/html/classRtMidiOut-members.html
+++ b/doc/html/classRtMidiOut-members.html
@@ -7,16 +7,16 @@
<CENTER>
<a class="qindex" href="index.html">Tutorial</a> &nbsp; <a class="qindex" href="annotated.html">Class/Enum List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </CENTER>
<HR>
-<!-- Generated by Doxygen 1.3-rc3 -->
+<!-- Generated by Doxygen 1.3.6 -->
<h1>RtMidiOut Member List</h1>This is the complete list of members for <a class="el" href="classRtMidiOut.html">RtMidiOut</a>, including all inherited members.<table>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classRtMidiOut.html#a3">closePort</a>()</td><td><a class="el" href="classRtMidiOut.html">RtMidiOut</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classRtMidiOut.html#a5">getPortCount</a>()</td><td><a class="el" href="classRtMidiOut.html">RtMidiOut</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classRtMidiOut.html#a6">getPortName</a>(unsigned int portNumber)</td><td><a class="el" href="classRtMidiOut.html">RtMidiOut</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classRtMidiOut.html#a2">openPort</a>(unsigned int portNumber=0)</td><td><a class="el" href="classRtMidiOut.html">RtMidiOut</a></td><td><code> [virtual]</code></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classRtMidiOut.html#a4">openVirtualPort</a>()</td><td><a class="el" href="classRtMidiOut.html">RtMidiOut</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classRtMidiOut.html#a0">RtMidiOut</a>()</td><td><a class="el" href="classRtMidiOut.html">RtMidiOut</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classRtMidiOut.html#a7">sendMessage</a>(std::vector&lt; unsigned char &gt; *message)</td><td><a class="el" href="classRtMidiOut.html">RtMidiOut</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classRtMidiOut.html#a1">~RtMidiOut</a>()</td><td><a class="el" href="classRtMidiOut.html">RtMidiOut</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classRtMidiOut.html#a3">closePort</a>()</td><td><a class="el" href="classRtMidiOut.html">RtMidiOut</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classRtMidiOut.html#a5">getPortCount</a>()</td><td><a class="el" href="classRtMidiOut.html">RtMidiOut</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classRtMidiOut.html#a6">getPortName</a>(unsigned int portNumber)</td><td><a class="el" href="classRtMidiOut.html">RtMidiOut</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classRtMidiOut.html#a2">openPort</a>(unsigned int portNumber=0)</td><td><a class="el" href="classRtMidiOut.html">RtMidiOut</a></td><td><code> [virtual]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classRtMidiOut.html#a4">openVirtualPort</a>()</td><td><a class="el" href="classRtMidiOut.html">RtMidiOut</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classRtMidiOut.html#a0">RtMidiOut</a>()</td><td><a class="el" href="classRtMidiOut.html">RtMidiOut</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classRtMidiOut.html#a7">sendMessage</a>(std::vector&lt; unsigned char &gt; *message)</td><td><a class="el" href="classRtMidiOut.html">RtMidiOut</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classRtMidiOut.html#a1">~RtMidiOut</a>()</td><td><a class="el" href="classRtMidiOut.html">RtMidiOut</a></td><td></td></tr>
</table><HR>
<table><tr><td><img src="../images/mcgill.gif" width=165></td>
diff --git a/doc/html/classRtMidiOut.html b/doc/html/classRtMidiOut.html
index 3c75b27..025e8a2 100644
--- a/doc/html/classRtMidiOut.html
+++ b/doc/html/classRtMidiOut.html
@@ -7,8 +7,8 @@
<CENTER>
<a class="qindex" href="index.html">Tutorial</a> &nbsp; <a class="qindex" href="annotated.html">Class/Enum List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </CENTER>
<HR>
-<!-- Generated by Doxygen 1.3-rc3 -->
-<h1>RtMidiOut Class Reference</h1>A realtime MIDI output class.
+<!-- Generated by Doxygen 1.3.6 -->
+<h1>RtMidiOut Class Reference</h1>A realtime MIDI output class.
<a href="#_details">More...</a>
<p>
<code>#include &lt;<a class="el" href="RtMidi_8h-source.html">RtMidi.h</a>&gt;</code>
@@ -21,43 +21,51 @@
<a href="classRtMidiOut-members.html">List of all members.</a><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 nowrap align=right valign=top>&nbsp;</td><td valign=bottom><a class="el" href="classRtMidiOut.html#a0">RtMidiOut</a> ()</td></tr>
-<tr><td>&nbsp;</td><td><font size=-1><em>Default constructor.</em> <a href="#a0"></a><em></em></font><br><br></td></tr>
-<tr><td nowrap align=right valign=top><a name="a1" doxytag="RtMidiOut::~RtMidiOut"></a>
-&nbsp;</td><td valign=bottom><a class="el" href="classRtMidiOut.html#a1">~RtMidiOut</a> ()</td></tr>
-<tr><td>&nbsp;</td><td><font size=-1><em>The destructor closes any open MIDI connections.</em></font><br><br></td></tr>
-<tr><td nowrap align=right valign=top>void&nbsp;</td><td valign=bottom><a class="el" href="classRtMidiOut.html#a2">openPort</a> (unsigned int portNumber=0)</td></tr>
-<tr><td>&nbsp;</td><td><font size=-1><em>Open a MIDI output connection.</em> <a href="#a2"></a><em></em></font><br><br></td></tr>
-<tr><td nowrap align=right valign=top><a name="a3" doxytag="RtMidiOut::closePort"></a>
-void&nbsp;</td><td valign=bottom><a class="el" href="classRtMidiOut.html#a3">closePort</a> ()</td></tr>
-<tr><td>&nbsp;</td><td><font size=-1><em>Close an open MIDI connection (if one exists).</em></font><br><br></td></tr>
-<tr><td nowrap align=right valign=top>void&nbsp;</td><td valign=bottom><a class="el" href="classRtMidiOut.html#a4">openVirtualPort</a> ()</td></tr>
-<tr><td>&nbsp;</td><td><font size=-1><em>Create a virtual output port to allow software connections (OS X and ALSA only).</em> <a href="#a4"></a><em></em></font><br><br></td></tr>
-<tr><td nowrap align=right valign=top><a name="a5" doxytag="RtMidiOut::getPortCount"></a>
-unsigned int&nbsp;</td><td valign=bottom><a class="el" href="classRtMidiOut.html#a5">getPortCount</a> ()</td></tr>
-<tr><td>&nbsp;</td><td><font size=-1><em>Return the number of available MIDI output ports.</em></font><br><br></td></tr>
-<tr><td nowrap align=right valign=top>std::string&nbsp;</td><td valign=bottom><a class="el" href="classRtMidiOut.html#a6">getPortName</a> (unsigned int portNumber)</td></tr>
-<tr><td>&nbsp;</td><td><font size=-1><em>Return a string identifier for the specified MIDI port type and number.</em> <a href="#a6"></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="classRtMidiOut.html#a7">sendMessage</a> (std::vector&lt; unsigned char &gt; *message)</td></tr>
-<tr><td>&nbsp;</td><td><font size=-1><em>Immediately send a single message out an open MIDI output port.</em> <a href="#a7"></a><em></em></font><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classRtMidiOut.html#a0">RtMidiOut</a> ()</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Default constructor. <a href="#a0"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a1" doxytag="RtMidiOut::~RtMidiOut" ></a>
+&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classRtMidiOut.html#a1">~RtMidiOut</a> ()</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The destructor closes any open MIDI connections. <br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classRtMidiOut.html#a2">openPort</a> (unsigned int portNumber=0)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Open a MIDI output connection. <a href="#a2"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a3" doxytag="RtMidiOut::closePort" ></a>
+void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classRtMidiOut.html#a3">closePort</a> ()</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Close an open MIDI connection (if one exists). <br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classRtMidiOut.html#a4">openVirtualPort</a> ()</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a virtual output port to allow software connections (OS X and ALSA only). <a href="#a4"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a5" doxytag="RtMidiOut::getPortCount" ></a>
+unsigned int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classRtMidiOut.html#a5">getPortCount</a> ()</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return the number of available MIDI output ports. <br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>std::string&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classRtMidiOut.html#a6">getPortName</a> (unsigned int portNumber)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return a string identifier for the specified MIDI port type and number. <a href="#a6"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classRtMidiOut.html#a7">sendMessage</a> (std::vector&lt; unsigned char &gt; *message)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Immediately send a single message out an open MIDI output port. <a href="#a7"></a><br><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
-A realtime MIDI output class.
+A realtime MIDI output class.
<p>
This class provides a common, platform-independent API for MIDI output. It allows one to probe available MIDI output ports, to connect to one such port, and to send MIDI bytes immediately over the connection. Create multiple instances of this class to connect to more than one MIDI device at the same time.<p>
by Gary P. Scavone, 2003-2004.
<p>
<hr><h2>Constructor &amp; Destructor Documentation</h2>
-<a name="a0" doxytag="RtMidiOut::RtMidiOut"></a><p>
-<table width="100%" cellpadding="2" cellspacing="0" border="0">
+<a class="anchor" name="a0" doxytag="RtMidiOut::RtMidiOut" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
<tr>
- <td class="md">
+ <td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> RtMidiOut::RtMidiOut </td>
<td class="md" valign="top">(&nbsp;</td>
- <td class="mdname1" valign="top" nowrap>&nbsp; </td>
- <td class="md" valign="top">)&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
<td class="md" nowrap></td>
</tr>
@@ -73,23 +81,23 @@ by Gary P. Scavone, 2003-2004.
<td>
<p>
-Default constructor.
+Default constructor.
<p>
An exception will be thrown if a MIDI system initialization error occurs. </td>
</tr>
</table>
<hr><h2>Member Function Documentation</h2>
-<a name="a2" doxytag="RtMidiOut::openPort"></a><p>
-<table width="100%" cellpadding="2" cellspacing="0" border="0">
+<a class="anchor" name="a2" doxytag="RtMidiOut::openPort" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
<tr>
- <td class="md">
+ <td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> void RtMidiOut::openPort </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">unsigned int&nbsp;</td>
- <td class="mdname1" valign="top" nowrap>&nbsp; <em>portNumber</em> = 0 </td>
- <td class="md" valign="top">)&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>portNumber</em> = 0 </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
<td class="md" nowrap><code> [virtual]</code></td>
</tr>
@@ -105,23 +113,23 @@ An exception will be thrown if a MIDI system initialization error occurs. </
<td>
<p>
-Open a MIDI output connection.
+Open a MIDI output connection.
<p>
An optional port number greater than 0 can be specified. Otherwise, the default or first port found is opened. An exception is thrown if an error occurs while attempting to make the port connection.
<p>
Implements <a class="el" href="classRtMidi.html">RtMidi</a>. </td>
</tr>
</table>
-<a name="a4" doxytag="RtMidiOut::openVirtualPort"></a><p>
-<table width="100%" cellpadding="2" cellspacing="0" border="0">
+<a class="anchor" name="a4" doxytag="RtMidiOut::openVirtualPort" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
<tr>
- <td class="md">
+ <td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> void RtMidiOut::openVirtualPort </td>
<td class="md" valign="top">(&nbsp;</td>
- <td class="mdname1" valign="top" nowrap>&nbsp; </td>
- <td class="md" valign="top">)&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
<td class="md" nowrap></td>
</tr>
@@ -137,22 +145,22 @@ Implements <a class="el" href="classRtMidi.html">RtMidi</a>. </td>
<td>
<p>
-Create a virtual output port to allow software connections (OS X and ALSA only).
+Create a virtual output port to allow software connections (OS X and ALSA only).
<p>
This function creates a virtual MIDI output port to which other software applications can connect. This type of functionality is currently only supported by the Macintosh OS-X and Linux ALSA APIs (the function does nothing with the other APIs). An exception is thrown if an error occurs while attempting to create the virtual port. </td>
</tr>
</table>
-<a name="a6" doxytag="RtMidiOut::getPortName"></a><p>
-<table width="100%" cellpadding="2" cellspacing="0" border="0">
+<a class="anchor" name="a6" doxytag="RtMidiOut::getPortName" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
<tr>
- <td class="md">
+ <td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> std::string RtMidiOut::getPortName </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">unsigned int&nbsp;</td>
- <td class="mdname1" valign="top" nowrap>&nbsp; <em>portNumber</em> </td>
- <td class="md" valign="top">)&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>portNumber</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
<td class="md" nowrap></td>
</tr>
@@ -168,22 +176,22 @@ This function creates a virtual MIDI output port to which other software applica
<td>
<p>
-Return a string identifier for the specified MIDI port type and number.
+Return a string identifier for the specified MIDI port type and number.
<p>
An exception is thrown if an invalid port specifier is provided. </td>
</tr>
</table>
-<a name="a7" doxytag="RtMidiOut::sendMessage"></a><p>
-<table width="100%" cellpadding="2" cellspacing="0" border="0">
+<a class="anchor" name="a7" doxytag="RtMidiOut::sendMessage" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
<tr>
- <td class="md">
+ <td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> void RtMidiOut::sendMessage </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">std::vector&lt; unsigned char &gt; *&nbsp;</td>
- <td class="mdname1" valign="top" nowrap>&nbsp; <em>message</em> </td>
- <td class="md" valign="top">)&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>message</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
<td class="md" nowrap></td>
</tr>
@@ -199,7 +207,7 @@ An exception is thrown if an invalid port specifier is provided. </td>
<td>
<p>
-Immediately send a single message out an open MIDI output port.
+Immediately send a single message out an open MIDI output port.
<p>
An exception is thrown if an error occurs during output or an output connection was not previously established. </td>
</tr>
diff --git a/doc/html/doxygen.css b/doc/html/doxygen.css
index 8cb8b2e..0ce7521 100644
--- a/doc/html/doxygen.css
+++ b/doc/html/doxygen.css
@@ -1,49 +1,212 @@
-H1 { text-align: center; }
+H1 {
+ text-align: center;
+ font-family: Arial, Helvetica, sans-serif;
+}
+H2 {
+ font-family: Geneva, Arial, Helvetica, sans-serif;
+}
CAPTION { font-weight: bold }
-A.qindex {}
-A.qindexRef {}
+DIV.qindex {
+ width: 100%;
+ background-color: #eeeeff;
+ border: 1px solid #B0B0B0;
+ text-align: center;
+ margin: 2px;
+ padding: 2px;
+}
+A.qindex {
+ text-decoration: none;
+ font-weight: bold;
+ color: #1A419D;
+ padding: 2px;
+}
+A.qindex:visited {
+ text-decoration: none;
+ font-weight: bold;
+ color: #1A419D
+ padding: 2px;
+}
+A.qindex:hover {
+ text-decoration: none;
+ background-color: #ddddff;
+ padding: 2px;
+}
+A.qindexHL {
+ text-decoration: none;
+ font-weight: bold;
+ background-color: #6666cc;
+ color: #ffffff;
+ padding: 2 6px;
+ border: 1px double #9295C2;
+ }
+A.qindexHL:hover {
+ text-decoration: none;
+ background-color: #6666cc;
+ color: #ffffff;
+ padding: 2px 6px;
+}
+A.qindexHL:visited { text-decoration: none; background-color: #6666cc; color: #ffffff }
A.el { text-decoration: none; font-weight: bold }
A.elRef { font-weight: bold }
-A.code { text-decoration: none; font-weight: normal; color: #4444ee }
-A.codeRef { font-weight: normal; color: #4444ee }
+A.code { text-decoration: none; font-weight: normal; color: #1A419D}
+A.codeRef { font-weight: normal; color: #1A419D}
A:hover { text-decoration: none; background-color: #f2f2ff }
DL.el { margin-left: -1cm }
-DIV.fragment { width: 100%; border: none; background-color: #eeeeee }
+PRE.fragment {
+ border: 1px solid #CCCCCC;
+ background-color: #f5f5f5;
+ margin-top: 4px;
+ margin-bottom: 4px;
+ margin-left: 2px;
+ margin-right: 8px;
+ padding-left: 6px;
+ padding-right: 6px;
+ padding-top: 4px;
+ padding-bottom: 4px;
+}
+DIV.fragment {
+ border: 1px solid #CCCCCC;
+ background-color: #f5f5f5;
+ padding: 6px;
+}
DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px }
-TD.md { background-color: #f2f2ff; font-weight: bold; }
-TD.mdname1 { background-color: #f2f2ff; font-weight: bold; color: #602020; }
-TD.mdname { background-color: #f2f2ff; font-weight: bold; color: #602020; width: 600px; }
+TD.md { background-color: #F4F4FB; font-weight: bold; }
+TD.mdname1 { background-color: #F4F4FB; font-weight: bold; color: #602020; }
+TD.mdname { background-color: #F4F4FB; font-weight: bold; color: #602020; width: 600px; }
DIV.groupHeader { margin-left: 16px; margin-top: 12px; margin-bottom: 6px; font-weight: bold }
DIV.groupText { margin-left: 16px; font-style: italic; font-size: smaller }
-BODY { background: white; color: black }
-TD.indexkey {
- background-color: #eeeeff;
- font-weight: bold;
- padding-right : 10px;
- padding-top : 2px;
- padding-left : 10px;
- padding-bottom : 2px;
- margin-left : 0px;
- margin-right : 0px;
- margin-top : 2px;
- margin-bottom : 2px
-}
-TD.indexvalue {
- background-color: #eeeeff;
- font-style: italic;
- padding-right : 10px;
- padding-top : 2px;
- padding-left : 10px;
- padding-bottom : 2px;
- margin-left : 0px;
- margin-right : 0px;
- margin-top : 2px;
- margin-bottom : 2px
-}
-span.keyword { color: #008000 }
-span.keywordtype { color: #604020 }
-span.keywordflow { color: #e08000 }
-span.comment { color: #800000 }
-span.preprocessor { color: #806020 }
-span.stringliteral { color: #002080 }
-span.charliteral { color: #008080 }
+BODY {
+ background: white;
+ color: black;
+ margin-right: 20px;
+ margin-left: 20px;
+}
+TD.indexkey {
+ background-color: #eeeeff;
+ font-weight: bold;
+ padding-right : 10px;
+ padding-top : 2px;
+ padding-left : 10px;
+ padding-bottom : 2px;
+ margin-left : 0px;
+ margin-right : 0px;
+ margin-top : 2px;
+ margin-bottom : 2px;
+ border: 1px solid #CCCCCC;
+}
+TD.indexvalue {
+ background-color: #eeeeff;
+ font-style: italic;
+ padding-right : 10px;
+ padding-top : 2px;
+ padding-left : 10px;
+ padding-bottom : 2px;
+ margin-left : 0px;
+ margin-right : 0px;
+ margin-top : 2px;
+ margin-bottom : 2px;
+ border: 1px solid #CCCCCC;
+}
+TR.memlist {
+ background-color: #f0f0f0;
+}
+P.formulaDsp { text-align: center; }
+IMG.formulaDsp { }
+IMG.formulaInl { vertical-align: middle; }
+SPAN.keyword { color: #008000 }
+SPAN.keywordtype { color: #604020 }
+SPAN.keywordflow { color: #e08000 }
+SPAN.comment { color: #800000 }
+SPAN.preprocessor { color: #806020 }
+SPAN.stringliteral { color: #002080 }
+SPAN.charliteral { color: #008080 }
+.mdTable {
+ border: 1px solid #868686;
+ background-color: #F4F4FB;
+}
+.mdRow {
+ padding: 8px 10px;
+}
+.mdescLeft {
+ font-size: smaller;
+ font-family: Arial, Helvetica, sans-serif;
+ background-color: #FAFAFA;
+ padding-left: 8px;
+ border-top: 1px none #E0E0E0;
+ border-right: 1px none #E0E0E0;
+ border-bottom: 1px none #E0E0E0;
+ border-left: 1px none #E0E0E0;
+ margin: 0px;
+}
+.mdescRight {
+ font-size: smaller;
+ font-family: Arial, Helvetica, sans-serif;
+ font-style: italic;
+ background-color: #FAFAFA;
+ padding-left: 4px;
+ border-top: 1px none #E0E0E0;
+ border-right: 1px none #E0E0E0;
+ border-bottom: 1px none #E0E0E0;
+ border-left: 1px none #E0E0E0;
+ margin: 0px;
+ padding-bottom: 0px;
+ padding-right: 8px;
+}
+.memItemLeft {
+ padding: 1px 0px 0px 8px;
+ margin: 4px;
+ border-top-width: 1px;
+ border-right-width: 1px;
+ border-bottom-width: 1px;
+ border-left-width: 1px;
+ border-top-style: solid;
+ border-top-color: #E0E0E0;
+ border-right-color: #E0E0E0;
+ border-bottom-color: #E0E0E0;
+ border-left-color: #E0E0E0;
+ border-right-style: none;
+ border-bottom-style: none;
+ border-left-style: none;
+ background-color: #FAFAFA;
+ font-family: Geneva, Arial, Helvetica, sans-serif;
+ font-size: 12px;
+}
+.memItemRight {
+ padding: 1px 0px 0px 8px;
+ margin: 4px;
+ border-top-width: 1px;
+ border-right-width: 1px;
+ border-bottom-width: 1px;
+ border-left-width: 1px;
+ border-top-style: solid;
+ border-top-color: #E0E0E0;
+ border-right-color: #E0E0E0;
+ border-bottom-color: #E0E0E0;
+ border-left-color: #E0E0E0;
+ border-right-style: none;
+ border-bottom-style: none;
+ border-left-style: none;
+ background-color: #FAFAFA;
+ font-family: Geneva, Arial, Helvetica, sans-serif;
+ font-size: 13px;
+}
+.search { color: #003399;
+ font-weight: bold;
+}
+FORM.search {
+ margin-bottom: 0px;
+ margin-top: 0px;
+}
+INPUT.search { font-size: 75%;
+ color: #000080;
+ font-weight: normal;
+ background-color: #eeeeff;
+}
+TD.tiny { font-size: 75%;
+}
+a {
+ color: #252E78;
+}
+a:visited {
+ color: #3D2185;
+}
diff --git a/doc/html/doxygen.png b/doc/html/doxygen.png
index 96ae72c..9da55f9 100644
--- a/doc/html/doxygen.png
+++ b/doc/html/doxygen.png
Binary files differ
diff --git a/doc/html/files.html b/doc/html/files.html
index 7be5c13..0c11128 100644
--- a/doc/html/files.html
+++ b/doc/html/files.html
@@ -7,7 +7,7 @@
<CENTER>
<a class="qindex" href="index.html">Tutorial</a> &nbsp; <a class="qindex" href="annotated.html">Class/Enum List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </CENTER>
<HR>
-<!-- Generated by Doxygen 1.3-rc3 -->
+<!-- Generated by Doxygen 1.3.6 -->
<h1>RtMidi File List</h1>Here is a list of all documented files with brief descriptions:<table>
<tr><td class="indexkey"><b>RtError.h</b> <a href="RtError_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
<tr><td class="indexkey"><b>RtMidi.h</b> <a href="RtMidi_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
diff --git a/doc/html/functions.html b/doc/html/functions.html
index 1195328..116c8a9 100644
--- a/doc/html/functions.html
+++ b/doc/html/functions.html
@@ -7,8 +7,11 @@
<CENTER>
<a class="qindex" href="index.html">Tutorial</a> &nbsp; <a class="qindex" href="annotated.html">Class/Enum List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </CENTER>
<HR>
-<!-- Generated by Doxygen 1.3-rc3 -->
-<h1>RtMidi Compound Members</h1>Here is a list of all documented class members with links to the class documentation for each member:<ul>
+<!-- Generated by Doxygen 1.3.6 -->
+<div class="qindex"><a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_type.html">Typedefs</a> | <a class="qindex" href="functions_enum.html">Enumerations</a></div>
+
+<p>
+Here is a list of all documented class members with links to the class documentation for each member:<ul>
<li>cancelCallback()
: <a class="el" href="classRtMidiIn.html#a5">RtMidiIn</a><li>closePort()
: <a class="el" href="classRtMidiOut.html#a3">RtMidiOut</a>, <a class="el" href="classRtMidiIn.html#a6">RtMidiIn</a><li>getMessage()
@@ -21,13 +24,13 @@
: <a class="el" href="classRtMidiOut.html#a4">RtMidiOut</a>, <a class="el" href="classRtMidiIn.html#a3">RtMidiIn</a><li>printMessage()
: <a class="el" href="classRtError.html#a2">RtError</a><li>RtError()
: <a class="el" href="classRtError.html#a0">RtError</a><li>RtMidiCallback
-: <a class="el" href="classRtMidiIn.html#s0">RtMidiIn</a><li>RtMidiIn()
+: <a class="el" href="classRtMidiIn.html#w0">RtMidiIn</a><li>RtMidiIn()
: <a class="el" href="classRtMidiIn.html#a0">RtMidiIn</a><li>RtMidiOut()
: <a class="el" href="classRtMidiOut.html#a0">RtMidiOut</a><li>sendMessage()
: <a class="el" href="classRtMidiOut.html#a7">RtMidiOut</a><li>setCallback()
: <a class="el" href="classRtMidiIn.html#a4">RtMidiIn</a><li>setQueueSizeLimit()
: <a class="el" href="classRtMidiIn.html#a9">RtMidiIn</a><li>Type
-: <a class="el" href="classRtError.html#s11">RtError</a><li>~RtError()
+: <a class="el" href="classRtError.html#w11">RtError</a><li>~RtError()
: <a class="el" href="classRtError.html#a1">RtError</a><li>~RtMidiIn()
: <a class="el" href="classRtMidiIn.html#a1">RtMidiIn</a><li>~RtMidiOut()
: <a class="el" href="classRtMidiOut.html#a1">RtMidiOut</a></ul>
diff --git a/doc/html/functions_enum.html b/doc/html/functions_enum.html
new file mode 100644
index 0000000..74a527d
--- /dev/null
+++ b/doc/html/functions_enum.html
@@ -0,0 +1,25 @@
+<HTML>
+<HEAD>
+<TITLE>The RtMidi Tutorial</TITLE>
+<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
+</HEAD>
+<BODY BGCOLOR="#FFFFFF">
+<CENTER>
+<a class="qindex" href="index.html">Tutorial</a> &nbsp; <a class="qindex" href="annotated.html">Class/Enum List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </CENTER>
+<HR>
+<!-- Generated by Doxygen 1.3.6 -->
+<div class="qindex"><a class="qindex" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_type.html">Typedefs</a> | <a class="qindexHL" href="functions_enum.html">Enumerations</a></div>
+
+<p>
+<ul>
+<li>Type
+: <a class="el" href="classRtError.html#w11">RtError</a></ul>
+<HR>
+
+<table><tr><td><img src="../images/mcgill.gif" width=165></td>
+ <td>&copy;2003-2004 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
+</table>
+
+</BODY>
+</HTML>
diff --git a/doc/html/functions_func.html b/doc/html/functions_func.html
new file mode 100644
index 0000000..cc2ad93
--- /dev/null
+++ b/doc/html/functions_func.html
@@ -0,0 +1,43 @@
+<HTML>
+<HEAD>
+<TITLE>The RtMidi Tutorial</TITLE>
+<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
+</HEAD>
+<BODY BGCOLOR="#FFFFFF">
+<CENTER>
+<a class="qindex" href="index.html">Tutorial</a> &nbsp; <a class="qindex" href="annotated.html">Class/Enum List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </CENTER>
+<HR>
+<!-- Generated by Doxygen 1.3.6 -->
+<div class="qindex"><a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_func.html">Functions</a> | <a class="qindex" href="functions_type.html">Typedefs</a> | <a class="qindex" href="functions_enum.html">Enumerations</a></div>
+
+<p>
+<ul>
+<li>cancelCallback()
+: <a class="el" href="classRtMidiIn.html#a5">RtMidiIn</a><li>closePort()
+: <a class="el" href="classRtMidiOut.html#a3">RtMidiOut</a>, <a class="el" href="classRtMidiIn.html#a6">RtMidiIn</a><li>getMessage()
+: <a class="el" href="classRtError.html#a4">RtError</a>, <a class="el" href="classRtMidiIn.html#a11">RtMidiIn</a><li>getPortCount()
+: <a class="el" href="classRtMidiOut.html#a5">RtMidiOut</a>, <a class="el" href="classRtMidiIn.html#a7">RtMidiIn</a><li>getPortName()
+: <a class="el" href="classRtMidiOut.html#a6">RtMidiOut</a>, <a class="el" href="classRtMidiIn.html#a8">RtMidiIn</a><li>getType()
+: <a class="el" href="classRtError.html#a3">RtError</a><li>ignoreTypes()
+: <a class="el" href="classRtMidiIn.html#a10">RtMidiIn</a><li>openPort()
+: <a class="el" href="classRtMidiOut.html#a2">RtMidiOut</a>, <a class="el" href="classRtMidiIn.html#a2">RtMidiIn</a><li>openVirtualPort()
+: <a class="el" href="classRtMidiOut.html#a4">RtMidiOut</a>, <a class="el" href="classRtMidiIn.html#a3">RtMidiIn</a><li>printMessage()
+: <a class="el" href="classRtError.html#a2">RtError</a><li>RtError()
+: <a class="el" href="classRtError.html#a0">RtError</a><li>RtMidiIn()
+: <a class="el" href="classRtMidiIn.html#a0">RtMidiIn</a><li>RtMidiOut()
+: <a class="el" href="classRtMidiOut.html#a0">RtMidiOut</a><li>sendMessage()
+: <a class="el" href="classRtMidiOut.html#a7">RtMidiOut</a><li>setCallback()
+: <a class="el" href="classRtMidiIn.html#a4">RtMidiIn</a><li>setQueueSizeLimit()
+: <a class="el" href="classRtMidiIn.html#a9">RtMidiIn</a><li>~RtError()
+: <a class="el" href="classRtError.html#a1">RtError</a><li>~RtMidiIn()
+: <a class="el" href="classRtMidiIn.html#a1">RtMidiIn</a><li>~RtMidiOut()
+: <a class="el" href="classRtMidiOut.html#a1">RtMidiOut</a></ul>
+<HR>
+
+<table><tr><td><img src="../images/mcgill.gif" width=165></td>
+ <td>&copy;2003-2004 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
+</table>
+
+</BODY>
+</HTML>
diff --git a/doc/html/functions_type.html b/doc/html/functions_type.html
new file mode 100644
index 0000000..956c842
--- /dev/null
+++ b/doc/html/functions_type.html
@@ -0,0 +1,25 @@
+<HTML>
+<HEAD>
+<TITLE>The RtMidi Tutorial</TITLE>
+<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
+</HEAD>
+<BODY BGCOLOR="#FFFFFF">
+<CENTER>
+<a class="qindex" href="index.html">Tutorial</a> &nbsp; <a class="qindex" href="annotated.html">Class/Enum List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </CENTER>
+<HR>
+<!-- Generated by Doxygen 1.3.6 -->
+<div class="qindex"><a class="qindex" href="functions.html">All</a> | <a class="qindex" href="functions_func.html">Functions</a> | <a class="qindexHL" href="functions_type.html">Typedefs</a> | <a class="qindex" href="functions_enum.html">Enumerations</a></div>
+
+<p>
+<ul>
+<li>RtMidiCallback
+: <a class="el" href="classRtMidiIn.html#w0">RtMidiIn</a></ul>
+<HR>
+
+<table><tr><td><img src="../images/mcgill.gif" width=165></td>
+ <td>&copy;2003-2004 Gary P. Scavone, McGill University. All Rights Reserved.<br>
+ Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
+</table>
+
+</BODY>
+</HTML>
diff --git a/doc/html/hierarchy.html b/doc/html/hierarchy.html
index 548d919..818124a 100644
--- a/doc/html/hierarchy.html
+++ b/doc/html/hierarchy.html
@@ -7,7 +7,7 @@
<CENTER>
<a class="qindex" href="index.html">Tutorial</a> &nbsp; <a class="qindex" href="annotated.html">Class/Enum List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </CENTER>
<HR>
-<!-- Generated by Doxygen 1.3-rc3 -->
+<!-- Generated by Doxygen 1.3.6 -->
<h1>RtMidi Class Hierarchy</h1>This inheritance list is sorted roughly, but not completely, alphabetically:<ul>
<li><a class="el" href="classRtError.html">RtError</a>
<li><a class="el" href="classRtMidi.html">RtMidi</a>
diff --git a/doc/html/index.html b/doc/html/index.html
index 5972b27..df11852 100644
--- a/doc/html/index.html
+++ b/doc/html/index.html
@@ -7,11 +7,11 @@
<CENTER>
<a class="qindex" href="index.html">Tutorial</a> &nbsp; <a class="qindex" href="annotated.html">Class/Enum List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </CENTER>
<HR>
-<!-- Generated by Doxygen 1.3-rc3 -->
-<h1>The <a class="el" href="classRtMidi.html">RtMidi</a> Tutorial</h1>
+<!-- Generated by Doxygen 1.3.6 -->
+<h1>The <a class="el" href="classRtMidi.html">RtMidi</a> Tutorial </h1>
<p>
-<center><a class="el" href="index.html#intro">Introduction</a> &nbsp;&nbsp; <a class="el" href="index.html#download">Download</a> &nbsp;&nbsp; <a class="el" href="index.html#start">Getting Started</a> &nbsp;&nbsp; <a class="el" href="index.html#error">Error Handling</a> &nbsp;&nbsp; <a class="el" href="index.html#probing">Probing Ports</a> &nbsp;&nbsp; <a class="el" href="index.html#output">MIDI Output</a> &nbsp;&nbsp; <a class="el" href="index.html#input">MIDI Input</a> &nbsp;&nbsp; <a class="el" href="index.html#virtual">Virtual Ports</a> &nbsp;&nbsp; <a class="el" href="index.html#compiling">Compiling</a> &nbsp;&nbsp; <a class="el" href="index.html#debug">Debugging</a> &nbsp;&nbsp; <a class="el" href="index.html#apinotes">API Notes</a> &nbsp;&nbsp; <a class="el" href="index.html#license">License</a> </center><h2><a name="intro"></a>
-Introduction</h2>
+<center><a class="el" href="index.html#intro">Introduction</a> &nbsp;&nbsp; <a class="el" href="index.html#download">Download</a> &nbsp;&nbsp; <a class="el" href="index.html#start">Getting Started</a> &nbsp;&nbsp; <a class="el" href="index.html#error">Error Handling</a> &nbsp;&nbsp; <a class="el" href="index.html#probing">Probing Ports</a> &nbsp;&nbsp; <a class="el" href="index.html#output">MIDI Output</a> &nbsp;&nbsp; <a class="el" href="index.html#input">MIDI Input</a> &nbsp;&nbsp; <a class="el" href="index.html#virtual">Virtual Ports</a> &nbsp;&nbsp; <a class="el" href="index.html#compiling">Compiling</a> &nbsp;&nbsp; <a class="el" href="index.html#debug">Debugging</a> &nbsp;&nbsp; <a class="el" href="index.html#apinotes">API Notes</a> &nbsp;&nbsp; <a class="el" href="index.html#license">License</a></center><h2><a class="anchor" name="intro">
+Introduction</a></h2>
<a class="el" href="classRtMidi.html">RtMidi</a> is a set of C++ classes (<a class="el" href="classRtMidiIn.html">RtMidiIn</a> and <a class="el" href="classRtMidiOut.html">RtMidiOut</a>) which provide a common API (Application Programming Interface) for realtime MIDI input/output across Linux (ALSA), Macintosh OS X, SGI, and Windows (Multimedia Library) operating systems. <a class="el" href="classRtMidi.html">RtMidi</a> significantly simplifies the process of interacting with computer MIDI hardware and software. It was designed with the following goals:<p>
<ul>
<li>
@@ -24,14 +24,12 @@ only two header files and one source file for easy inclusion in programming proj
MIDI device enumeration </li>
</ul>
<p>
-MIDI input and output functionality are separated into two classes, <a class="el" href="classRtMidiIn.html">RtMidiIn</a> and <a class="el" href="classRtMidiOut.html">RtMidiOut</a>. Each class instance supports only a single MIDI connection. <a class="el" href="classRtMidi.html">RtMidi</a> does not provide timing functionality (i.e., output messages are sent immediately). Input messages are timestamped with delta times in seconds (via a <code>double</code> floating point type). MIDI data is passed to the user as raw bytes using an std::vector&lt;unsigned char&gt;.<h2><a name="download"></a>
-Download</h2>
-Latest Release (17 September 2004): <a href="http://music.mcgill.ca/~gary/rtmidi/release/rtmidi-1.0.0.tar.gz">Version 1.0.0 (154 kB tar/gzipped)</a><h2><a name="start"></a>
-Getting Started</h2>
+MIDI input and output functionality are separated into two classes, <a class="el" href="classRtMidiIn.html">RtMidiIn</a> and <a class="el" href="classRtMidiOut.html">RtMidiOut</a>. Each class instance supports only a single MIDI connection. <a class="el" href="classRtMidi.html">RtMidi</a> does not provide timing functionality (i.e., output messages are sent immediately). Input messages are timestamped with delta times in seconds (via a <code>double</code> floating point type). MIDI data is passed to the user as raw bytes using an std::vector&lt;unsigned char&gt;.<h2><a class="anchor" name="download">
+Download</a></h2>
+Latest Release (20 September 2004): <a href="http://music.mcgill.ca/~gary/rtmidi/release/rtmidi-1.0.1.tar.gz">Version 1.0.1 (111 kB tar/gzipped)</a><h2><a class="anchor" name="start">
+Getting Started</a></h2>
The first thing that must be done when using <a class="el" href="classRtMidi.html">RtMidi</a> is to create an instance of the <a class="el" href="classRtMidiIn.html">RtMidiIn</a> or <a class="el" href="classRtMidiOut.html">RtMidiOut</a> subclasses. <a class="el" href="classRtMidi.html">RtMidi</a> is an abstract base class, which itself cannot be instantiated. Each default constructor attempts to establish any necessary "connections" with the underlying MIDI system. <a class="el" href="classRtMidi.html">RtMidi</a> uses C++ exceptions to report errors, necessitating try/catch blocks around many member functions. An <a class="el" href="classRtError.html">RtError</a> can be thrown during instantiation in some circumstances. A warning message may also be reported if no MIDI devices are found during instantiation. The <a class="el" href="classRtMidi.html">RtMidi</a> classes have been designed to work with "hot pluggable" or virtual (software) MIDI devices, making it is possible to connect or start MIDI devices after the classes have been instantiated. The following code example demonstrates default object construction and destruction:<p>
-<div class="fragment"><pre>
-
-<span class="preprocessor">#include "RtMidi.h"</span>
+<pre class="fragment"><div><span class="preprocessor">#include "RtMidi.h"</span>
<span class="keywordtype">int</span> main()
{
@@ -49,14 +47,13 @@ The first thing that must be done when using <a class="el" href="classRtMidi.htm
<span class="comment">// Clean up</span>
<span class="keyword">delete</span> midiin;
}
-</pre></div><p>
-Obviously, this example doesn't demonstrate any of the real functionality of <a class="el" href="classRtMidi.html">RtMidi</a>. However, all uses of <a class="el" href="classRtMidi.html">RtMidi</a> must begin with construction and must end with class destruction. Further, it is necessary that all class methods which can throw a C++ exception be called within a try/catch block.<h2><a name="error"></a>
-Error Handling</h2>
-<a class="el" href="classRtMidi.html">RtMidi</a> uses a C++ exception handler called <a class="el" href="classRtError.html">RtError</a>, which is declared and defined in <a class="el" href="RtError_8h.html">RtError.h</a>. The <a class="el" href="classRtError.html">RtError</a> class is quite simple but it does allow errors to be "caught" by <a class="el" href="classRtError.html#s11">RtError::Type</a>. Many <a class="el" href="classRtMidi.html">RtMidi</a> methods can "throw" an <a class="el" href="classRtError.html">RtError</a>, most typically if a driver error occurs or an invalid function argument is specified. There are a number of cases within <a class="el" href="classRtMidi.html">RtMidi</a> where warning messages may be displayed but an exception is not thrown. There is a protected <a class="el" href="classRtMidi.html">RtMidi</a> method, error(), which can be modified to globally control how these messages are handled and reported. By default, error messages are not automatically displayed in <a class="el" href="classRtMidi.html">RtMidi</a> unless the preprocessor definition __RTMIDI_DEBUG__ is defined. Messages associated with caught exceptions can be displayed with, for example, the <a class="el" href="classRtError.html#a2">RtError::printMessage()</a> function.<h2><a name="probing"></a>
-Probing Ports</h2>
+</div></pre><p>
+Obviously, this example doesn't demonstrate any of the real functionality of <a class="el" href="classRtMidi.html">RtMidi</a>. However, all uses of <a class="el" href="classRtMidi.html">RtMidi</a> must begin with construction and must end with class destruction. Further, it is necessary that all class methods which can throw a C++ exception be called within a try/catch block.<h2><a class="anchor" name="error">
+Error Handling</a></h2>
+<a class="el" href="classRtMidi.html">RtMidi</a> uses a C++ exception handler called <a class="el" href="classRtError.html">RtError</a>, which is declared and defined in <a class="el" href="RtError_8h.html">RtError.h</a>. The <a class="el" href="classRtError.html">RtError</a> class is quite simple but it does allow errors to be "caught" by <a class="el" href="classRtError.html#w11">RtError::Type</a>. Many <a class="el" href="classRtMidi.html">RtMidi</a> methods can "throw" an <a class="el" href="classRtError.html">RtError</a>, most typically if a driver error occurs or an invalid function argument is specified. There are a number of cases within <a class="el" href="classRtMidi.html">RtMidi</a> where warning messages may be displayed but an exception is not thrown. There is a protected <a class="el" href="classRtMidi.html">RtMidi</a> method, error(), which can be modified to globally control how these messages are handled and reported. By default, error messages are not automatically displayed in <a class="el" href="classRtMidi.html">RtMidi</a> unless the preprocessor definition __RTMIDI_DEBUG__ is defined. Messages associated with caught exceptions can be displayed with, for example, the <a class="el" href="classRtError.html#a2">RtError::printMessage()</a> function.<h2><a class="anchor" name="probing">
+Probing Ports</a></h2>
A programmer may wish to query the available MIDI ports before deciding which to use. The following example outlines how this can be done.<p>
-<div class="fragment"><pre>
-<span class="comment">// midiinfo.cpp</span>
+<pre class="fragment"><div><span class="comment">// midiinfo.cpp</span>
<span class="preprocessor">#include &lt;iostream&gt;</span>
<span class="preprocessor">#include "RtMidi.h"</span>
@@ -121,12 +118,11 @@ A programmer may wish to query the available MIDI ports before deciding which to
<span class="keywordflow">return</span> 0;
}
-</pre></div><h2><a name="output"></a>
-MIDI Output</h2>
+</div></pre><h2><a class="anchor" name="output">
+MIDI Output</a></h2>
The <a class="el" href="classRtMidiOut.html">RtMidiOut</a> class provides simple functionality to immediately send messages over a MIDI connection. No timing functionality is provided.<p>
In the following example, we omit necessary error checking and details regarding OS-dependent sleep functions. For a complete example, see the <code>midiout.cpp</code> program in the <code>tests</code> directory.<p>
-<div class="fragment"><pre>
-<span class="comment">// midiout.cpp</span>
+<pre class="fragment"><div><span class="comment">// midiout.cpp</span>
<span class="preprocessor">#include &lt;iostream&gt;</span>
<span class="preprocessor">#include "RtMidi.h"</span>
@@ -179,15 +175,14 @@ In the following example, we omit necessary error checking and details regarding
<span class="keywordflow">return</span> 0;
}
-</pre></div><h2><a name="input"></a>
-MIDI Input</h2>
+</div></pre><h2><a class="anchor" name="input">
+MIDI Input</a></h2>
The <a class="el" href="classRtMidiIn.html">RtMidiIn</a> class uses an internal callback function or thread to receive incoming MIDI messages from a port or device. These messages are then either queued and read by the user via calls to the <a class="el" href="classRtMidiIn.html#a11">RtMidiIn::getMessage()</a> function or immediately passed to a user-specified callback function (which must be "registered" using the <a class="el" href="classRtMidiIn.html#a4">RtMidiIn::setCallback()</a> function). We'll provide examples of both usages.<p>
-The <a class="el" href="classRtMidiIn.html">RtMidiIn</a> class provides the <a class="el" href="classRtMidiIn.html#a10">RtMidiIn::ignoreTypes()</a> function to specify that certain MIDI message types be ignored. By default, sysem exclusive, timing, and active sensing messages are ignored.<h3><a name="qmidiin"></a>
-Queued MIDI Input</h3>
+The <a class="el" href="classRtMidiIn.html">RtMidiIn</a> class provides the <a class="el" href="classRtMidiIn.html#a10">RtMidiIn::ignoreTypes()</a> function to specify that certain MIDI message types be ignored. By default, sysem exclusive, timing, and active sensing messages are ignored.<h3><a class="anchor" name="qmidiin">
+Queued MIDI Input</a></h3>
The <a class="el" href="classRtMidiIn.html#a11">RtMidiIn::getMessage()</a> function does not block. If a MIDI message is available in the queue, it is copied to the user-provided <code>std::vector&lt;unsigned char&gt;</code> container. When no MIDI message is available, the function returns an empty container. The default maximum MIDI queue size is 1024 messages. This value may be modified with the <a class="el" href="classRtMidiIn.html#a9">RtMidiIn::setQueueSizeLimit()</a> function. If the maximum queue size limit is reached, subsequent MIDI messages are discarded until the queue size is reduced.<p>
In the following example, we omit some necessary error checking and details regarding OS-dependent sleep functions. For a more complete example, see the <code>qmidiin.cpp</code> program in the <code>tests</code> directory.<p>
-<div class="fragment"><pre>
-<span class="comment">// qmidiin.cpp</span>
+<pre class="fragment"><div><span class="comment">// qmidiin.cpp</span>
<span class="preprocessor">#include &lt;iostream&gt;</span>
<span class="preprocessor">#include &lt;signal.h&gt;</span>
@@ -216,7 +211,7 @@ In the following example, we omit some necessary error checking and details rega
<span class="comment">// Install an interrupt handler function.</span>
done = <span class="keyword">false</span>;
- (void) signal(SIGINT, finish);
+ (<span class="keywordtype">void</span>) signal(SIGINT, finish);
<span class="comment">// Periodically check input queue.</span>
std::cout &lt;&lt; <span class="stringliteral">"Reading MIDI from port ... quit with Ctrl-C.\n"</span>;
@@ -224,7 +219,7 @@ In the following example, we omit some necessary error checking and details rega
stamp = midiin-&gt;<a class="code" href="classRtMidiIn.html#a11">getMessage</a>( &amp;message );
nBytes = message.size();
<span class="keywordflow">for</span> ( i=0; i&lt;nBytes; i++ )
- std::cout &lt;&lt; <span class="stringliteral">"Byte "</span> &lt;&lt; i &lt;&lt; <span class="stringliteral">" = "</span> &lt;&lt; (int)message[i] &lt;&lt; <span class="stringliteral">", "</span>;
+ std::cout &lt;&lt; <span class="stringliteral">"Byte "</span> &lt;&lt; i &lt;&lt; <span class="stringliteral">" = "</span> &lt;&lt; (<span class="keywordtype">int</span>)message[i] &lt;&lt; <span class="stringliteral">", "</span>;
<span class="keywordflow">if</span> ( nBytes &gt; 0 )
std::cout &lt;&lt; <span class="stringliteral">"stamp = "</span> &lt;&lt; stamp &lt;&lt; <span class="charliteral">'\n'</span>;
@@ -238,12 +233,11 @@ In the following example, we omit some necessary error checking and details rega
<span class="keywordflow">return</span> 0;
}
-</pre></div><h3><a name="cmidiin"></a>
-MIDI Input with User Callback</h3>
+</div></pre><h3><a class="anchor" name="cmidiin">
+MIDI Input with User Callback</a></h3>
When set, a user-provided callback function will be invoked after the input of a complete MIDI message. It is possible to provide a pointer to user data which can be accessed in the callback function (not shown here). It is necessary to set the callback function immediately after opening the port to avoid having incoming messages written to the queue (which is not emptied when a callback function is set). If you are worried about this happening, you can check the queue using the RtMidi::getMessage() function to verify it is empty (after the callback function is set).<p>
In the following example, we omit some necessary error checking. For a more complete example, see the <code>cmidiin.cpp</code> program in the <code>tests</code> directory.<p>
-<div class="fragment"><pre>
-<span class="comment">// cmidiin.cpp</span>
+<pre class="fragment"><div><span class="comment">// cmidiin.cpp</span>
<span class="preprocessor">#include &lt;iostream&gt;</span>
<span class="preprocessor">#include "RtMidi.h"</span>
@@ -252,7 +246,7 @@ In the following example, we omit some necessary error checking. For a more comp
{
<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nBytes = message-&gt;size();
<span class="keywordflow">for</span> ( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i=0; i&lt;nBytes; i++ )
- std::cout &lt;&lt; <span class="stringliteral">"Byte "</span> &lt;&lt; i &lt;&lt; <span class="stringliteral">" = "</span> &lt;&lt; (int)message-&gt;at(i) &lt;&lt; <span class="stringliteral">", "</span>;
+ std::cout &lt;&lt; <span class="stringliteral">"Byte "</span> &lt;&lt; i &lt;&lt; <span class="stringliteral">" = "</span> &lt;&lt; (<span class="keywordtype">int</span>)message-&gt;at(i) &lt;&lt; <span class="stringliteral">", "</span>;
<span class="keywordflow">if</span> ( nBytes &gt; 0 )
std::cout &lt;&lt; <span class="stringliteral">"stamp = "</span> &lt;&lt; deltatime &lt;&lt; <span class="charliteral">'\n'</span>;
}
@@ -288,16 +282,16 @@ In the following example, we omit some necessary error checking. For a more comp
<span class="keywordflow">return</span> 0;
}
-</pre></div><h2><a name="virtual"></a>
-Virtual Ports</h2>
-The Linux ALSA and Macintosh CoreMIDI APIs allow for the establishment of virtual input and output MIDI ports to which other software clients can connect. <a class="el" href="classRtMidi.html">RtMidi</a> incorporates this functionality with the <a class="el" href="classRtMidiIn.html#a3">RtMidiIn::openVirtualPort()</a> and <a class="el" href="classRtMidiOut.html#a4">RtMidiOut::openVirtualPort()</a> functions. Any messages sent with the <a class="el" href="classRtMidiOut.html#a7">RtMidiOut::sendMessage()</a> function will also be transmitted through an open virtual output port. If a virtual input port is open and a user callback function is set, the callback function will be invoked when messages arrive via that port. If a callback function is not set, the user must poll the input queue to check whether messages have arrived. No notification is provided for the establishment of a client connection via a virtual port.<h2><a name="compiling"></a>
-Compiling</h2>
+</div></pre><h2><a class="anchor" name="virtual">
+Virtual Ports</a></h2>
+The Linux ALSA and Macintosh CoreMIDI APIs allow for the establishment of virtual input and output MIDI ports to which other software clients can connect. <a class="el" href="classRtMidi.html">RtMidi</a> incorporates this functionality with the <a class="el" href="classRtMidiIn.html#a3">RtMidiIn::openVirtualPort()</a> and <a class="el" href="classRtMidiOut.html#a4">RtMidiOut::openVirtualPort()</a> functions. Any messages sent with the <a class="el" href="classRtMidiOut.html#a7">RtMidiOut::sendMessage()</a> function will also be transmitted through an open virtual output port. If a virtual input port is open and a user callback function is set, the callback function will be invoked when messages arrive via that port. If a callback function is not set, the user must poll the input queue to check whether messages have arrived. No notification is provided for the establishment of a client connection via a virtual port.<h2><a class="anchor" name="compiling">
+Compiling</a></h2>
In order to compile <a class="el" href="classRtMidi.html">RtMidi</a> for a specific OS and API, it is necessary to supply the appropriate preprocessor definition and library within the compiler statement: <p>
<table border="2" cols="5" width="100%" cellspacing="3" cellpadding="3">
<tr bgcolor="beige">
<td width="5%"><b>OS:</b> </td><td width="5%"><b>Audio API:</b> </td><td width="5%"><b>Preprocessor Definition:</b> </td><td width="5%"><b>Library or Framework:</b> </td><td><b>Example Compiler Statement:</b> </td></tr>
<tr>
-<td>Linux </td><td>ALSA </td><td>__LINUX_ALSA__ </td><td><code>asound, pthread</code> </td><td><code>g++ -Wall -D__LINUX_ALSA__ -o midiinfo midiinfo.cpp RtMidi.cpp -lasound -lpthread</code> </td></tr>
+<td>Linux </td><td>ALSA Sequencer </td><td>__LINUX_ALSASEQ__ </td><td><code>asound, pthread</code> </td><td><code>g++ -Wall -D__LINUX_ALSASEQ__ -o midiinfo midiinfo.cpp RtMidi.cpp -lasound -lpthread</code> </td></tr>
<tr>
<td>Macintosh OS X </td><td>CoreAudio </td><td>__MACOSX_CORE__ </td><td><code>pthread, stdc++, CoreAudio</code> </td><td><code>g++ -Wall -D__MACOSX_CORE__ -o midiinfo midiinfo.cpp RtMidi.cpp -framework CoreMidi -lpthread</code> </td></tr>
<tr>
@@ -306,26 +300,26 @@ In order to compile <a class="el" href="classRtMidi.html">RtMidi</a> for a speci
<td>Windows </td><td>Multimedia Library </td><td>__WINDOWS_MM__ </td><td><code>winmm.lib, multithreaded</code> </td><td><em>compiler specific</em> </td></tr>
</table>
<p>
-The example compiler statements above could be used to compile the <code>probe.cpp</code> example file, assuming that <code>midiinfo.cpp</code>, <code><a class="el" href="RtMidi_8h.html">RtMidi.h</a></code>, <code><a class="el" href="RtError_8h.html">RtError.h</a></code>, and <code>RtMidi.cpp</code> all exist in the same directory.<h2><a name="debug"></a>
-Debugging</h2>
-If you are having problems getting <a class="el" href="classRtMidi.html">RtMidi</a> to run on your system, try passing the preprocessor definition <code>__RTMIDI_DEBUG__</code> to the compiler (or uncomment the definition at the bottom of <a class="el" href="RtMidi_8h.html">RtMidi.h</a>). A variety of warning messages will be displayed which may help in determining the problem. Also try using the programs included in the <code>test</code> directory. The program <code>midiinfo</code> displays the queried capabilities of all MIDI ports found.<h2><a name="apinotes"></a>
-API Notes</h2>
-<a class="el" href="classRtMidi.html">RtMidi</a> is designed to provide a common API across the various supported operating systems and audio libraries. Despite that, some issues should be mentioned with regard to each.<h3><a name="linux"></a>
-Linux:</h3>
-<a class="el" href="classRtMidi.html">RtMidi</a> for Linux was developed using the Fedora distribution. A decision was made to not include support for the OSS API because the OSS API provides such limited functionality and because <a href="http://www.alsa-project.org/">ALSA</a> support is now incorporated in the Linux kernel. <a class="el" href="classRtMidi.html">RtMidi</a> uses the ALSA sequencer API, which allows for virtual software input and output ports.<h3><a name="macosx"></a>
-Macintosh OS X (CoreAudio):</h3>
-The Apple CoreMidi API allows for the establishment of virtual input and output ports to which other software applications can connect.<h3><a name="irix"></a>
-Irix (SGI):</h3>
-The Irix version of <a class="el" href="classRtMidi.html">RtMidi</a> was written and tested on an SGI Indy running Irix version 6.5.4 and the MD audio library.<h3><a name="windowsds"></a>
-Windows (Multimedia Library):</h3>
-The Windows Multimedia library MIDI calls used in <a class="el" href="classRtMidi.html">RtMidi</a> do not make use of streaming functionality. <a class="el" href="classRtMidi.html">RtMidi</a> was originally developed with Visual C++ version 6.0.<h2><a name="license"></a>
-License</h2>
+The example compiler statements above could be used to compile the <code>probe.cpp</code> example file, assuming that <code>midiinfo.cpp</code>, <code><a class="el" href="RtMidi_8h.html">RtMidi.h</a></code>, <code><a class="el" href="RtError_8h.html">RtError.h</a></code>, and <code>RtMidi.cpp</code> all exist in the same directory.<h2><a class="anchor" name="debug">
+Debugging</a></h2>
+If you are having problems getting <a class="el" href="classRtMidi.html">RtMidi</a> to run on your system, try passing the preprocessor definition <code>__RTMIDI_DEBUG__</code> to the compiler (or uncomment the definition at the bottom of <a class="el" href="RtMidi_8h.html">RtMidi.h</a>). A variety of warning messages will be displayed which may help in determining the problem. Also try using the programs included in the <code>test</code> directory. The program <code>midiinfo</code> displays the queried capabilities of all MIDI ports found.<h2><a class="anchor" name="apinotes">
+API Notes</a></h2>
+<a class="el" href="classRtMidi.html">RtMidi</a> is designed to provide a common API across the various supported operating systems and audio libraries. Despite that, some issues should be mentioned with regard to each.<h3><a class="anchor" name="linux">
+Linux:</a></h3>
+<a class="el" href="classRtMidi.html">RtMidi</a> for Linux was developed using the Fedora distribution. A decision was made to not include support for the OSS API because the OSS API provides such limited functionality and because <a href="http://www.alsa-project.org/">ALSA</a> support is now incorporated in the Linux kernel. <a class="el" href="classRtMidi.html">RtMidi</a> uses the ALSA sequencer API, which allows for virtual software input and output ports.<h3><a class="anchor" name="macosx">
+Macintosh OS X (CoreAudio):</a></h3>
+The Apple CoreMidi API allows for the establishment of virtual input and output ports to which other software applications can connect.<h3><a class="anchor" name="irix">
+Irix (SGI):</a></h3>
+The Irix version of <a class="el" href="classRtMidi.html">RtMidi</a> was written and tested on an SGI Indy running Irix version 6.5.4 and the MD audio library.<h3><a class="anchor" name="windowsds">
+Windows (Multimedia Library):</a></h3>
+The Windows Multimedia library MIDI calls used in <a class="el" href="classRtMidi.html">RtMidi</a> do not make use of streaming functionality. <a class="el" href="classRtMidi.html">RtMidi</a> was originally developed with Visual C++ version 6.0.<h2><a class="anchor" name="license">
+License</a></h2>
<a class="el" href="classRtMidi.html">RtMidi</a>: realtime MIDI i/o C++ classes<br>
Copyright (c) 2003-2004 Gary P. Scavone<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 requested to send the modifications to the original developer so that they can be incorporated into the canonical version.<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.<HR>
+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. <HR>
<table><tr><td><img src="../images/mcgill.gif" width=165></td>
<td>&copy;2003-2004 Gary P. Scavone, McGill University. All Rights Reserved.<br>
diff --git a/doxygen/html/MidiFileIn_8cpp-source.html b/doxygen/html/MidiFileIn_8cpp-source.html
deleted file mode 100755
index a7109dd..0000000
--- a/doxygen/html/MidiFileIn_8cpp-source.html
+++ /dev/null
@@ -1,350 +0,0 @@
-<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="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
-<HR>
-<!-- Generated by Doxygen 1.3-rc3 -->
-<h1>MidiFileIn.cpp</h1><div class="fragment"><pre>00001 <span class="comment">/**********************************************************************/</span>
-00016 <span class="comment">/**********************************************************************/</span>
-00017
-00018 <span class="preprocessor">#include "MidiFileIn.h"</span>
-00019 <span class="preprocessor">#include &lt;iostream&gt;</span>
-00020
-<a name="l00021"></a><a class="code" href="classMidiFileIn.html#a0">00021</a> <a class="code" href="classMidiFileIn.html#a0">MidiFileIn :: MidiFileIn</a>( std::string fileName )
-00022 {
-00023 <span class="comment">// Attempt to open the file.</span>
-00024 file_.open( fileName.c_str(), std::ios::in );
-00025 <span class="keywordflow">if</span> ( !file_ ) {
-00026 errorString_ &lt;&lt; <span class="stringliteral">"MidiFileIn: error opening or finding file ("</span> &lt;&lt; fileName &lt;&lt; <span class="stringliteral">")."</span>;
-00027 <a class="code" href="classStk.html#e0">handleError</a>( errorString_.str(), StkError::FILE_NOT_FOUND );
-00028 }
-00029
-00030 <span class="comment">// Parse header info.</span>
-00031 <span class="keywordtype">char</span> chunkType[4];
-00032 <span class="keywordtype">char</span> buffer[4];
-00033 SINT32 *length;
-00034 <span class="keywordflow">if</span> ( !file_.read( chunkType, 4 ) ) <span class="keywordflow">goto</span> error;
-00035 <span class="keywordflow">if</span> ( !file_.read( buffer, 4 ) ) <span class="keywordflow">goto</span> error;
-00036 length = (SINT32 *) &amp;buffer;
-00037 <span class="keywordflow">if</span> ( strncmp( chunkType, <span class="stringliteral">"MThd"</span>, 4 ) || ( *length != 6 ) ) {
-00038 errorString_ &lt;&lt; <span class="stringliteral">"MidiFileIn: file ("</span> &lt;&lt; fileName &lt;&lt; <span class="stringliteral">") does not appear to be a MIDI file!"</span>;
-00039 <a class="code" href="classStk.html#e0">handleError</a>( errorString_.str(), StkError::FILE_UNKNOWN_FORMAT );
-00040 }
-00041
-00042 <span class="comment">// Read the MIDI file format.</span>
-00043 SINT16 *data;
-00044 <span class="keywordflow">if</span> ( !file_.read( buffer, 2 ) ) <span class="keywordflow">goto</span> error;
-00045 data = (SINT16 *) &amp;buffer;
-00046 <span class="keywordflow">if</span> ( *data &lt; 0 || *data &gt; 2 ) {
-00047 errorString_ &lt;&lt; <span class="stringliteral">"MidiFileIn: the file ("</span> &lt;&lt; fileName &lt;&lt; <span class="stringliteral">") format is invalid!"</span>;
-00048 <a class="code" href="classStk.html#e0">handleError</a>( errorString_.str(), StkError::FILE_ERROR );
-00049 }
-00050 format_ = *data;
-00051
-00052 <span class="comment">// Read the number of tracks.</span>
-00053 <span class="keywordflow">if</span> ( !file_.read( buffer, 2 ) ) <span class="keywordflow">goto</span> error;
-00054 <span class="keywordflow">if</span> ( format_ == 0 &amp;&amp; *data != 1 ) {
-00055 errorString_ &lt;&lt; <span class="stringliteral">"MidiFileIn: invalid number of tracks (&gt;1) for a file format = 0!"</span>;
-00056 <a class="code" href="classStk.html#e0">handleError</a>( errorString_.str(), StkError::FILE_ERROR );
-00057 }
-00058 nTracks_ = *data;
-00059
-00060 <span class="comment">// Read the beat division.</span>
-00061 <span class="keywordflow">if</span> ( !file_.read( buffer, 2 ) ) <span class="keywordflow">goto</span> error;
-00062 division_ = (int) *data;
-00063 <span class="keywordtype">double</span> tickrate;
-00064 usingTimeCode_ = <span class="keyword">false</span>;
-00065 <span class="keywordflow">if</span> ( *data &amp; 0x8000 ) {
-00066 <span class="comment">// Determine ticks per second from time-code formats.</span>
-00067 tickrate = (double) -(*data &amp; 0x7F00);
-00068 <span class="comment">// If frames per second value is 29, it really should be 29.97.</span>
-00069 <span class="keywordflow">if</span> ( tickrate == 29.0 ) tickrate = 29.97;
-00070 tickrate *= (*data &amp; 0x00FF);
-00071 usingTimeCode_ = <span class="keyword">true</span>;
-00072 }
-00073 <span class="keywordflow">else</span> {
-00074 tickrate = (double) (*data &amp; 0x7FFF); <span class="comment">// ticks per quarter note</span>
-00075 }
-00076
-00077 <span class="comment">// Now locate the track offsets and lengths. If not using time</span>
-00078 <span class="comment">// code, we can initialize the "tick time" using a default tempo of</span>
-00079 <span class="comment">// 120 beats per minute. We will then check for tempo meta-events</span>
-00080 <span class="comment">// afterward.</span>
-00081 <span class="keywordflow">for</span> ( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i=0; i&lt;nTracks_; i++ ) {
-00082 <span class="keywordflow">if</span> ( !file_.read( chunkType, 4 ) ) <span class="keywordflow">goto</span> error;
-00083 <span class="keywordflow">if</span> ( strncmp( chunkType, <span class="stringliteral">"MTrk"</span>, 4 ) ) <span class="keywordflow">goto</span> error;
-00084 <span class="keywordflow">if</span> ( !file_.read( buffer, 4 ) ) <span class="keywordflow">goto</span> error;
-00085 length = (SINT32 *) &amp;buffer;
-00086 trackLengths_.push_back( *length );
-00087 trackOffsets_.push_back( file_.tellg() );
-00088 trackPointers_.push_back( file_.tellg() );
-00089 trackStatus_.push_back( 0 );
-00090 file_.seekg( *length, std::ios_base::cur );
-00091 <span class="keywordflow">if</span> ( usingTimeCode_ ) tickSeconds_.push_back( (<span class="keywordtype">double</span>) (1.0 / tickrate) );
-00092 <span class="keywordflow">else</span> tickSeconds_.push_back( (<span class="keywordtype">double</span>) (0.5 / tickrate) );
-00093 }
-00094
-00095 <span class="comment">// Save the initial tickSeconds parameter.</span>
-00096 TempoChange tempoEvent;
-00097 tempoEvent.count = 0;
-00098 tempoEvent.tickSeconds = tickSeconds_[0];
-00099 tempoEvents_.push_back( tempoEvent );
-00100
-00101 <span class="comment">// If format 1 and not using time code, parse and save the tempo map</span>
-00102 <span class="comment">// on track 0.</span>
-00103 <span class="keywordflow">if</span> ( format_ == 1 &amp;&amp; !usingTimeCode_ ) {
-00104 std::vector&lt;unsigned char&gt; event;
-00105 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> value, count;
-00106
-00107 <span class="comment">// We need to temporarily change the usingTimeCode_ value here so</span>
-00108 <span class="comment">// that the getNextEvent() function doesn't try to check the tempo</span>
-00109 <span class="comment">// map (which we're creating here).</span>
-00110 usingTimeCode_ = <span class="keyword">true</span>;
-00111 count = <a class="code" href="classMidiFileIn.html#a7">getNextEvent</a>( &amp;event, 0 );
-00112 <span class="keywordflow">while</span> ( event.size() ) {
-00113 <span class="keywordflow">if</span> ( ( event.size() == 6 ) &amp;&amp; ( event[0] == 0xff ) &amp;&amp;
-00114 ( event[1] == 0x51 ) &amp;&amp; ( event[2] == 0x03 ) ) {
-00115 tempoEvent.count = count;
-00116 value = ( event[3] &lt;&lt; 16 ) + ( event[4] &lt;&lt; 8 ) + event[5];
-00117 tempoEvent.tickSeconds = (double) (0.000001 * value / tickrate);
-00118 <span class="keywordflow">if</span> ( count &gt; tempoEvents_.back().count )
-00119 tempoEvents_.push_back( tempoEvent );
-00120 <span class="keywordflow">else</span>
-00121 tempoEvents_.back() = tempoEvent;
-00122 }
-00123 count += <a class="code" href="classMidiFileIn.html#a7">getNextEvent</a>( &amp;event, 0 );
-00124 }
-00125 <a class="code" href="classMidiFileIn.html#a5">rewindTrack</a>( 0 );
-00126 <span class="keywordflow">for</span> ( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i=0; i&lt;nTracks_; i++ ) {
-00127 trackCounters_.push_back( 0 );
-00128 trackTempoIndex_.push_back( 0 );
-00129 }
-00130 <span class="comment">// Change the time code flag back!</span>
-00131 usingTimeCode_ = <span class="keyword">false</span>;
-00132 }
-00133
-00134 <span class="keywordflow">return</span>;
-00135
-00136 error:
-00137 errorString_ &lt;&lt; <span class="stringliteral">"MidiFileIn: error reading from file ("</span> &lt;&lt; fileName &lt;&lt; <span class="stringliteral">")."</span>;
-00138 <a class="code" href="classStk.html#e0">handleError</a>( errorString_.str(), StkError::FILE_ERROR );
-00139 }
-00140
-<a name="l00141"></a><a class="code" href="classMidiFileIn.html#a1">00141</a> <a class="code" href="classMidiFileIn.html#a1">MidiFileIn :: ~MidiFileIn</a>()
-00142 {
-00143 <span class="comment">// An ifstream object implicitly closes itself during destruction</span>
-00144 <span class="comment">// but we'll make an explicit call to "close" anyway.</span>
-00145 file_.close();
-00146 }
-00147
-<a name="l00148"></a><a class="code" href="classMidiFileIn.html#a2">00148</a> <span class="keywordtype">int</span> <a class="code" href="classMidiFileIn.html#a2">MidiFileIn :: getFileFormat</a>()<span class="keyword"> const</span>
-00149 <span class="keyword"></span>{
-00150 <span class="keywordflow">return</span> format_;
-00151 }
-00152
-<a name="l00153"></a><a class="code" href="classMidiFileIn.html#a3">00153</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classMidiFileIn.html#a3">MidiFileIn :: getNumberOfTracks</a>()<span class="keyword"> const</span>
-00154 <span class="keyword"></span>{
-00155 <span class="keywordflow">return</span> nTracks_;
-00156 }
-00157
-<a name="l00158"></a><a class="code" href="classMidiFileIn.html#a4">00158</a> <span class="keywordtype">int</span> <a class="code" href="classMidiFileIn.html#a4">MidiFileIn :: getDivision</a>()<span class="keyword"> const</span>
-00159 <span class="keyword"></span>{
-00160 <span class="keywordflow">return</span> division_;
-00161 }
-00162
-<a name="l00163"></a><a class="code" href="classMidiFileIn.html#a5">00163</a> <span class="keywordtype">void</span> <a class="code" href="classMidiFileIn.html#a5">MidiFileIn :: rewindTrack</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> track )
-00164 {
-00165 <span class="keywordflow">if</span> ( track &gt;= nTracks_ ) {
-00166 errorString_ &lt;&lt; <span class="stringliteral">"MidiFileIn::getNextEvent: invalid track argument ("</span> &lt;&lt; track &lt;&lt; <span class="stringliteral">")."</span>;
-00167 <a class="code" href="classStk.html#e0">handleError</a>( errorString_.str(), StkError::FUNCTION_ARGUMENT );
-00168 }
-00169
-00170 trackPointers_[track] = trackOffsets_[track];
-00171 trackStatus_[track] = 0;
-00172 tickSeconds_[track] = tempoEvents_[0].tickSeconds;
-00173 }
-00174
-<a name="l00175"></a><a class="code" href="classMidiFileIn.html#a6">00175</a> <span class="keywordtype">double</span> <a class="code" href="classMidiFileIn.html#a6">MidiFileIn :: getTickSeconds</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> track )
-00176 {
-00177 <span class="comment">// Return the current tick value in seconds for the given track.</span>
-00178 <span class="keywordflow">if</span> ( track &gt;= nTracks_ ) {
-00179 errorString_ &lt;&lt; <span class="stringliteral">"MidiFileIn::getTickSeconds: invalid track argument ("</span> &lt;&lt; track &lt;&lt; <span class="stringliteral">")."</span>;
-00180 <a class="code" href="classStk.html#e0">handleError</a>( errorString_.str(), StkError::FUNCTION_ARGUMENT );
-00181 }
-00182
-00183 <span class="keywordflow">return</span> tickSeconds_[track];
-00184 }
-00185
-<a name="l00186"></a><a class="code" href="classMidiFileIn.html#a7">00186</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="classMidiFileIn.html#a7">MidiFileIn :: getNextEvent</a>( std::vector&lt;unsigned char&gt; *event, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> track )
-00187 {
-00188 <span class="comment">// Fill the user-provided vector with the next event in the</span>
-00189 <span class="comment">// specified track (default = 0) and return the event delta time in</span>
-00190 <span class="comment">// ticks. This function assumes that the stored track pointer is</span>
-00191 <span class="comment">// positioned at the start of a track event. If the track has</span>
-00192 <span class="comment">// reached its end, the event vector size will be zero.</span>
-00193 <span class="comment">//</span>
-00194 <span class="comment">// If we have a format 0 or 2 file and we're not using timecode, we</span>
-00195 <span class="comment">// should check every meta-event for tempo changes and make</span>
-00196 <span class="comment">// appropriate updates to the tickSeconds_ parameter if so.</span>
-00197 <span class="comment">//</span>
-00198 <span class="comment">// If we have a format 1 file and we're not using timecode, keep a</span>
-00199 <span class="comment">// running sum of ticks for each track and update the tickSeconds_</span>
-00200 <span class="comment">// parameter as needed based on the stored tempo map.</span>
-00201
-00202 <span class="keywordflow">if</span> ( track &gt;= nTracks_ ) {
-00203 errorString_ &lt;&lt; <span class="stringliteral">"MidiFileIn::getNextEvent: invalid track argument ("</span> &lt;&lt; track &lt;&lt; <span class="stringliteral">")."</span>;
-00204 <a class="code" href="classStk.html#e0">handleError</a>( errorString_.str(), StkError::FUNCTION_ARGUMENT );
-00205 }
-00206
-00207 event-&gt;clear();
-00208 <span class="comment">// Check for the end of the track.</span>
-00209 <span class="keywordflow">if</span> ( (trackPointers_[track] - trackOffsets_[track]) &gt;= trackLengths_[track] )
-00210 <span class="keywordflow">return</span> 0;
-00211
-00212 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> ticks = 0, bytes = 0;
-00213 <span class="keywordtype">bool</span> isTempoEvent = <span class="keyword">false</span>;
-00214
-00215 <span class="comment">// Read the event delta time.</span>
-00216 file_.seekg( trackPointers_[track], std::ios_base::beg );
-00217 <span class="keywordflow">if</span> ( !readVariableLength( &amp;ticks ) ) <span class="keywordflow">goto</span> error;
-00218
-00219 <span class="comment">// Parse the event stream to determine the event length.</span>
-00220 <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> c;
-00221 <span class="keywordflow">if</span> ( !file_.read( (<span class="keywordtype">char</span> *)&amp;c, 1 ) ) <span class="keywordflow">goto</span> error;
-00222 <span class="keywordflow">switch</span> ( c ) {
-00223
-00224 <span class="keywordflow">case</span> 0xFF: <span class="comment">// A Meta-Event</span>
-00225 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> position;
-00226 trackStatus_[track] = 0;
-00227 event-&gt;push_back( c );
-00228 <span class="keywordflow">if</span> ( !file_.read( (<span class="keywordtype">char</span> *)&amp;c, 1 ) ) <span class="keywordflow">goto</span> error;
-00229 event-&gt;push_back( c );
-00230 <span class="keywordflow">if</span> ( format_ != 1 &amp;&amp; ( c == 0x51 ) ) isTempoEvent = <span class="keyword">true</span>;
-00231 position = file_.tellg();
-00232 <span class="keywordflow">if</span> ( !readVariableLength( &amp;bytes ) ) <span class="keywordflow">goto</span> error;
-00233 bytes += ( (<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span>)file_.tellg() - position );
-00234 file_.seekg( position, std::ios_base::beg );
-00235 <span class="keywordflow">break</span>;
-00236
-00237 <span class="keywordflow">case</span> 0xF0 || 0xF7: <span class="comment">// The start or continuation of a Sysex event</span>
-00238 trackStatus_[track] = 0;
-00239 event-&gt;push_back( c );
-00240 position = file_.tellg();
-00241 <span class="keywordflow">if</span> ( !readVariableLength( &amp;bytes ) ) <span class="keywordflow">goto</span> error;
-00242 bytes += ( (<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span>)file_.tellg() - position );
-00243 file_.seekg( position, std::ios_base::beg );
-00244 <span class="keywordflow">break</span>;
-00245
-00246 <span class="keywordflow">default</span>: <span class="comment">// Should be a MIDI channel event</span>
-00247 <span class="keywordflow">if</span> ( c &amp; 0x80 ) { <span class="comment">// MIDI status byte</span>
-00248 <span class="keywordflow">if</span> ( c &gt; 0xF0 ) <span class="keywordflow">goto</span> error;
-00249 trackStatus_[track] = c;
-00250 event-&gt;push_back( c );
-00251 c &amp;= 0xF0;
-00252 <span class="keywordflow">if</span> ( (c == 0xC0) || (c == 0xD0) ) bytes = 1;
-00253 <span class="keywordflow">else</span> bytes = 2;
-00254 }
-00255 <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( trackStatus_[track] &amp; 0x80 ) { <span class="comment">// Running status</span>
-00256 event-&gt;push_back( trackStatus_[track] );
-00257 event-&gt;push_back( c );
-00258 c = trackStatus_[track] &amp; 0xF0;
-00259 <span class="keywordflow">if</span> ( (c != 0xC0) &amp;&amp; (c != 0xD0) ) bytes = 1;
-00260 }
-00261 <span class="keywordflow">else</span> <span class="keywordflow">goto</span> error;
-00262
-00263 }
-00264
-00265 <span class="comment">// Read the rest of the event into the event vector.</span>
-00266 <span class="keywordflow">for</span> ( <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> i=0; i&lt;bytes; i++ ) {
-00267 <span class="keywordflow">if</span> ( !file_.read( (<span class="keywordtype">char</span> *)&amp;c, 1 ) ) <span class="keywordflow">goto</span> error;
-00268 event-&gt;push_back( c );
-00269 }
-00270
-00271 <span class="keywordflow">if</span> ( !usingTimeCode_ ) {
-00272 <span class="keywordflow">if</span> ( isTempoEvent ) {
-00273 <span class="comment">// Parse the tempo event and update tickSeconds_[track].</span>
-00274 <span class="keywordtype">double</span> tickrate = (double) (division_ &amp; 0x7FFF);
-00275 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> value = ( event-&gt;at(3) &lt;&lt; 16 ) + ( event-&gt;at(4) &lt;&lt; 8 ) + event-&gt;at(5);
-00276 tickSeconds_[track] = (double) (0.000001 * value / tickrate);
-00277 }
-00278
-00279 <span class="keywordflow">if</span> ( format_ == 1 ) {
-00280 <span class="comment">// Update track counter and check the tempo map.</span>
-00281 trackCounters_[track] += ticks;
-00282 TempoChange tempoEvent = tempoEvents_[ trackTempoIndex_[track] ];
-00283 <span class="keywordflow">if</span> ( trackCounters_[track] &gt;= tempoEvent.count ) {
-00284 trackTempoIndex_[track]++;
-00285 tickSeconds_[track] = tempoEvent.tickSeconds;
-00286 }
-00287 }
-00288 }
-00289
-00290 <span class="comment">// Save the current track pointer value.</span>
-00291 trackPointers_[track] = file_.tellg();
-00292
-00293 <span class="keywordflow">return</span> ticks;
-00294
-00295 error:
-00296 errorString_ &lt;&lt; <span class="stringliteral">"MidiFileIn::getNextEvent: file read error!"</span>;
-00297 <a class="code" href="classStk.html#e0">handleError</a>( errorString_.str(), StkError::FILE_ERROR );
-00298 <span class="keywordflow">return</span> 0;
-00299 }
-00300
-<a name="l00301"></a><a class="code" href="classMidiFileIn.html#a8">00301</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="classMidiFileIn.html#a8">MidiFileIn :: getNextMidiEvent</a>( std::vector&lt;unsigned char&gt; *midiEvent, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> track )
-00302 {
-00303 <span class="comment">// Fill the user-provided vector with the next MIDI event in the</span>
-00304 <span class="comment">// specified track (default = 0) and return the event delta time in</span>
-00305 <span class="comment">// ticks. Meta-Events preceeding this event are skipped and ignored.</span>
-00306 <span class="keywordflow">if</span> ( track &gt;= nTracks_ ) {
-00307 errorString_ &lt;&lt; <span class="stringliteral">"MidiFileIn::getNextMidiEvent: invalid track argument ("</span> &lt;&lt; track &lt;&lt; <span class="stringliteral">")."</span>;
-00308 <a class="code" href="classStk.html#e0">handleError</a>( errorString_.str(), StkError::FUNCTION_ARGUMENT );
-00309 }
-00310
-00311 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> ticks = <a class="code" href="classMidiFileIn.html#a7">getNextEvent</a>( midiEvent, track );
-00312 <span class="keywordflow">while</span> ( midiEvent-&gt;size() &amp;&amp; ( midiEvent-&gt;at(0) &gt;= 0xF0 ) ) {
-00313 <span class="keywordflow">for</span> ( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i=0; i&lt;midiEvent-&gt;size(); i++ )
-00314 std::cout &lt;&lt; <span class="stringliteral">"event byte = "</span> &lt;&lt; i &lt;&lt; <span class="stringliteral">", value = "</span> &lt;&lt; (int)midiEvent-&gt;at(i) &lt;&lt; std::endl;
-00315 ticks = <a class="code" href="classMidiFileIn.html#a7">getNextEvent</a>( midiEvent, track );
-00316 }
-00317
-00318 <span class="keywordflow">for</span> ( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i=0; i&lt;midiEvent-&gt;size(); i++ )
-00319 std::cout &lt;&lt; <span class="stringliteral">"event byte = "</span> &lt;&lt; i &lt;&lt; <span class="stringliteral">", value = "</span> &lt;&lt; (int)midiEvent-&gt;at(i) &lt;&lt; std::endl;
-00320
-00321 <span class="keywordflow">return</span> ticks;
-00322 }
-00323
-00324 <span class="keywordtype">bool</span> MidiFileIn :: readVariableLength( <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> *value )
-00325 {
-00326 <span class="comment">// It is assumed that this function is called with the file read</span>
-00327 <span class="comment">// pointer positioned at the start of a variable-length value. The</span>
-00328 <span class="comment">// function returns "true" if the value is successfully parsed and</span>
-00329 <span class="comment">// "false" otherwise.</span>
-00330 *value = 0;
-00331 <span class="keywordtype">char</span> c;
-00332
-00333 <span class="keywordflow">if</span> ( !file_.read( &amp;c, 1 ) ) <span class="keywordflow">return</span> <span class="keyword">false</span>;
-00334 *value = (<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span>) c;
-00335 <span class="keywordflow">if</span> ( *value &amp; 0x80 ) {
-00336 *value &amp;= 0x7f;
-00337 <span class="keywordflow">do</span> {
-00338 <span class="keywordflow">if</span> ( !file_.read( &amp;c, 1 ) ) <span class="keywordflow">return</span> <span class="keyword">false</span>;
-00339 *value = ( *value &lt;&lt; 7 ) + ( c &amp; 0x7f );
-00340 } <span class="keywordflow">while</span> ( c &amp; 0x80 );
-00341 }
-00342
-00343 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-00344 }
-</pre></div><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>
diff --git a/doxygen/html/MidiFileIn_8h-source.html b/doxygen/html/MidiFileIn_8h-source.html
deleted file mode 100755
index 235fda2..0000000
--- a/doxygen/html/MidiFileIn_8h-source.html
+++ /dev/null
@@ -1,93 +0,0 @@
-<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="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
-<HR>
-<!-- Generated by Doxygen 1.3-rc3 -->
-<h1>MidiFileIn.h</h1><div class="fragment"><pre>00001 <span class="comment">/**********************************************************************/</span>
-00016 <span class="comment">/**********************************************************************/</span>
-00017
-00018 <span class="preprocessor">#ifndef STK_MIDIFILEIN_H</span>
-00019 <span class="preprocessor"></span><span class="preprocessor">#define STK_MIDIFILEIN_H</span>
-00020 <span class="preprocessor"></span>
-00021 <span class="preprocessor">#include "Stk.h"</span>
-00022 <span class="preprocessor">#include &lt;string&gt;</span>
-00023 <span class="preprocessor">#include &lt;vector&gt;</span>
-00024 <span class="preprocessor">#include &lt;fstream&gt;</span>
-00025 <span class="preprocessor">#include &lt;sstream&gt;</span>
-00026
-<a name="l00027"></a><a class="code" href="classMidiFileIn.html">00027</a> <span class="keyword">class </span><a class="code" href="classMidiFileIn.html">MidiFileIn</a> : <span class="keyword">public</span> <a class="code" href="classStk.html">Stk</a>
-00028 {
-00029 <span class="keyword">public</span>:
-00031
-00035 <a class="code" href="classMidiFileIn.html#a0">MidiFileIn</a>( std::string fileName );
-00036
-00038 <a class="code" href="classMidiFileIn.html#a1">~MidiFileIn</a>();
-00039
-00041 <span class="keywordtype">int</span> <a class="code" href="classMidiFileIn.html#a2">getFileFormat</a>() <span class="keyword">const</span>;
-00042
-00044 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classMidiFileIn.html#a3">getNumberOfTracks</a>() <span class="keyword">const</span>;
-00045
-00047
-00052 <span class="keywordtype">int</span> <a class="code" href="classMidiFileIn.html#a4">getDivision</a>() <span class="keyword">const</span>;
-00053
-00055
-00059 <span class="keywordtype">void</span> <a class="code" href="classMidiFileIn.html#a5">rewindTrack</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> track = 0 );
-00060
-00062
-00069 <span class="keywordtype">double</span> <a class="code" href="classMidiFileIn.html#a6">getTickSeconds</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> track = 0 );
-00070
-00072
-00084 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="classMidiFileIn.html#a7">getNextEvent</a>( std::vector&lt;unsigned char&gt; *event, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> track = 0 );
-00085
-00087
-00097 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="classMidiFileIn.html#a8">getNextMidiEvent</a>( std::vector&lt;unsigned char&gt; *midiEvent, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> track = 0 );
-00098
-00099 <span class="keyword">protected</span>:
-00100
-00101 <span class="comment">// This protected class function is used for reading variable-length</span>
-00102 <span class="comment">// MIDI file values. It is assumed that this function is called with</span>
-00103 <span class="comment">// the file read pointer positioned at the start of a</span>
-00104 <span class="comment">// variable-length value. The function returns true if the value is</span>
-00105 <span class="comment">// successfully parsed. Otherwise, it returns false.</span>
-00106 <span class="keywordtype">bool</span> readVariableLength( <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> *value );
-00107
-00108 std::ifstream file_;
-00109 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nTracks_;
-00110 <span class="keywordtype">int</span> format_;
-00111 <span class="keywordtype">int</span> division_;
-00112 <span class="keywordtype">bool</span> usingTimeCode_;
-00113 std::vector&lt;double&gt; tickSeconds_;
-00114 std::vector&lt;long&gt; trackPointers_;
-00115 std::vector&lt;long&gt; trackOffsets_;
-00116 std::vector&lt;long&gt; trackLengths_;
-00117 std::vector&lt;char&gt; trackStatus_;
-00118 std::ostringstream errorString_;
-00119
-00120 <span class="comment">// This structure and the following variables are used to save and</span>
-00121 <span class="comment">// keep track of a format 1 tempo map (and the initial tickSeconds</span>
-00122 <span class="comment">// parameter for formats 0 and 2).</span>
-00123 <span class="keyword">struct </span>TempoChange {
-00124 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> count;
-00125 <span class="keywordtype">double</span> tickSeconds;
-00126 };
-00127 std::vector&lt;TempoChange&gt; tempoEvents_;
-00128 std::vector&lt;unsigned long&gt; trackCounters_;
-00129 std::vector&lt;unsigned int&gt; trackTempoIndex_;
-00130 };
-00131
-00132 <span class="preprocessor">#endif</span>
-</pre></div><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>
diff --git a/doxygen/html/RtError_8h-source.html b/doxygen/html/RtError_8h-source.html
deleted file mode 100755
index ce20468..0000000
--- a/doxygen/html/RtError_8h-source.html
+++ /dev/null
@@ -1,63 +0,0 @@
-<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="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
-<HR>
-<!-- Generated by Doxygen 1.3-rc3 -->
-<h1>RtError.h</h1><div class="fragment"><pre>00001 <span class="comment">/************************************************************************/</span>
-00010 <span class="comment">/************************************************************************/</span>
-00011
-00012 <span class="preprocessor">#ifndef RTERROR_H</span>
-00013 <span class="preprocessor"></span><span class="preprocessor">#define RTERROR_H</span>
-00014 <span class="preprocessor"></span>
-00015 <span class="preprocessor">#include &lt;iostream&gt;</span>
-00016 <span class="preprocessor">#include &lt;string&gt;</span>
-00017
-<a name="l00018"></a><a class="code" href="classRtError.html">00018</a> <span class="keyword">class </span><a class="code" href="classRtError.html">RtError</a>
-00019 {
-00020 <span class="keyword">public</span>:
-<a name="l00022"></a><a class="code" href="classRtError.html#s11">00022</a> <span class="keyword">enum</span> <a class="code" href="classRtError.html#s11">Type</a> {
-00023 WARNING,
-00024 DEBUG_WARNING,
-00025 UNSPECIFIED,
-00026 NO_DEVICES_FOUND,
-00027 INVALID_DEVICE,
-00028 INVALID_STREAM,
-00029 MEMORY_ERROR,
-00030 INVALID_PARAMETER,
-00031 DRIVER_ERROR,
-00032 SYSTEM_ERROR,
-00033 THREAD_ERROR
-00034 };
-00035
-00036 <span class="keyword">protected</span>:
-00037 std::string message_;
-00038 <a class="code" href="classRtError.html#s11">Type</a> type_;
-00039
-00040 <span class="keyword">public</span>:
-<a name="l00042"></a><a class="code" href="classRtError.html#a0">00042</a> <a class="code" href="classRtError.html#a0">RtError</a>(<span class="keyword">const</span> std::string&amp; message, Type type = RtError::UNSPECIFIED) : message_(message), type_(type) {}
-00043
-<a name="l00045"></a><a class="code" href="classRtError.html#a1">00045</a> <span class="keyword">virtual</span> <a class="code" href="classRtError.html#a1">~RtError</a>(<span class="keywordtype">void</span>) {}
-00046
-<a name="l00048"></a><a class="code" href="classRtError.html#a2">00048</a> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classRtError.html#a2">printMessage</a>(<span class="keywordtype">void</span>) { std::cout &lt;&lt; <span class="charliteral">'\n'</span> &lt;&lt; message_ &lt;&lt; <span class="stringliteral">"\n\n"</span>; }
-00049
-<a name="l00051"></a><a class="code" href="classRtError.html#a3">00051</a> <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="classRtError.html#s11">Type</a>&amp; <a class="code" href="classRtError.html#a3">getType</a>(<span class="keywordtype">void</span>) { <span class="keywordflow">return</span> type_; }
-00052
-<a name="l00054"></a><a class="code" href="classRtError.html#a4">00054</a> <span class="keyword">virtual</span> <span class="keyword">const</span> std::string&amp; <a class="code" href="classRtError.html#a4">getMessage</a>(<span class="keywordtype">void</span>) { <span class="keywordflow">return</span> message_; }
-00055 };
-00056
-00057 <span class="preprocessor">#endif</span>
-</pre></div><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>
diff --git a/doxygen/html/RtMidi_8cpp-source.html b/doxygen/html/RtMidi_8cpp-source.html
deleted file mode 100755
index 1b65b96..0000000
--- a/doxygen/html/RtMidi_8cpp-source.html
+++ /dev/null
@@ -1,482 +0,0 @@
-<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="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
-<HR>
-<!-- Generated by Doxygen 1.3-rc3 -->
-<h1>RtMidi.cpp</h1><div class="fragment"><pre>00001 <span class="comment">/**********************************************************************/</span>
-00010 <span class="comment">/**********************************************************************/</span>
-00011
-00012 <span class="preprocessor">#include "RtMidi.h"</span>
-00013 <span class="preprocessor">#include &lt;sstream&gt;</span>
-00014
-00015 RtMidi :: RtMidi()
-00016 : apiData_( 0 ), connected_( false )
-00017 {
-00018 }
-00019
-00020 <span class="keywordtype">void</span> RtMidi :: error( RtError::Type type )
-00021 {
-00022 <span class="keywordflow">if</span> (type == RtError::WARNING) {
-00023 std::cerr &lt;&lt; <span class="charliteral">'\n'</span> &lt;&lt; errorString_ &lt;&lt; <span class="stringliteral">"\n\n"</span>;
-00024 }
-00025 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (type == RtError::DEBUG_WARNING) {
-00026 <span class="preprocessor">#if defined(__RTMIDI_DEBUG__)</span>
-00027 <span class="preprocessor"></span> std::cerr &lt;&lt; <span class="charliteral">'\n'</span> &lt;&lt; errorString_ &lt;&lt; <span class="stringliteral">"\n\n"</span>;
-00028 <span class="preprocessor">#endif</span>
-00029 <span class="preprocessor"></span> }
-00030 <span class="keywordflow">else</span> {
-00031 std::cerr &lt;&lt; <span class="charliteral">'\n'</span> &lt;&lt; errorString_ &lt;&lt; <span class="stringliteral">"\n\n"</span>;
-00032 <span class="keywordflow">throw</span> <a class="code" href="classRtError.html#a0">RtError</a>( errorString_, type );
-00033 }
-00034 }
-00035
-<a name="l00036"></a><a class="code" href="classRtMidiIn.html#a0">00036</a> <a class="code" href="classRtMidiIn.html#a0">RtMidiIn :: RtMidiIn</a>() : <a class="code" href="classRtMidi.html">RtMidi</a>()
-00037 {
-00038 }
-00039
-<a name="l00040"></a><a class="code" href="classRtMidiIn.html#a1">00040</a> <a class="code" href="classRtMidiIn.html#a0">RtMidiIn :: RtMidiIn</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber, RtMidiCallback callback, <span class="keywordtype">void</span> *userData ) : <a class="code" href="classRtMidi.html">RtMidi</a>()
-00041
-00042 {
-00043 <span class="comment">// Attempt to make the connection.</span>
-00044 this-&gt;<a class="code" href="classRtMidiIn.html#a3">openPort</a>( portNumber, callback, userData );
-00045 }
-00046
-<a name="l00047"></a><a class="code" href="classRtMidiIn.html#a2">00047</a> <a class="code" href="classRtMidiIn.html#a2">RtMidiIn :: ~RtMidiIn</a>()
-00048 {
-00049 <a class="code" href="classRtMidiIn.html#a4">closePort</a>();
-00050 }
-00051
-<a name="l00052"></a><a class="code" href="classRtMidiOut.html#a0">00052</a> <a class="code" href="classRtMidiOut.html#a0">RtMidiOut :: RtMidiOut</a>() : <a class="code" href="classRtMidi.html">RtMidi</a>()
-00053 {
-00054 }
-00055
-<a name="l00056"></a><a class="code" href="classRtMidiOut.html#a1">00056</a> <a class="code" href="classRtMidiOut.html#a0">RtMidiOut :: RtMidiOut</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber ) : <a class="code" href="classRtMidi.html">RtMidi</a>()
-00057 {
-00058 <span class="comment">// Attempt to make the connection.</span>
-00059 this-&gt;<a class="code" href="classRtMidiOut.html#a3">openPort</a>( portNumber );
-00060 }
-00061
-<a name="l00062"></a><a class="code" href="classRtMidiOut.html#a2">00062</a> <a class="code" href="classRtMidiOut.html#a2">RtMidiOut :: ~RtMidiOut</a>()
-00063 {
-00064 <a class="code" href="classRtMidiOut.html#a4">closePort</a>();
-00065 }
-00066
-00067
-00068 <span class="preprocessor">#if defined(__MACOSX_CORE__)</span>
-00069 <span class="preprocessor"></span>
-00070 <span class="comment">// The CoreMIDI API is based on the use of a callback function for</span>
-00071 <span class="comment">// MIDI input. We convert the system specific time stamps to delta</span>
-00072 <span class="comment">// time values.</span>
-00073
-00074 <span class="comment">// OS-X CoreMIDI header files.</span>
-00075 <span class="preprocessor">#include &lt;CoreMIDI/CoreMIDI.h&gt;</span>
-00076 <span class="preprocessor">#include &lt;CoreAudio/HostTime.h&gt;</span>
-00077
-00078 <span class="comment">// A structure to hold variables related to the CoreMIDI API</span>
-00079 <span class="comment">// implementation.</span>
-00080 <span class="keyword">struct </span>CoreMidiData {
-00081 MIDIClientRef client;
-00082 MIDIPortRef port;
-00083 MIDIEndpointRef destinationId;
-00084 };
-00085
-00086 <span class="keywordtype">void</span> midiInputCallback( <span class="keyword">const</span> MIDIPacketList *list, <span class="keywordtype">void</span> *procRef, <span class="keywordtype">void</span> *srcRef )
-00087 {
-00088 RtMidiIn::RtMidiInData *data = static_cast&lt;RtMidiIn::RtMidiInData *&gt; (procRef);
-00089
-00090 <span class="keywordtype">bool</span> continueSysex = <span class="keyword">false</span>;
-00091 <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> status;
-00092 <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> nBytes, iByte, size;
-00093 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">long</span> time;
-00094 RtMidiIn::MidiMessage message;
-00095 <span class="keyword">const</span> MIDIPacket *packet = &amp;list-&gt;packet[0];
-00096 <span class="keywordflow">for</span> ( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i=0; i&lt;list-&gt;numPackets; ++i ) {
-00097
-00098 <span class="comment">// My interpretation of the CoreMIDI documentation: all message</span>
-00099 <span class="comment">// types, except sysex, are complete within a packet and there may</span>
-00100 <span class="comment">// be several of them in a single packet. Sysex messages can be</span>
-00101 <span class="comment">// broken across multiple packets but are bundled alone within a</span>
-00102 <span class="comment">// packet. I'm assuming that sysex messages, if segmented, must</span>
-00103 <span class="comment">// be complete within the same MIDIPacketList.</span>
-00104
-00105 nBytes = packet-&gt;length;
-00106 <span class="keywordflow">if</span> ( nBytes == 0 ) <span class="keywordflow">continue</span>;
-00107
-00108 <span class="comment">// Calculate time stamp.</span>
-00109 message.timeStamp = 0.0;
-00110 time = packet-&gt;timeStamp;
-00111 time -= data-&gt;lastTime;
-00112 data-&gt;lastTime = packet-&gt;timeStamp;
-00113 time = AudioConvertHostTimeToNanos( time );
-00114 message.timeStamp = time * 0.000000001;
-00115
-00116 iByte = 0;
-00117 <span class="keywordflow">if</span> ( continueSysex ) {
-00118 <span class="comment">// We have a continuing, segmented sysex message.</span>
-00119 <span class="keywordflow">if</span> ( !(data-&gt;ignoreFlags &amp; 0x01) ) {
-00120 <span class="comment">// If we're not ignoring sysex messages, copy the entire packet.</span>
-00121 message.bytes.assign( packet-&gt;data, &amp;packet-&gt;data[nBytes] );
-00122 }
-00123 <span class="keywordflow">if</span> ( packet-&gt;data[nBytes] == 0xF7 ) continueSysex = <span class="keyword">false</span>;
-00124 <span class="keywordflow">if</span> ( !continueSysex ) {
-00125 <span class="comment">// If not a continuing sysex message, invoke the user callback function or queue the message.</span>
-00126 <span class="keywordflow">if</span> ( data-&gt;usingCallback &amp;&amp; message.bytes.size() &gt; 0 ) {
-00127 <a class="code" href="classRtMidiIn.html#s0">RtMidiIn::RtMidiCallback</a> callback = (RtMidiIn::RtMidiCallback) data-&gt;userCallback;
-00128 callback( message.timeStamp, &amp;message.bytes, data-&gt;userData );
-00129 }
-00130 <span class="keywordflow">else</span> {
-00131 <span class="comment">// As long as we haven't reached our queue size limit, push the message.</span>
-00132 <span class="keywordflow">if</span> ( data-&gt;queueLimit &gt; data-&gt;queue.size() )
-00133 data-&gt;queue.push( message );
-00134 <span class="keywordflow">else</span>
-00135 std::cerr &lt;&lt; <span class="stringliteral">"\nRtMidiIn: message queue limit reached!!\n\n"</span>;
-00136 }
-00137 message.bytes.clear();
-00138 }
-00139 }
-00140 <span class="keywordflow">else</span> {
-00141 <span class="keywordflow">while</span> ( iByte &lt; nBytes ) {
-00142 size = 0;
-00143 <span class="comment">// We are expecting that the next byte in the packet is a status byte.</span>
-00144 status = packet-&gt;data[iByte];
-00145 <span class="keywordflow">if</span> ( !(status &amp; 0x80) ) <span class="keywordflow">break</span>;
-00146 <span class="comment">// Determine the number of bytes in the MIDI message.</span>
-00147 <span class="keywordflow">if</span> ( status &lt; 0xC0 ) size = 3;
-00148 <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( status &lt; 0xE0 ) size = 2;
-00149 <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( status &lt; 0xF0 ) size = 3;
-00150 <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( status == 0xF0 ) {
-00151 <span class="comment">// A MIDI sysex</span>
-00152 <span class="keywordflow">if</span> ( data-&gt;ignoreFlags &amp; 0x01 ) {
-00153 size = 0;
-00154 iByte = nBytes;
-00155 }
-00156 <span class="keywordflow">else</span> size = nBytes - iByte;
-00157 <span class="keywordflow">if</span> ( packet-&gt;data[nBytes] == 0xF7 ) continueSysex = <span class="keyword">false</span>;
-00158 }
-00159 <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( status &lt; 0xF3 ) {
-00160 <span class="keywordflow">if</span> ( status == 0xF1 &amp;&amp; (data-&gt;ignoreFlags &amp; 0x02) ) {
-00161 <span class="comment">// A MIDI time code message and we're ignoring it.</span>
-00162 size = 0;
-00163 iByte += 3;
-00164 }
-00165 <span class="keywordflow">else</span> size = 3;
-00166 }
-00167 <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( status == 0xF3 ) size = 2;
-00168 <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( status == 0xFE &amp;&amp; (data-&gt;ignoreFlags &amp; 0x04) ) {
-00169 <span class="comment">// A MIDI active sensing message and we're ignoring it.</span>
-00170 size = 0;
-00171 iByte += 1;
-00172 }
-00173 <span class="keywordflow">else</span> size = 1;
-00174
-00175 <span class="comment">// Copy the MIDI data to our vector.</span>
-00176 <span class="keywordflow">if</span> ( size ) {
-00177 message.bytes.assign( &amp;packet-&gt;data[iByte], &amp;packet-&gt;data[iByte+size] );
-00178 <span class="keywordflow">if</span> ( !continueSysex ) {
-00179 <span class="comment">// If not a continuing sysex message, invoke the user callback function or queue the message.</span>
-00180 <span class="keywordflow">if</span> ( data-&gt;usingCallback ) {
-00181 <a class="code" href="classRtMidiIn.html#s0">RtMidiIn::RtMidiCallback</a> callback = (RtMidiIn::RtMidiCallback) data-&gt;userCallback;
-00182 callback( message.timeStamp, &amp;message.bytes, data-&gt;userData );
-00183 }
-00184 <span class="keywordflow">else</span> {
-00185 <span class="comment">// As long as we haven't reached our queue size limit, push the message.</span>
-00186 <span class="keywordflow">if</span> ( data-&gt;queueLimit &gt; data-&gt;queue.size() )
-00187 data-&gt;queue.push( message );
-00188 <span class="keywordflow">else</span>
-00189 std::cerr &lt;&lt; <span class="stringliteral">"\nRtMidiIn: message queue limit reached!!\n\n"</span>;
-00190 }
-00191 message.bytes.clear();
-00192 }
-00193 iByte += size;
-00194 }
-00195 }
-00196 }
-00197 packet = MIDIPacketNext(packet);
-00198 }
-00199 }
-00200
-00201 <span class="keywordtype">void</span> <a class="code" href="classRtMidiIn.html#a3">RtMidiIn :: openPort</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber, RtMidiCallback callback, <span class="keywordtype">void</span> *userData )
-00202 {
-00203 <span class="keywordflow">if</span> ( connected_ ) {
-00204 errorString_ = <span class="stringliteral">"RtMidiIn::openPort: a valid connection already exists!"</span>;
-00205 error( RtError::WARNING );
-00206 <span class="keywordflow">return</span>;
-00207 }
-00208
-00209 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nSrc = MIDIGetNumberOfSources();
-00210 <span class="keywordflow">if</span> (nSrc &lt; 1) {
-00211 errorString_ = <span class="stringliteral">"RtMidiIn::openPort: no MIDI input sources found!"</span>;
-00212 error( RtError::NO_DEVICES_FOUND );
-00213 }
-00214
-00215 std::ostringstream ost;
-00216 <span class="keywordflow">if</span> ( portNumber &gt;= nSrc ) {
-00217 ost &lt;&lt; <span class="stringliteral">"RtMidiIn::openPort: the 'portNumber' argument ("</span> &lt;&lt; portNumber &lt;&lt; <span class="stringliteral">") is invalid."</span>;
-00218 errorString_ = ost.str();
-00219 error( RtError::INVALID_PARAMETER );
-00220 }
-00221
-00222 MIDIClientRef client;
-00223 OSStatus result = MIDIClientCreate( CFSTR(<span class="stringliteral">"RtMidi Input Client"</span>), NULL, NULL, &amp;client );
-00224 <span class="keywordflow">if</span> ( result != noErr ) {
-00225 errorString_ = <span class="stringliteral">"RtMidiIn::openPort: error creating OS-X MIDI client object."</span>;
-00226 error( RtError::DRIVER_ERROR );
-00227 }
-00228
-00229 MIDIPortRef port;
-00230 result = MIDIInputPortCreate( client, CFSTR(<span class="stringliteral">"RtMidi Virtual MIDI Input Port"</span>), midiInputCallback, (<span class="keywordtype">void</span> *)&amp;inputData_, &amp;port );
-00231 <span class="keywordflow">if</span> ( result != noErr ) {
-00232 MIDIClientDispose( client );
-00233 errorString_ = <span class="stringliteral">"RtMidiIn::openPort: error creating OS-X MIDI input port."</span>;
-00234 error( RtError::DRIVER_ERROR );
-00235 }
-00236
-00237 <span class="comment">// Get the desired input source identifier.</span>
-00238 MIDIEndpointRef src = MIDIGetSource( portNumber );
-00239 <span class="keywordflow">if</span> ( src == NULL ) {
-00240 MIDIPortDispose( port );
-00241 MIDIClientDispose( client );
-00242 errorString_ = <span class="stringliteral">"RtMidiIn::openPort: error getting MIDI input source reference."</span>;
-00243 error( RtError::DRIVER_ERROR );
-00244 }
-00245
-00246 <span class="comment">// Make the connection.</span>
-00247 result = MIDIPortConnectSource(port, src, NULL );
-00248 <span class="keywordflow">if</span> ( result != noErr ) {
-00249 MIDIPortDispose( port );
-00250 MIDIClientDispose( client );
-00251 errorString_ = <span class="stringliteral">"RtMidiIn::openPort: error connecting OS-X MIDI input port."</span>;
-00252 error( RtError::DRIVER_ERROR );
-00253 }
-00254
-00255 <span class="comment">// Save our api-specific connection information.</span>
-00256 CoreMidiData *data = (CoreMidiData *) <span class="keyword">new</span> CoreMidiData;
-00257 data-&gt;client = client;
-00258 data-&gt;port = port;
-00259 apiData_ = (<span class="keywordtype">void</span> *) data;
-00260
-00261 <span class="keywordflow">if</span> ( callback ) {
-00262 inputData_.userCallback = (<span class="keywordtype">void</span> *) callback;
-00263 inputData_.userData = userData;
-00264 inputData_.usingCallback = <span class="keyword">true</span>;
-00265 }
-00266
-00267 inputData_.lastTime = AudioGetCurrentHostTime();
-00268
-00269 connected_ = <span class="keyword">true</span>;
-00270 }
-00271
-00272 <span class="keywordtype">void</span> <a class="code" href="classRtMidiIn.html#a4">RtMidiIn :: closePort</a>( <span class="keywordtype">void</span> )
-00273 {
-00274 <span class="keywordflow">if</span> ( connected_ ) {
-00275 CoreMidiData *data = static_cast&lt;CoreMidiData *&gt; (apiData_);
-00276 MIDIClientDispose( data-&gt;client );
-00277 MIDIPortDispose( data-&gt;port );
-00278 <span class="keyword">delete</span> data;
-00279 apiData_ = 0;
-00280 }
-00281
-00282 connected_ = <span class="keyword">false</span>;
-00283 }
-00284
-00285 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtMidiIn.html#a5">RtMidiIn :: getPortCount</a>()
-00286 {
-00287 <span class="keywordflow">return</span> MIDIGetNumberOfSources();
-00288 }
-00289
-00290 std::string <a class="code" href="classRtMidiIn.html#a6">RtMidiIn :: getPortName</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber )
-00291 {
-00292 CFStringRef nameRef;
-00293 MIDIEndpointRef portRef;
-00294 std::ostringstream ost;
-00295 <span class="keywordtype">char</span> name[128];
-00296
-00297 <span class="keywordflow">if</span> ( portNumber &gt;= MIDIGetNumberOfSources() ) {
-00298 ost &lt;&lt; <span class="stringliteral">"RtMidiIn::getPortName: the 'portNumber' argument ("</span> &lt;&lt; portNumber &lt;&lt; <span class="stringliteral">") is invalid."</span>;
-00299 errorString_ = ost.str();
-00300 error( RtError::INVALID_PARAMETER );
-00301 }
-00302 portRef = MIDIGetSource( portNumber );
-00303
-00304 MIDIObjectGetStringProperty( portRef, kMIDIPropertyName, &amp;nameRef );
-00305 CFStringGetCString( nameRef, name, <span class="keyword">sizeof</span>(name), 0);
-00306 CFRelease( nameRef );
-00307 std::string stringName = name;
-00308 <span class="keywordflow">return</span> stringName;
-00309 }
-00310
-00311 <span class="keywordtype">void</span> <a class="code" href="classRtMidiIn.html#a7">RtMidiIn :: setQueueSizeLimit</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> queueSize )
-00312 {
-00313 inputData_.queueLimit = queueSize;
-00314 }
-00315
-00316 <span class="keywordtype">void</span> <a class="code" href="classRtMidiIn.html#a8">RtMidiIn :: ignoreTypes</a>( <span class="keywordtype">bool</span> midiSysex, <span class="keywordtype">bool</span> midiTime, <span class="keywordtype">bool</span> midiSense )
-00317 {
-00318 inputData_.ignoreFlags = 0;
-00319 <span class="keywordflow">if</span> ( midiSysex ) inputData_.ignoreFlags = 0x01;
-00320 <span class="keywordflow">if</span> ( midiTime ) inputData_.ignoreFlags |= 0x02;
-00321 <span class="keywordflow">if</span> ( midiSense ) inputData_.ignoreFlags |= 0x04;
-00322 }
-00323
-00324 <span class="keywordtype">double</span> <a class="code" href="classRtMidiIn.html#a9">RtMidiIn :: getMessage</a>( std::vector&lt;unsigned char&gt; *message )
-00325 {
-00326 message-&gt;clear();
-00327 <span class="keywordflow">if</span> ( !connected_ ) {
-00328 errorString_ = <span class="stringliteral">"RtMidiIn::getNextMessage: a port is not open!"</span>;
-00329 error( RtError::WARNING );
-00330 <span class="keywordflow">return</span> 0.0;
-00331 }
-00332
-00333 <span class="keywordflow">if</span> ( inputData_.usingCallback ) {
-00334 errorString_ = <span class="stringliteral">"RtMidiIn::getNextMessage: a user callback is currently set for this port."</span>;
-00335 error( RtError::WARNING );
-00336 <span class="keywordflow">return</span> 0.0;
-00337 }
-00338
-00339 <span class="keywordflow">if</span> ( inputData_.queue.size() == 0 ) <span class="keywordflow">return</span> 0.0;
-00340
-00341 <span class="comment">// Copy queued message to the vector pointer argument and then "pop" it.</span>
-00342 std::vector&lt;unsigned char&gt; *bytes = &amp;(inputData_.queue.front().bytes);
-00343 message-&gt;assign( bytes-&gt;begin(), bytes-&gt;end() );
-00344 <span class="keywordtype">double</span> deltaTime = inputData_.queue.front().timeStamp;
-00345 inputData_.queue.pop();
-00346
-00347 <span class="keywordflow">return</span> deltaTime;
-00348 }
-00349
-00350 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtMidiOut.html#a5">RtMidiOut :: getPortCount</a>()
-00351 {
-00352 <span class="keywordflow">return</span> MIDIGetNumberOfDestinations();
-00353 }
-00354
-00355 std::string <a class="code" href="classRtMidiOut.html#a6">RtMidiOut :: getPortName</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber )
-00356 {
-00357 CFStringRef nameRef;
-00358 MIDIEndpointRef portRef;
-00359 std::ostringstream ost;
-00360 <span class="keywordtype">char</span> name[128];
-00361
-00362 <span class="keywordflow">if</span> ( portNumber &gt;= MIDIGetNumberOfDestinations() ) {
-00363 ost &lt;&lt; <span class="stringliteral">"RtMidiOut::getPortName: the 'portNumber' argument ("</span> &lt;&lt; portNumber &lt;&lt; <span class="stringliteral">") is invalid."</span>;
-00364 errorString_ = ost.str();
-00365 error( RtError::INVALID_PARAMETER );
-00366 }
-00367 portRef = MIDIGetDestination( portNumber );
-00368
-00369 MIDIObjectGetStringProperty( portRef, kMIDIPropertyName, &amp;nameRef );
-00370 CFStringGetCString( nameRef, name, <span class="keyword">sizeof</span>(name), 0);
-00371 CFRelease( nameRef );
-00372 std::string stringName = name;
-00373 <span class="keywordflow">return</span> stringName;
-00374 }
-00375
-00376 <span class="keywordtype">void</span> <a class="code" href="classRtMidiOut.html#a3">RtMidiOut :: openPort</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber )
-00377 {
-00378 <span class="keywordflow">if</span> ( connected_ ) {
-00379 errorString_ = <span class="stringliteral">"RtMidiOut::openPort: a valid connection already exists!"</span>;
-00380 error( RtError::WARNING );
-00381 <span class="keywordflow">return</span>;
-00382 }
-00383
-00384 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nDest = MIDIGetNumberOfDestinations();
-00385 <span class="keywordflow">if</span> (nDest &lt; 1) {
-00386 errorString_ = <span class="stringliteral">"RtMidiOut::openPort: no MIDI output destinations found!"</span>;
-00387 error( RtError::NO_DEVICES_FOUND );
-00388 }
-00389
-00390 std::ostringstream ost;
-00391 <span class="keywordflow">if</span> ( portNumber &gt;= nDest ) {
-00392 ost &lt;&lt; <span class="stringliteral">"RtMidiOut::openPort: the 'portNumber' argument ("</span> &lt;&lt; portNumber &lt;&lt; <span class="stringliteral">") is invalid."</span>;
-00393 errorString_ = ost.str();
-00394 error( RtError::INVALID_PARAMETER );
-00395 }
-00396
-00397 MIDIClientRef client;
-00398 OSStatus result = MIDIClientCreate( CFSTR(<span class="stringliteral">"RtMidi Output Client"</span>), NULL, NULL, &amp;client );
-00399 <span class="keywordflow">if</span> ( result != noErr ) {
-00400 errorString_ = <span class="stringliteral">"RtMidiOut::openPort: error creating OS-X MIDI client object."</span>;
-00401 error( RtError::DRIVER_ERROR );
-00402 }
-00403
-00404 MIDIPortRef port;
-00405 result = MIDIOutputPortCreate( client, CFSTR(<span class="stringliteral">"RtMidi Virtual MIDI Output Port"</span>), &amp;port );
-00406 <span class="keywordflow">if</span> ( result != noErr ) {
-00407 MIDIClientDispose( client );
-00408 errorString_ = <span class="stringliteral">"RtMidiOut::openPort: error creating OS-X MIDI output port."</span>;
-00409 error( RtError::DRIVER_ERROR );
-00410 }
-00411
-00412 <span class="comment">// Get the desired output port identifier.</span>
-00413 MIDIEndpointRef destinationId = MIDIGetDestination( portNumber );
-00414 <span class="keywordflow">if</span> ( destinationId == NULL ) {
-00415 MIDIPortDispose( port );
-00416 MIDIClientDispose( client );
-00417 errorString_ = <span class="stringliteral">"RtMidiOut::openPort: error getting MIDI output destination reference."</span>;
-00418 error( RtError::DRIVER_ERROR );
-00419 }
-00420
-00421 <span class="comment">// Save our api-specific connection information.</span>
-00422 CoreMidiData *data = (CoreMidiData *) <span class="keyword">new</span> CoreMidiData;
-00423 data-&gt;client = client;
-00424 data-&gt;port = port;
-00425 data-&gt;destinationId = destinationId;
-00426 apiData_ = (<span class="keywordtype">void</span> *) data;
-00427
-00428 connected_ = <span class="keyword">true</span>;
-00429 }
-00430
-00431 <span class="keywordtype">void</span> <a class="code" href="classRtMidiOut.html#a4">RtMidiOut :: closePort</a>( <span class="keywordtype">void</span> )
-00432 {
-00433 <span class="keywordflow">if</span> ( connected_ ) {
-00434 CoreMidiData *data = static_cast&lt;CoreMidiData *&gt; (apiData_);
-00435 MIDIClientDispose( data-&gt;client );
-00436 MIDIPortDispose( data-&gt;port );
-00437 <span class="keyword">delete</span> data;
-00438 apiData_ = 0;
-00439 }
-00440
-00441 connected_ = <span class="keyword">false</span>;
-00442 }
-00443
-00444 <span class="keywordtype">void</span> <a class="code" href="classRtMidiOut.html#a7">RtMidiOut :: sendMessage</a>( std::vector&lt;unsigned char&gt; *message )
-00445 {
-00446 <span class="keywordflow">if</span> ( !connected_ ) {
-00447 errorString_ = <span class="stringliteral">"RtMidiOut::sendMessage: a port is not open!"</span>;
-00448 error( RtError::WARNING );
-00449 <span class="keywordflow">return</span>;
-00450 }
-00451
-00452 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nBytes = message-&gt;size();
-00453 <span class="comment">// Pad the buffer for extra (unknown) structure data.</span>
-00454 Byte buffer[nBytes+32];
-00455 MIDIPacketList *pktlist = (MIDIPacketList *) buffer;
-00456 MIDIPacket *curPacket = MIDIPacketListInit( pktlist );
-00457
-00458 MIDITimeStamp timeStamp = 0;
-00459 curPacket = MIDIPacketListAdd( pktlist, <span class="keyword">sizeof</span>(buffer), curPacket, timeStamp, nBytes, &amp;message-&gt;at(0) );
-00460
-00461 CoreMidiData *data = static_cast&lt;CoreMidiData *&gt; (apiData_);
-00462 OSStatus result = MIDISend( data-&gt;port, data-&gt;destinationId, pktlist );
-00463 <span class="keywordflow">if</span> ( result != noErr ) {
-00464 errorString_ = <span class="stringliteral">"RtMidiOut::sendMessage: error sending MIDI message."</span>;
-00465 error( RtError::WARNING );
-00466 }
-00467 }
-00468
-00469 <span class="preprocessor">#endif</span>
-00470 <span class="preprocessor"></span>
-</pre></div><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>
diff --git a/doxygen/html/RtMidi_8h-source.html b/doxygen/html/RtMidi_8h-source.html
deleted file mode 100755
index 5a60461..0000000
--- a/doxygen/html/RtMidi_8h-source.html
+++ /dev/null
@@ -1,145 +0,0 @@
-<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="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
-<HR>
-<!-- Generated by Doxygen 1.3-rc3 -->
-<h1>RtMidi.h</h1><div class="fragment"><pre>00001 <span class="comment">/**********************************************************************/</span>
-00010 <span class="comment">/**********************************************************************/</span>
-00011
-00012 <span class="preprocessor">#ifndef RTMIDI_H</span>
-00013 <span class="preprocessor"></span><span class="preprocessor">#define RTMIDI_H</span>
-00014 <span class="preprocessor"></span>
-00015 <span class="preprocessor">#include "RtError.h"</span>
-00016 <span class="preprocessor">#include &lt;string&gt;</span>
-00017
-<a name="l00018"></a><a class="code" href="classRtMidi.html">00018</a> <span class="keyword">class </span><a class="code" href="classRtMidi.html">RtMidi</a>
-00019 {
-00020 <span class="keyword">protected</span>:
-00021
-00022 <a class="code" href="classRtMidi.html">RtMidi</a>();
-00023
-00024 <span class="comment">// A basic error reporting function for internal use in the RtMidi</span>
-00025 <span class="comment">// subclasses. The behavior of this function can be modified to</span>
-00026 <span class="comment">// suit specific needs.</span>
-00027 <span class="keywordtype">void</span> error( RtError::Type type );
-00028
-00029 <span class="keywordtype">void</span> *apiData_;
-00030 <span class="keywordtype">bool</span> connected_;
-00031 std::string errorString_;
-00032 };
-00033
-00034 <span class="comment">/**********************************************************************/</span>
-00048 <span class="comment">/**********************************************************************/</span>
-00049
-00050 <span class="preprocessor">#include &lt;vector&gt;</span>
-00051 <span class="preprocessor">#include &lt;queue&gt;</span>
-00052
-<a name="l00053"></a><a class="code" href="classRtMidiIn.html">00053</a> <span class="keyword">class </span><a class="code" href="classRtMidiIn.html">RtMidiIn</a> : <span class="keyword">public</span> <a class="code" href="classRtMidi.html">RtMidi</a>
-00054 {
-00055 <span class="keyword">public</span>:
-00056
-<a name="l00058"></a><a class="code" href="classRtMidiIn.html#s0">00058</a> <span class="keyword">typedef</span> void (*RtMidiCallback)( <span class="keywordtype">double</span> timeStamp, std::vector&lt;unsigned char&gt; *message, <span class="keywordtype">void</span> *userData);
-00059
-00061 <a class="code" href="classRtMidiIn.html#a0">RtMidiIn</a>();
-00062
-00064
-00070 <a class="code" href="classRtMidiIn.html#a0">RtMidiIn</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber, RtMidiCallback callback = 0, <span class="keywordtype">void</span> *userData = 0 );
-00071
-00073 <a class="code" href="classRtMidiIn.html#a2">~RtMidiIn</a>();
-00074
-00076
-00084 <span class="keywordtype">void</span> <a class="code" href="classRtMidiIn.html#a3">openPort</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber = 0, RtMidiCallback callback = 0, <span class="keywordtype">void</span> *userData = 0 );
-00085
-00087 <span class="keywordtype">void</span> <a class="code" href="classRtMidiIn.html#a4">closePort</a>( <span class="keywordtype">void</span> );
-00088
-00090 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtMidiIn.html#a5">getPortCount</a>();
-00091
-00093 std::string <a class="code" href="classRtMidiIn.html#a6">getPortName</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber = 0 );
-00094
-00096
-00100 <span class="keywordtype">void</span> <a class="code" href="classRtMidiIn.html#a7">setQueueSizeLimit</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> queueSize );
-00101
-00103
-00110 <span class="keywordtype">void</span> <a class="code" href="classRtMidiIn.html#a8">ignoreTypes</a>( <span class="keywordtype">bool</span> midiSysex = <span class="keyword">true</span>, <span class="keywordtype">bool</span> midiTime = <span class="keyword">true</span>, <span class="keywordtype">bool</span> midiSense = <span class="keyword">true</span> );
-00111
-00113
-00120 <span class="keywordtype">double</span> <a class="code" href="classRtMidiIn.html#a9">getMessage</a>( std::vector&lt;unsigned char&gt; *message );
-00121
-00122 <span class="comment">// A MIDI structure used internally by the class to store incoming</span>
-00123 <span class="comment">// messages. Each message represents one and only one MIDI message.</span>
-00124 <span class="keyword">struct </span>MidiMessage {
-00125 std::vector&lt;unsigned char&gt; bytes;
-00126 <span class="keywordtype">double</span> timeStamp;
-00127
-00128 <span class="comment">// Default constructor.</span>
-00129 MidiMessage()
-00130 :bytes(3), timeStamp(0.0) {}
-00131 };
-00132
-00133 <span class="comment">// The RtMidiInData structure is used to pass private class data to</span>
-00134 <span class="comment">// the MIDI input handling function or thread.</span>
-00135 <span class="keyword">struct </span>RtMidiInData {
-00136 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">long</span> lastTime;
-00137 std::queue&lt;MidiMessage&gt; queue;
-00138 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> queueLimit;
-00139 <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> ignoreFlags;
-00140 <span class="keywordtype">bool</span> usingCallback;
-00141 <span class="keywordtype">void</span> *userCallback;
-00142 <span class="keywordtype">void</span> *userData;
-00143
-00144 <span class="comment">// Default constructor.</span>
-00145 RtMidiInData()
-00146 : lastTime(0), queueLimit(1024), ignoreFlags(7),
-00147 usingCallback(false), userCallback(0), userData(0) {}
-00148 };
-00149
-00150 <span class="keyword">private</span>:
-00151
-00152 RtMidiInData inputData_;
-00153
-00154 };
-00155
-00156 <span class="comment">/**********************************************************************/</span>
-00168 <span class="comment">/**********************************************************************/</span>
-00169
-<a name="l00170"></a><a class="code" href="classRtMidiOut.html">00170</a> <span class="keyword">class </span><a class="code" href="classRtMidiOut.html">RtMidiOut</a> : <span class="keyword">public</span> <a class="code" href="classRtMidi.html">RtMidi</a>
-00171 {
-00172 <span class="keyword">public</span>:
-00173
-00175 <a class="code" href="classRtMidiOut.html#a0">RtMidiOut</a>();
-00176
-00178
-00182 <a class="code" href="classRtMidiOut.html#a0">RtMidiOut</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber );
-00183
-00185 <a class="code" href="classRtMidiOut.html#a2">~RtMidiOut</a>();
-00186
-00188
-00194 <span class="keywordtype">void</span> <a class="code" href="classRtMidiOut.html#a3">openPort</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber = 0 );
-00195
-00197 <span class="keywordtype">void</span> <a class="code" href="classRtMidiOut.html#a4">closePort</a>();
-00198
-00200 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtMidiOut.html#a5">getPortCount</a>();
-00201
-00203 std::string <a class="code" href="classRtMidiOut.html#a6">getPortName</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber );
-00204
-00206
-00210 <span class="keywordtype">void</span> <a class="code" href="classRtMidiOut.html#a7">sendMessage</a>( std::vector&lt;unsigned char&gt; *message );
-00211
-00212 };
-00213
-00214 <span class="preprocessor">#endif</span>
-</pre></div><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>
diff --git a/doxygen/html/Stk_8cpp-source.html b/doxygen/html/Stk_8cpp-source.html
deleted file mode 100755
index 09312fc..0000000
--- a/doxygen/html/Stk_8cpp-source.html
+++ /dev/null
@@ -1,128 +0,0 @@
-<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="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
-<HR>
-<!-- Generated by Doxygen 1.3-rc3 -->
-<h1>Stk.cpp</h1><div class="fragment"><pre>00001 <span class="comment">/***************************************************/</span>
-00013 <span class="comment">/***************************************************/</span>
-00014
-00015 <span class="preprocessor">#include "Stk.h"</span>
-00016
-00017 StkFloat Stk :: srate_ = (StkFloat) SRATE;
-00018 std::string Stk :: rawwavepath_ = RAWWAVE_PATH;
-<a name="l00019"></a><a class="code" href="classStk.html#p0">00019</a> <span class="keyword">const</span> Stk::StkFormat Stk :: STK_SINT8 = 1;
-<a name="l00020"></a><a class="code" href="classStk.html#p1">00020</a> <span class="keyword">const</span> Stk::StkFormat Stk :: STK_SINT16 = 2;
-<a name="l00021"></a><a class="code" href="classStk.html#p2">00021</a> <span class="keyword">const</span> Stk::StkFormat Stk :: STK_SINT32 = 8;
-<a name="l00022"></a><a class="code" href="classStk.html#p3">00022</a> <span class="keyword">const</span> Stk::StkFormat Stk :: STK_FLOAT32 = 16;
-<a name="l00023"></a><a class="code" href="classStk.html#p4">00023</a> <span class="keyword">const</span> Stk::StkFormat Stk :: STK_FLOAT64 = 32;
-00024
-<a name="l00025"></a><a class="code" href="classStk.html#d3">00025</a> <span class="keywordtype">void</span> <a class="code" href="classStk.html#d3">Stk :: setRawwavePath</a>(std::string path)
-00026 {
-00027 <span class="keywordflow">if</span> ( !path.empty() )
-00028 rawwavepath_ = path;
-00029
-00030 <span class="comment">// Make sure the path includes a "/"</span>
-00031 <span class="keywordflow">if</span> ( rawwavepath_[rawwavepath_.length()-1] != <span class="charliteral">'/'</span> )
-00032 rawwavepath_ += <span class="stringliteral">"/"</span>;
-00033 }
-00034
-<a name="l00035"></a><a class="code" href="classStk.html#d4">00035</a> <span class="keywordtype">void</span> <a class="code" href="classStk.html#d4">Stk :: swap16</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *ptr)
-00036 {
-00037 <span class="keyword">register</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> val;
-00038
-00039 <span class="comment">// Swap 1st and 2nd bytes</span>
-00040 val = *(ptr);
-00041 *(ptr) = *(ptr+1);
-00042 *(ptr+1) = val;
-00043 }
-00044
-<a name="l00045"></a><a class="code" href="classStk.html#d5">00045</a> <span class="keywordtype">void</span> <a class="code" href="classStk.html#d5">Stk :: swap32</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *ptr)
-00046 {
-00047 <span class="keyword">register</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> val;
-00048
-00049 <span class="comment">// Swap 1st and 4th bytes</span>
-00050 val = *(ptr);
-00051 *(ptr) = *(ptr+3);
-00052 *(ptr+3) = val;
-00053
-00054 <span class="comment">//Swap 2nd and 3rd bytes</span>
-00055 ptr += 1;
-00056 val = *(ptr);
-00057 *(ptr) = *(ptr+1);
-00058 *(ptr+1) = val;
-00059 }
-00060
-<a name="l00061"></a><a class="code" href="classStk.html#d6">00061</a> <span class="keywordtype">void</span> <a class="code" href="classStk.html#d6">Stk :: swap64</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *ptr)
-00062 {
-00063 <span class="keyword">register</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> val;
-00064
-00065 <span class="comment">// Swap 1st and 8th bytes</span>
-00066 val = *(ptr);
-00067 *(ptr) = *(ptr+7);
-00068 *(ptr+7) = val;
-00069
-00070 <span class="comment">// Swap 2nd and 7th bytes</span>
-00071 ptr += 1;
-00072 val = *(ptr);
-00073 *(ptr) = *(ptr+5);
-00074 *(ptr+5) = val;
-00075
-00076 <span class="comment">// Swap 3rd and 6th bytes</span>
-00077 ptr += 1;
-00078 val = *(ptr);
-00079 *(ptr) = *(ptr+3);
-00080 *(ptr+3) = val;
-00081
-00082 <span class="comment">// Swap 4th and 5th bytes</span>
-00083 ptr += 1;
-00084 val = *(ptr);
-00085 *(ptr) = *(ptr+1);
-00086 *(ptr+1) = val;
-00087 }
-00088
-00089 <span class="preprocessor">#if (defined(__OS_IRIX__) || defined(__OS_LINUX__) || defined(__OS_MACOSX__))</span>
-00090 <span class="preprocessor"></span><span class="preprocessor"> #include &lt;unistd.h&gt;</span>
-00091 <span class="preprocessor">#elif defined(__OS_WINDOWS__)</span>
-00092 <span class="preprocessor"></span><span class="preprocessor"> #include &lt;windows.h&gt;</span>
-00093 <span class="preprocessor">#endif</span>
-00094 <span class="preprocessor"></span>
-<a name="l00095"></a><a class="code" href="classStk.html#d7">00095</a> <span class="keywordtype">void</span> <a class="code" href="classStk.html#d7">Stk :: sleep</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> milliseconds)
-00096 {
-00097 <span class="preprocessor">#if defined(__OS_WINDOWS__)</span>
-00098 <span class="preprocessor"></span> Sleep((DWORD) milliseconds);
-00099 <span class="preprocessor">#elif (defined(__OS_IRIX__) || defined(__OS_LINUX__) || defined(__OS_MACOSX__))</span>
-00100 <span class="preprocessor"></span> usleep( (<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span>) (milliseconds * 1000.0) );
-00101 <span class="preprocessor">#endif</span>
-00102 <span class="preprocessor"></span>}
-00103
-<a name="l00104"></a><a class="code" href="classStk.html#e0">00104</a> <span class="keywordtype">void</span> <a class="code" href="classStk.html#e0">Stk :: handleError</a>( <span class="keyword">const</span> std::string&amp; message, StkError::Type type )
-00105 {
-00106 <span class="keywordflow">if</span> ( type == StkError::WARNING ) {
-00107 std::cerr &lt;&lt; <span class="charliteral">'\n'</span> &lt;&lt; message &lt;&lt; <span class="stringliteral">"\n\n"</span>;
-00108 }
-00109 <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( type == StkError::DEBUG_WARNING ) {
-00110 <span class="preprocessor">#if defined( __STK_DEBUG__ )</span>
-00111 <span class="preprocessor"></span> std::cerr &lt;&lt; <span class="charliteral">'\n'</span> &lt;&lt; message &lt;&lt; <span class="stringliteral">"\n\n"</span>;
-00112 <span class="preprocessor">#endif</span>
-00113 <span class="preprocessor"></span> }
-00114 <span class="keywordflow">else</span> {
-00115 <span class="comment">// Print error message before throwing.</span>
-00116 std::cerr &lt;&lt; <span class="charliteral">'\n'</span> &lt;&lt; message &lt;&lt; <span class="stringliteral">"\n\n"</span>;
-00117 <span class="keywordflow">throw</span> <a class="code" href="classStkError.html">StkError</a>(message, type);
-00118 }
-00119 }
-</pre></div><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>
diff --git a/doxygen/html/Stk_8h-source.html b/doxygen/html/Stk_8h-source.html
deleted file mode 100755
index 45a46a1..0000000
--- a/doxygen/html/Stk_8h-source.html
+++ /dev/null
@@ -1,162 +0,0 @@
-<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="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
-<HR>
-<!-- Generated by Doxygen 1.3-rc3 -->
-<h1>Stk.h</h1><div class="fragment"><pre>00001 <span class="comment">/***************************************************/</span>
-00013 <span class="comment">/***************************************************/</span>
-00014
-00015 <span class="preprocessor">#ifndef STK_STK_H</span>
-00016 <span class="preprocessor"></span><span class="preprocessor">#define STK_STK_H</span>
-00017 <span class="preprocessor"></span>
-00018 <span class="preprocessor">#include &lt;string&gt;</span>
-00019 <span class="preprocessor">#include &lt;iostream&gt;</span>
-00020
-00021 <span class="comment">// Most data in STK is passed and calculated with the</span>
-00022 <span class="comment">// following user-definable floating-point type. You</span>
-00023 <span class="comment">// can change this to "float" if you prefer or perhaps</span>
-00024 <span class="comment">// a "long double" in the future.</span>
-00025 <span class="keyword">typedef</span> <span class="keywordtype">double</span> StkFloat;
-00026
-00028
-<a name="l00033"></a><a class="code" href="classStkError.html">00033</a> <span class="keyword">class </span><a class="code" href="classStkError.html">StkError</a>
-00034 {
-00035 <span class="keyword">public</span>:
-00036 <span class="keyword">enum</span> Type {
-00037 WARNING,
-00038 DEBUG_WARNING,
-00039 FUNCTION_ARGUMENT,
-00040 FILE_NOT_FOUND,
-00041 FILE_UNKNOWN_FORMAT,
-00042 FILE_ERROR,
-00043 PROCESS_THREAD,
-00044 PROCESS_SOCKET,
-00045 PROCESS_SOCKET_IPADDR,
-00046 AUDIO_SYSTEM,
-00047 MIDI_SYSTEM,
-00048 UNSPECIFIED
-00049 };
-00050
-00051 <span class="keyword">protected</span>:
-00052 std::string message_;
-00053 Type type_;
-00054
-00055 <span class="keyword">public</span>:
-<a name="l00057"></a><a class="code" href="classStkError.html#a0">00057</a> <a class="code" href="classStkError.html#a0">StkError</a>( <span class="keyword">const</span> std::string&amp; message, Type type = StkError::UNSPECIFIED ) : message_(message), type_(type) {}
-00058
-<a name="l00060"></a><a class="code" href="classStkError.html#a1">00060</a> <span class="keyword">virtual</span> <a class="code" href="classStkError.html#a1">~StkError</a>(<span class="keywordtype">void</span>) {}
-00061
-<a name="l00063"></a><a class="code" href="classStkError.html#a2">00063</a> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classStkError.html#a2">printMessage</a>(<span class="keywordtype">void</span>) { std::cout &lt;&lt; <span class="charliteral">'\n'</span> &lt;&lt; message_ &lt;&lt; <span class="stringliteral">"\n\n"</span>; }
-00064
-<a name="l00066"></a><a class="code" href="classStkError.html#a3">00066</a> <span class="keyword">virtual</span> <span class="keyword">const</span> Type&amp; <a class="code" href="classStkError.html#a3">getType</a>(<span class="keywordtype">void</span>) { <span class="keywordflow">return</span> type_; }
-00067
-<a name="l00069"></a><a class="code" href="classStkError.html#a4">00069</a> <span class="keyword">virtual</span> <span class="keyword">const</span> std::string&amp; <a class="code" href="classStkError.html#a4">getMessage</a>(<span class="keywordtype">void</span>) { <span class="keywordflow">return</span> message_; }
-00070 };
-00071
-<a name="l00072"></a><a class="code" href="classStk.html">00072</a> <span class="keyword">class </span><a class="code" href="classStk.html">Stk</a>
-00073 {
-00074 <span class="keyword">public</span>:
-00075
-00076 <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> StkFormat;
-00077 <span class="keyword">static</span> <span class="keyword">const</span> StkFormat <a class="code" href="classStk.html#p0">STK_SINT8</a>;
-00078 <span class="keyword">static</span> <span class="keyword">const</span> StkFormat <a class="code" href="classStk.html#p1">STK_SINT16</a>;
-00079 <span class="keyword">static</span> <span class="keyword">const</span> StkFormat <a class="code" href="classStk.html#p2">STK_SINT32</a>;
-00080 <span class="keyword">static</span> <span class="keyword">const</span> StkFormat <a class="code" href="classStk.html#p3">STK_FLOAT32</a>;
-00081 <span class="keyword">static</span> <span class="keyword">const</span> StkFormat <a class="code" href="classStk.html#p4">STK_FLOAT64</a>;
-00083
-<a name="l00084"></a><a class="code" href="classStk.html#d0">00084</a> <span class="keyword">static</span> StkFloat <a class="code" href="classStk.html#d0">sampleRate</a>(<span class="keywordtype">void</span>) { <span class="keywordflow">return</span> srate_; }
-00085
-00087
-<a name="l00095"></a><a class="code" href="classStk.html#d1">00095</a> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classStk.html#d1">setSampleRate</a>(StkFloat rate) { <span class="keywordflow">if</span> (rate &gt; 0.0) srate_ = rate; }
-00096
-<a name="l00098"></a><a class="code" href="classStk.html#d2">00098</a> <span class="keyword">static</span> std::string <a class="code" href="classStk.html#d2">rawwavePath</a>(<span class="keywordtype">void</span>) { <span class="keywordflow">return</span> rawwavepath_; }
-00099
-00101 <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classStk.html#d3">setRawwavePath</a>(std::string path);
-00102
-00104 <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classStk.html#d4">swap16</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *ptr);
-00105
-00107 <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classStk.html#d5">swap32</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *ptr);
-00108
-00110 <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classStk.html#d6">swap64</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *ptr);
-00111
-00113 <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classStk.html#d7">sleep</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> milliseconds);
-00114
-00115 <span class="keyword">private</span>:
-00116 <span class="keyword">static</span> StkFloat srate_;
-00117 <span class="keyword">static</span> std::string rawwavepath_;
-00118
-00119 <span class="keyword">protected</span>:
-00120
-00122 <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classStk.html#e0">handleError</a>( <span class="keyword">const</span> std::string&amp; message, StkError::Type type );
-00123
-00124 };
-00125
-00126 <span class="comment">// Here are a few other useful typedefs.</span>
-00127 <span class="keyword">typedef</span> <span class="keywordtype">signed</span> <span class="keywordtype">short</span> SINT16;
-00128 <span class="keyword">typedef</span> <span class="keywordtype">signed</span> <span class="keywordtype">int</span> SINT32;
-00129 <span class="keyword">typedef</span> <span class="keywordtype">float</span> FLOAT32;
-00130 <span class="keyword">typedef</span> <span class="keywordtype">double</span> FLOAT64;
-00131
-00132 <span class="comment">// Boolean values</span>
-00133 <span class="preprocessor">#define FALSE 0</span>
-00134 <span class="preprocessor"></span><span class="preprocessor">#define TRUE 1</span>
-00135 <span class="preprocessor"></span>
-00136 <span class="comment">// The default sampling rate.</span>
-00137 <span class="preprocessor">#define SRATE (StkFloat) 44100.0</span>
-00138 <span class="preprocessor"></span>
-00139 <span class="comment">// The default real-time audio input and output buffer size. If</span>
-00140 <span class="comment">// clicks are occuring in the input and/or output sound stream, a</span>
-00141 <span class="comment">// larger buffer size may help. Larger buffer sizes, however, result</span>
-00142 <span class="comment">// in more latency.</span>
-00143 <span class="preprocessor">#define RT_BUFFER_SIZE 512</span>
-00144 <span class="preprocessor"></span>
-00145 <span class="comment">// The default rawwave path value is set with the preprocessor</span>
-00146 <span class="comment">// definition RAWWAVE_PATH. This can be specified as an argument to</span>
-00147 <span class="comment">// the configure script, in an integrated development environment, or</span>
-00148 <span class="comment">// below. The global STK rawwave path variable can be dynamically set</span>
-00149 <span class="comment">// with the Stk::setRawwavePath() function. This value is</span>
-00150 <span class="comment">// concatenated to the beginning of all references to rawwave files in</span>
-00151 <span class="comment">// various STK classes. If you wish to move the rawwaves directory to</span>
-00152 <span class="comment">// a different location in your file system, you will need to set this</span>
-00153 <span class="comment">// path definition appropriately.</span>
-00154 <span class="preprocessor">#if !defined(RAWWAVE_PATH)</span>
-00155 <span class="preprocessor"></span><span class="preprocessor"> #define RAWWAVE_PATH "../../rawwaves/"</span>
-00156 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00157 <span class="preprocessor"></span>
-00158 <span class="preprocessor">#define PI (MY_FLOAT) 3.14159265359</span>
-00159 <span class="preprocessor"></span><span class="preprocessor">#define TWO_PI (MY_FLOAT) (MY_FLOAT) (2 * PI)</span>
-00160 <span class="preprocessor"></span>
-00161 <span class="preprocessor">#define ONE_OVER_128 (MY_FLOAT) 0.0078125</span>
-00162 <span class="preprocessor"></span>
-00163 <span class="preprocessor">#if defined(__WINDOWS_DS__) || defined(__WINDOWS_ASIO__)</span>
-00164 <span class="preprocessor"></span><span class="preprocessor"> #define __OS_WINDOWS__</span>
-00165 <span class="preprocessor"></span><span class="preprocessor"> #define __STK_REALTIME__</span>
-00166 <span class="preprocessor"></span><span class="preprocessor">#elif defined(__LINUX_OSS__) || defined(__LINUX_ALSA__) || defined(__LINUX_JACK__)</span>
-00167 <span class="preprocessor"></span><span class="preprocessor"> #define __OS_LINUX__</span>
-00168 <span class="preprocessor"></span><span class="preprocessor"> #define __STK_REALTIME__</span>
-00169 <span class="preprocessor"></span><span class="preprocessor">#elif defined(__IRIX_AL__)</span>
-00170 <span class="preprocessor"></span><span class="preprocessor"> #define __OS_IRIX__</span>
-00171 <span class="preprocessor"></span><span class="preprocessor"> #define __STK_REALTIME__</span>
-00172 <span class="preprocessor"></span><span class="preprocessor">#elif defined(__MACOSX_CORE__)</span>
-00173 <span class="preprocessor"></span><span class="preprocessor"> #define __OS_MACOSX__</span>
-00174 <span class="preprocessor"></span><span class="preprocessor"> #define __STK_REALTIME__</span>
-00175 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-00176 <span class="preprocessor"></span>
-00177 <span class="comment">//#define __STK_DEBUG__</span>
-00178
-00179 <span class="preprocessor">#endif</span>
-</pre></div><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>
diff --git a/doxygen/html/annotated.html b/doxygen/html/annotated.html
deleted file mode 100755
index 02a08e7..0000000
--- a/doxygen/html/annotated.html
+++ /dev/null
@@ -1,29 +0,0 @@
-<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="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
-<HR>
-<!-- Generated by Doxygen 1.3-rc3 -->
-<h1>STK Compound List</h1>Here are the classes, structs, unions and interfaces with brief descriptions:<table>
- <tr><td class="indexkey"><a class="el" href="classMidiFileIn.html">MidiFileIn</a></td><td class="indexvalue">A standard MIDI file reading/parsing class</td></tr>
- <tr><td class="indexkey"><a class="el" href="classRtError.html">RtError</a></td><td class="indexvalue">Exception handling class for RtAudio &amp; <a class="el" href="classRtMidi.html">RtMidi</a></td></tr>
- <tr><td class="indexkey"><a class="el" href="classRtMidi.html">RtMidi</a></td><td class="indexvalue">An abstract base class for realtime MIDI input/output</td></tr>
- <tr><td class="indexkey"><a class="el" href="classRtMidiIn.html">RtMidiIn</a></td><td class="indexvalue">A realtime MIDI input class</td></tr>
- <tr><td class="indexkey"><a class="el" href="classRtMidiOut.html">RtMidiOut</a></td><td class="indexvalue">A realtime MIDI output class</td></tr>
- <tr><td class="indexkey"><a class="el" href="classStk.html">Stk</a></td><td class="indexvalue">STK base class</td></tr>
- <tr><td class="indexkey"><a class="el" href="classStkError.html">StkError</a></td><td class="indexvalue">STK error handling class</td></tr>
-</table>
-<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>
diff --git a/doxygen/html/classMidiFileIn-members.html b/doxygen/html/classMidiFileIn-members.html
deleted file mode 100755
index 85c5512..0000000
--- a/doxygen/html/classMidiFileIn-members.html
+++ /dev/null
@@ -1,44 +0,0 @@
-<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="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
-<HR>
-<!-- Generated by Doxygen 1.3-rc3 -->
-<h1>MidiFileIn Member List</h1>This is the complete list of members for <a class="el" href="classMidiFileIn.html">MidiFileIn</a>, including all inherited members.<table>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classMidiFileIn.html#a4">getDivision</a>() const</td><td><a class="el" href="classMidiFileIn.html">MidiFileIn</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classMidiFileIn.html#a2">getFileFormat</a>() const</td><td><a class="el" href="classMidiFileIn.html">MidiFileIn</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classMidiFileIn.html#a7">getNextEvent</a>(std::vector&lt; unsigned char &gt; *event, unsigned int track=0)</td><td><a class="el" href="classMidiFileIn.html">MidiFileIn</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classMidiFileIn.html#a8">getNextMidiEvent</a>(std::vector&lt; unsigned char &gt; *midiEvent, unsigned int track=0)</td><td><a class="el" href="classMidiFileIn.html">MidiFileIn</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classMidiFileIn.html#a3">getNumberOfTracks</a>() const</td><td><a class="el" href="classMidiFileIn.html">MidiFileIn</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classMidiFileIn.html#a6">getTickSeconds</a>(unsigned int track=0)</td><td><a class="el" href="classMidiFileIn.html">MidiFileIn</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classStk.html#e0">handleError</a>(const std::string &amp;message, StkError::Type type)</td><td><a class="el" href="classStk.html">Stk</a></td><td><code> [protected, static]</code></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classMidiFileIn.html#a0">MidiFileIn</a>(std::string fileName)</td><td><a class="el" href="classMidiFileIn.html">MidiFileIn</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classStk.html#d2">rawwavePath</a>(void)</td><td><a class="el" href="classStk.html">Stk</a></td><td><code> [inline, static]</code></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classMidiFileIn.html#a5">rewindTrack</a>(unsigned int track=0)</td><td><a class="el" href="classMidiFileIn.html">MidiFileIn</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classStk.html#d0">sampleRate</a>(void)</td><td><a class="el" href="classStk.html">Stk</a></td><td><code> [inline, static]</code></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classStk.html#d3">setRawwavePath</a>(std::string path)</td><td><a class="el" href="classStk.html">Stk</a></td><td><code> [static]</code></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classStk.html#d1">setSampleRate</a>(StkFloat rate)</td><td><a class="el" href="classStk.html">Stk</a></td><td><code> [inline, static]</code></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classStk.html#d7">sleep</a>(unsigned long milliseconds)</td><td><a class="el" href="classStk.html">Stk</a></td><td><code> [static]</code></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classStk.html#p3">STK_FLOAT32</a></td><td><a class="el" href="classStk.html">Stk</a></td><td><code> [static]</code></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classStk.html#p4">STK_FLOAT64</a></td><td><a class="el" href="classStk.html">Stk</a></td><td><code> [static]</code></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classStk.html#p1">STK_SINT16</a></td><td><a class="el" href="classStk.html">Stk</a></td><td><code> [static]</code></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classStk.html#p2">STK_SINT32</a></td><td><a class="el" href="classStk.html">Stk</a></td><td><code> [static]</code></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classStk.html#p0">STK_SINT8</a></td><td><a class="el" href="classStk.html">Stk</a></td><td><code> [static]</code></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classStk.html#d4">swap16</a>(unsigned char *ptr)</td><td><a class="el" href="classStk.html">Stk</a></td><td><code> [static]</code></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classStk.html#d5">swap32</a>(unsigned char *ptr)</td><td><a class="el" href="classStk.html">Stk</a></td><td><code> [static]</code></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classStk.html#d6">swap64</a>(unsigned char *ptr)</td><td><a class="el" href="classStk.html">Stk</a></td><td><code> [static]</code></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classMidiFileIn.html#a1">~MidiFileIn</a>()</td><td><a class="el" href="classMidiFileIn.html">MidiFileIn</a></td><td></td></tr>
-</table><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>
diff --git a/doxygen/html/classMidiFileIn.html b/doxygen/html/classMidiFileIn.html
deleted file mode 100755
index e03bb48..0000000
--- a/doxygen/html/classMidiFileIn.html
+++ /dev/null
@@ -1,296 +0,0 @@
-<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="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
-<HR>
-<!-- Generated by Doxygen 1.3-rc3 -->
-<h1>MidiFileIn Class Reference</h1>A standard MIDI file reading/parsing class.
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;<a class="el" href="MidiFileIn_8h-source.html">MidiFileIn.h</a>&gt;</code>
-<p>
-<p>Inheritance diagram for MidiFileIn:
-<p><center><img src="classMidiFileIn.png" usemap="#MidiFileIn_map" border="0" alt=""></center>
-<map name="MidiFileIn_map">
-<area href="classStk.html" alt="Stk" shape="rect" coords="0,0,67,24">
-</map>
-<a href="classMidiFileIn-members.html">List of all members.</a><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 nowrap align=right valign=top>&nbsp;</td><td valign=bottom><a class="el" href="classMidiFileIn.html#a0">MidiFileIn</a> (std::string fileName)</td></tr>
-<tr><td>&nbsp;</td><td><font size=-1><em>Default constructor.</em> <a href="#a0"></a><em></em></font><br><br></td></tr>
-<tr><td nowrap align=right valign=top><a name="a1" doxytag="MidiFileIn::~MidiFileIn"></a>
-&nbsp;</td><td valign=bottom><a class="el" href="classMidiFileIn.html#a1">~MidiFileIn</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><a name="a2" doxytag="MidiFileIn::getFileFormat"></a>
-int&nbsp;</td><td valign=bottom><a class="el" href="classMidiFileIn.html#a2">getFileFormat</a> () const</td></tr>
-<tr><td>&nbsp;</td><td><font size=-1><em>Return the MIDI file format (0, 1, or 2).</em></font><br><br></td></tr>
-<tr><td nowrap align=right valign=top><a name="a3" doxytag="MidiFileIn::getNumberOfTracks"></a>
-unsigned int&nbsp;</td><td valign=bottom><a class="el" href="classMidiFileIn.html#a3">getNumberOfTracks</a> () const</td></tr>
-<tr><td>&nbsp;</td><td><font size=-1><em>Return the number of tracks in the MIDI file.</em></font><br><br></td></tr>
-<tr><td nowrap align=right valign=top>int&nbsp;</td><td valign=bottom><a class="el" href="classMidiFileIn.html#a4">getDivision</a> () const</td></tr>
-<tr><td>&nbsp;</td><td><font size=-1><em>Return the MIDI file division value from the file header.</em> <a href="#a4"></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="classMidiFileIn.html#a5">rewindTrack</a> (unsigned int track=0)</td></tr>
-<tr><td>&nbsp;</td><td><font size=-1><em>Move the specified track event reader to the beginning of its track.</em> <a href="#a5"></a><em></em></font><br><br></td></tr>
-<tr><td nowrap align=right valign=top>double&nbsp;</td><td valign=bottom><a class="el" href="classMidiFileIn.html#a6">getTickSeconds</a> (unsigned int track=0)</td></tr>
-<tr><td>&nbsp;</td><td><font size=-1><em>Get the current value, in seconds, of delta-time ticks for the specified track.</em> <a href="#a6"></a><em></em></font><br><br></td></tr>
-<tr><td nowrap align=right valign=top>unsigned long&nbsp;</td><td valign=bottom><a class="el" href="classMidiFileIn.html#a7">getNextEvent</a> (std::vector&lt; unsigned char &gt; *event, unsigned int track=0)</td></tr>
-<tr><td>&nbsp;</td><td><font size=-1><em>Fill the user-provided vector with the next event in the specified track and return the event delta-time in ticks.</em> <a href="#a7"></a><em></em></font><br><br></td></tr>
-<tr><td nowrap align=right valign=top>unsigned long&nbsp;</td><td valign=bottom><a class="el" href="classMidiFileIn.html#a8">getNextMidiEvent</a> (std::vector&lt; unsigned char &gt; *midiEvent, unsigned int track=0)</td></tr>
-<tr><td>&nbsp;</td><td><font size=-1><em>Fill the user-provided vector with the next MIDI channel event in the specified track and return the event delta time in ticks.</em> <a href="#a8"></a><em></em></font><br><br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-A standard MIDI file reading/parsing class.
-<p>
-This class can be used to read events from a standard MIDI file. Event bytes are copied to a C++ vector and must be subsequently interpreted by the user. The function <a class="el" href="classMidiFileIn.html#a8">getNextMidiEvent()</a> skips meta and sysex events, returning only MIDI channel messages. Event delta-times are returned in the form of "ticks" and a function is provided to determine the current "seconds per tick". Tempo changes are internally tracked by the class and reflected in the values returned by the function <a class="el" href="classMidiFileIn.html#a6">getTickSeconds()</a>.<p>
-by Gary P. Scavone, 2003.
-<p>
-
-<p>
-Definition at line <a class="el" href="MidiFileIn_8h-source.html#l00027">27</a> of file <a class="el" href="MidiFileIn_8h-source.html">MidiFileIn.h</a>.<hr><h2>Constructor &amp; Destructor Documentation</h2>
-<a name="a0" doxytag="MidiFileIn::MidiFileIn"></a><p>
-<table width="100%" cellpadding="2" cellspacing="0" border="0">
- <tr>
- <td class="md">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> MidiFileIn::MidiFileIn </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">std::string&nbsp;</td>
- <td class="mdname1" valign="top" nowrap>&nbsp; <em>fileName</em> </td>
- <td class="md" valign="top">)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Default constructor.
-<p>
-If an error occurs while opening or parsing the file header, an <a class="el" href="classStkError.html">StkError</a> exception will be thrown.
-<p>
-Definition at line <a class="el" href="MidiFileIn_8cpp-source.html#l00021">21</a> of file <a class="el" href="MidiFileIn_8cpp-source.html">MidiFileIn.cpp</a>.
-<p>
-References <a class="el" href="MidiFileIn_8cpp-source.html#l00186">getNextEvent()</a>, <a class="el" href="Stk_8cpp-source.html#l00104">Stk::handleError()</a>, and <a class="el" href="MidiFileIn_8cpp-source.html#l00163">rewindTrack()</a>. </td>
- </tr>
-</table>
-<hr><h2>Member Function Documentation</h2>
-<a name="a4" doxytag="MidiFileIn::getDivision"></a><p>
-<table width="100%" cellpadding="2" cellspacing="0" border="0">
- <tr>
- <td class="md">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> int MidiFileIn::getDivision </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="mdname1" valign="top" nowrap>&nbsp; </td>
- <td class="md" valign="top">)&nbsp;</td>
- <td class="md" nowrap> const</td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Return the MIDI file division value from the file header.
-<p>
-Note that this value must be "parsed" in accordance with the MIDI File Specification. In particular, if the MSB is set, the file uses time-code representations for delta-time values.
-<p>
-Definition at line <a class="el" href="MidiFileIn_8cpp-source.html#l00158">158</a> of file <a class="el" href="MidiFileIn_8cpp-source.html">MidiFileIn.cpp</a>. </td>
- </tr>
-</table>
-<a name="a5" doxytag="MidiFileIn::rewindTrack"></a><p>
-<table width="100%" cellpadding="2" cellspacing="0" border="0">
- <tr>
- <td class="md">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void MidiFileIn::rewindTrack </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">unsigned int&nbsp;</td>
- <td class="mdname1" valign="top" nowrap>&nbsp; <em>track</em> = 0 </td>
- <td class="md" valign="top">)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Move the specified track event reader to the beginning of its track.
-<p>
-The relevant track tempo value is reset as well. If an invalid track number is specified, an <a class="el" href="classStkError.html">StkError</a> exception will be thrown.
-<p>
-Definition at line <a class="el" href="MidiFileIn_8cpp-source.html#l00163">163</a> of file <a class="el" href="MidiFileIn_8cpp-source.html">MidiFileIn.cpp</a>.
-<p>
-References <a class="el" href="Stk_8cpp-source.html#l00104">Stk::handleError()</a>.
-<p>
-Referenced by <a class="el" href="MidiFileIn_8cpp-source.html#l00021">MidiFileIn()</a>. </td>
- </tr>
-</table>
-<a name="a6" doxytag="MidiFileIn::getTickSeconds"></a><p>
-<table width="100%" cellpadding="2" cellspacing="0" border="0">
- <tr>
- <td class="md">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> double MidiFileIn::getTickSeconds </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">unsigned int&nbsp;</td>
- <td class="mdname1" valign="top" nowrap>&nbsp; <em>track</em> = 0 </td>
- <td class="md" valign="top">)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Get the current value, in seconds, of delta-time ticks for the specified track.
-<p>
-This value can change as events are read (via "Set Tempo" Meta-Events). Therefore, one should call this function after every call to <a class="el" href="classMidiFileIn.html#a7">getNextEvent()</a> or <a class="el" href="classMidiFileIn.html#a8">getNextMidiEvent()</a>. If an invalid track number is specified, an <a class="el" href="classStkError.html">StkError</a> exception will be thrown.
-<p>
-Definition at line <a class="el" href="MidiFileIn_8cpp-source.html#l00175">175</a> of file <a class="el" href="MidiFileIn_8cpp-source.html">MidiFileIn.cpp</a>.
-<p>
-References <a class="el" href="Stk_8cpp-source.html#l00104">Stk::handleError()</a>. </td>
- </tr>
-</table>
-<a name="a7" doxytag="MidiFileIn::getNextEvent"></a><p>
-<table width="100%" cellpadding="2" cellspacing="0" border="0">
- <tr>
- <td class="md">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> unsigned long MidiFileIn::getNextEvent </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">std::vector&lt; unsigned char &gt; *&nbsp;</td>
- <td class="mdname" nowrap>&nbsp; <em>event</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>unsigned int&nbsp;</td>
- <td class="mdname" nowrap>&nbsp; <em>track</em> = 0</td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Fill the user-provided vector with the next event in the specified track and return the event delta-time in ticks.
-<p>
-MIDI File events consist of a delta time and a sequence of event bytes. This function returns the delta-time value and writes the subsequent event bytes directly to the event vector. The user must parse the event bytes in accordance with the MIDI File Specification. All returned MIDI channel events are complete ... a status byte is provided even when running status is used in the file. If the track has reached its end, no bytes will be written and the event vector size will be zero. If an invalid track number is specified or an error occurs while reading the file, an <a class="el" href="classStkError.html">StkError</a> exception will be thrown.
-<p>
-Definition at line <a class="el" href="MidiFileIn_8cpp-source.html#l00186">186</a> of file <a class="el" href="MidiFileIn_8cpp-source.html">MidiFileIn.cpp</a>.
-<p>
-References <a class="el" href="Stk_8cpp-source.html#l00104">Stk::handleError()</a>.
-<p>
-Referenced by <a class="el" href="MidiFileIn_8cpp-source.html#l00301">getNextMidiEvent()</a>, and <a class="el" href="MidiFileIn_8cpp-source.html#l00021">MidiFileIn()</a>. </td>
- </tr>
-</table>
-<a name="a8" doxytag="MidiFileIn::getNextMidiEvent"></a><p>
-<table width="100%" cellpadding="2" cellspacing="0" border="0">
- <tr>
- <td class="md">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> unsigned long MidiFileIn::getNextMidiEvent </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">std::vector&lt; unsigned char &gt; *&nbsp;</td>
- <td class="mdname" nowrap>&nbsp; <em>midiEvent</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>unsigned int&nbsp;</td>
- <td class="mdname" nowrap>&nbsp; <em>track</em> = 0</td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Fill the user-provided vector with the next MIDI channel event in the specified track and return the event delta time in ticks.
-<p>
-All returned MIDI events are complete ... a status byte is provided even when running status is used in the file. Meta and sysex events in the track are skipped though "Set Tempo" events are properly parsed for use by the <a class="el" href="classMidiFileIn.html#a6">getTickSeconds()</a> function. If the track has reached its end, no bytes will be written and the event vector size will be zero. If an invalid track number is specified or an error occurs while reading the file, an <a class="el" href="classStkError.html">StkError</a> exception will be thrown.
-<p>
-Definition at line <a class="el" href="MidiFileIn_8cpp-source.html#l00301">301</a> of file <a class="el" href="MidiFileIn_8cpp-source.html">MidiFileIn.cpp</a>.
-<p>
-References <a class="el" href="MidiFileIn_8cpp-source.html#l00186">getNextEvent()</a>, and <a class="el" href="Stk_8cpp-source.html#l00104">Stk::handleError()</a>. </td>
- </tr>
-</table>
-<hr>The documentation for this class was generated from the following files:<ul>
-<li><a class="el" href="MidiFileIn_8h-source.html">MidiFileIn.h</a><li><a class="el" href="MidiFileIn_8cpp-source.html">MidiFileIn.cpp</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>
diff --git a/doxygen/html/classMidiFileIn.png b/doxygen/html/classMidiFileIn.png
deleted file mode 100755
index 13082f0..0000000
--- a/doxygen/html/classMidiFileIn.png
+++ /dev/null
Binary files differ
diff --git a/doxygen/html/classRtError-members.html b/doxygen/html/classRtError-members.html
deleted file mode 100755
index da67c30..0000000
--- a/doxygen/html/classRtError-members.html
+++ /dev/null
@@ -1,27 +0,0 @@
-<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="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
-<HR>
-<!-- Generated by Doxygen 1.3-rc3 -->
-<h1>RtError Member List</h1>This is the complete list of members for <a class="el" href="classRtError.html">RtError</a>, including all inherited members.<table>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classRtError.html#a4">getMessage</a>(void)</td><td><a class="el" href="classRtError.html">RtError</a></td><td><code> [inline, virtual]</code></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classRtError.html#a3">getType</a>(void)</td><td><a class="el" href="classRtError.html">RtError</a></td><td><code> [inline, virtual]</code></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classRtError.html#a2">printMessage</a>(void)</td><td><a class="el" href="classRtError.html">RtError</a></td><td><code> [inline, virtual]</code></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classRtError.html#a0">RtError</a>(const std::string &amp;message, Type type=RtError::UNSPECIFIED)</td><td><a class="el" href="classRtError.html">RtError</a></td><td><code> [inline]</code></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classRtError.html#s11">Type</a> enum name</td><td><a class="el" href="classRtError.html">RtError</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classRtError.html#a1">~RtError</a>(void)</td><td><a class="el" href="classRtError.html">RtError</a></td><td><code> [inline, virtual]</code></td></tr>
-</table><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>
diff --git a/doxygen/html/classRtError.html b/doxygen/html/classRtError.html
deleted file mode 100755
index 535c495..0000000
--- a/doxygen/html/classRtError.html
+++ /dev/null
@@ -1,56 +0,0 @@
-<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="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
-<HR>
-<!-- Generated by Doxygen 1.3-rc3 -->
-<h1>RtError Class Reference</h1>Exception handling class for RtAudio &amp; <a class="el" href="classRtMidi.html">RtMidi</a>.
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;<a class="el" href="RtError_8h-source.html">RtError.h</a>&gt;</code>
-<p>
-<a href="classRtError-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Public Types</h2></td></tr>
-<tr><td nowrap align=right valign=top>enum &nbsp;</td><td valign=bottom><a class="el" href="classRtError.html#s11">Type</a> </td></tr>
-<tr><td>&nbsp;</td><td><font size=-1><em>Defined RtError types.</em></font><br><br></td></tr>
-<tr><td colspan=2><br><h2>Public Member Functions</h2></td></tr>
-<tr><td nowrap align=right valign=top><a name="a0" doxytag="RtError::RtError"></a>
-&nbsp;</td><td valign=bottom><a class="el" href="classRtError.html#a0">RtError</a> (const std::string &amp;message, <a class="el" href="classRtError.html#s11">Type</a> type=RtError::UNSPECIFIED)</td></tr>
-<tr><td>&nbsp;</td><td><font size=-1><em>The constructor.</em></font><br><br></td></tr>
-<tr><td nowrap align=right valign=top><a name="a1" doxytag="RtError::~RtError"></a>
-virtual&nbsp;</td><td valign=bottom><a class="el" href="classRtError.html#a1">~RtError</a> (void)</td></tr>
-<tr><td>&nbsp;</td><td><font size=-1><em>The destructor.</em></font><br><br></td></tr>
-<tr><td nowrap align=right valign=top><a name="a2" doxytag="RtError::printMessage"></a>
-virtual void&nbsp;</td><td valign=bottom><a class="el" href="classRtError.html#a2">printMessage</a> (void)</td></tr>
-<tr><td>&nbsp;</td><td><font size=-1><em>Prints "thrown" error message to stdout.</em></font><br><br></td></tr>
-<tr><td nowrap align=right valign=top><a name="a3" doxytag="RtError::getType"></a>
-virtual const <a class="el" href="classRtError.html#s11">Type</a> &amp;&nbsp;</td><td valign=bottom><a class="el" href="classRtError.html#a3">getType</a> (void)</td></tr>
-<tr><td>&nbsp;</td><td><font size=-1><em>Returns the "thrown" error message type.</em></font><br><br></td></tr>
-<tr><td nowrap align=right valign=top><a name="a4" doxytag="RtError::getMessage"></a>
-virtual const std::string &amp;&nbsp;</td><td valign=bottom><a class="el" href="classRtError.html#a4">getMessage</a> (void)</td></tr>
-<tr><td>&nbsp;</td><td><font size=-1><em>Returns the "thrown" error message string.</em></font><br><br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Exception handling class for RtAudio &amp; <a class="el" href="classRtMidi.html">RtMidi</a>.
-<p>
-The RtError class is quite simple but it does allow errors to be "caught" by <a class="el" href="classRtError.html#s11">RtError::Type</a>. See the RtAudio and <a class="el" href="classRtMidi.html">RtMidi</a> documentation to know which methods can "throw" an RtError.
-<p>
-
-<p>
-Definition at line <a class="el" href="RtError_8h-source.html#l00018">18</a> of file <a class="el" href="RtError_8h-source.html">RtError.h</a>.<hr>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="RtError_8h-source.html">RtError.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>
diff --git a/doxygen/html/classRtMidi-members.html b/doxygen/html/classRtMidi-members.html
deleted file mode 100755
index dc1fd95..0000000
--- a/doxygen/html/classRtMidi-members.html
+++ /dev/null
@@ -1,21 +0,0 @@
-<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="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
-<HR>
-<!-- Generated by Doxygen 1.3-rc3 -->
-<h1>RtMidi Member List</h1>This is the complete list of members for <a class="el" href="classRtMidi.html">RtMidi</a>, including all inherited members.<table>
-</table><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>
diff --git a/doxygen/html/classRtMidi.html b/doxygen/html/classRtMidi.html
deleted file mode 100755
index dc7efe0..0000000
--- a/doxygen/html/classRtMidi.html
+++ /dev/null
@@ -1,44 +0,0 @@
-<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="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
-<HR>
-<!-- Generated by Doxygen 1.3-rc3 -->
-<h1>RtMidi Class Reference</h1>An abstract base class for realtime MIDI input/output.
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;<a class="el" href="RtMidi_8h-source.html">RtMidi.h</a>&gt;</code>
-<p>
-<p>Inheritance diagram for RtMidi:
-<p><center><img src="classRtMidi.png" usemap="#RtMidi_map" border="0" alt=""></center>
-<map name="RtMidi_map">
-<area href="classRtMidiIn.html" alt="RtMidiIn" shape="rect" coords="0,56,67,80">
-<area href="classRtMidiOut.html" alt="RtMidiOut" shape="rect" coords="77,56,144,80">
-</map>
-<a href="classRtMidi-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-An abstract base class for realtime MIDI input/output.
-<p>
-This class implements some common functionality for the realtime MIDI input/output subclasses <a class="el" href="classRtMidiIn.html">RtMidiIn</a> and <a class="el" href="classRtMidiOut.html">RtMidiOut</a>.<p>
-by Gary P. Scavone, 2003.
-<p>
-
-<p>
-Definition at line <a class="el" href="RtMidi_8h-source.html#l00018">18</a> of file <a class="el" href="RtMidi_8h-source.html">RtMidi.h</a>.<hr>The documentation for this class was generated from the following files:<ul>
-<li><a class="el" href="RtMidi_8h-source.html">RtMidi.h</a><li><a class="el" href="RtMidi_8cpp-source.html">RtMidi.cpp</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>
diff --git a/doxygen/html/classRtMidi.png b/doxygen/html/classRtMidi.png
deleted file mode 100755
index 4114caf..0000000
--- a/doxygen/html/classRtMidi.png
+++ /dev/null
Binary files differ
diff --git a/doxygen/html/classRtMidiIn-members.html b/doxygen/html/classRtMidiIn-members.html
deleted file mode 100755
index c314e0c..0000000
--- a/doxygen/html/classRtMidiIn-members.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<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="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
-<HR>
-<!-- Generated by Doxygen 1.3-rc3 -->
-<h1>RtMidiIn Member List</h1>This is the complete list of members for <a class="el" href="classRtMidiIn.html">RtMidiIn</a>, including all inherited members.<table>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classRtMidiIn.html#a4">closePort</a>(void)</td><td><a class="el" href="classRtMidiIn.html">RtMidiIn</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classRtMidiIn.html#a9">getMessage</a>(std::vector&lt; unsigned char &gt; *message)</td><td><a class="el" href="classRtMidiIn.html">RtMidiIn</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classRtMidiIn.html#a5">getPortCount</a>()</td><td><a class="el" href="classRtMidiIn.html">RtMidiIn</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classRtMidiIn.html#a6">getPortName</a>(unsigned int portNumber=0)</td><td><a class="el" href="classRtMidiIn.html">RtMidiIn</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classRtMidiIn.html#a8">ignoreTypes</a>(bool midiSysex=true, bool midiTime=true, bool midiSense=true)</td><td><a class="el" href="classRtMidiIn.html">RtMidiIn</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classRtMidiIn.html#a3">openPort</a>(unsigned int portNumber=0, RtMidiCallback callback=0, void *userData=0)</td><td><a class="el" href="classRtMidiIn.html">RtMidiIn</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classRtMidiIn.html#s0">RtMidiCallback</a> typedef</td><td><a class="el" href="classRtMidiIn.html">RtMidiIn</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classRtMidiIn.html#a0">RtMidiIn</a>()</td><td><a class="el" href="classRtMidiIn.html">RtMidiIn</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classRtMidiIn.html#a1">RtMidiIn</a>(unsigned int portNumber, RtMidiCallback callback=0, void *userData=0)</td><td><a class="el" href="classRtMidiIn.html">RtMidiIn</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classRtMidiIn.html#a7">setQueueSizeLimit</a>(unsigned int queueSize)</td><td><a class="el" href="classRtMidiIn.html">RtMidiIn</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classRtMidiIn.html#a2">~RtMidiIn</a>()</td><td><a class="el" href="classRtMidiIn.html">RtMidiIn</a></td><td></td></tr>
-</table><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>
diff --git a/doxygen/html/classRtMidiIn.html b/doxygen/html/classRtMidiIn.html
deleted file mode 100755
index 9af2a2e..0000000
--- a/doxygen/html/classRtMidiIn.html
+++ /dev/null
@@ -1,281 +0,0 @@
-<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="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
-<HR>
-<!-- Generated by Doxygen 1.3-rc3 -->
-<h1>RtMidiIn Class Reference</h1>A realtime MIDI input class.
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;<a class="el" href="RtMidi_8h-source.html">RtMidi.h</a>&gt;</code>
-<p>
-<p>Inheritance diagram for RtMidiIn:
-<p><center><img src="classRtMidiIn.png" usemap="#RtMidiIn_map" border="0" alt=""></center>
-<map name="RtMidiIn_map">
-<area href="classRtMidi.html" alt="RtMidi" shape="rect" coords="0,0,57,24">
-</map>
-<a href="classRtMidiIn-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Public Types</h2></td></tr>
-<tr><td nowrap align=right valign=top><a name="s0" doxytag="RtMidiIn::RtMidiCallback"></a>
-typedef void(*&nbsp;</td><td valign=bottom><a class="el" href="classRtMidiIn.html#s0">RtMidiCallback</a> )(double timeStamp, std::vector&lt; unsigned char &gt; *message, void *userData)</td></tr>
-<tr><td>&nbsp;</td><td><font size=-1><em>User callback function type definition.</em></font><br><br></td></tr>
-<tr><td colspan=2><br><h2>Public Member Functions</h2></td></tr>
-<tr><td nowrap align=right valign=top><a name="a0" doxytag="RtMidiIn::RtMidiIn"></a>
-&nbsp;</td><td valign=bottom><a class="el" href="classRtMidiIn.html#a0">RtMidiIn</a> ()</td></tr>
-<tr><td>&nbsp;</td><td><font size=-1><em>Default constructor.</em></font><br><br></td></tr>
-<tr><td nowrap align=right valign=top>&nbsp;</td><td valign=bottom><a class="el" href="classRtMidiIn.html#a1">RtMidiIn</a> (unsigned int portNumber, <a class="el" href="classRtMidiIn.html#s0">RtMidiCallback</a> callback=0, void *userData=0)</td></tr>
-<tr><td>&nbsp;</td><td><font size=-1><em>An overloaded constructor which can be used to open a MIDI input port during instantiation.</em> <a href="#a1"></a><em></em></font><br><br></td></tr>
-<tr><td nowrap align=right valign=top><a name="a2" doxytag="RtMidiIn::~RtMidiIn"></a>
-&nbsp;</td><td valign=bottom><a class="el" href="classRtMidiIn.html#a2">~RtMidiIn</a> ()</td></tr>
-<tr><td>&nbsp;</td><td><font size=-1><em>If a MIDI connection is still open, it will be closed by the destructor.</em></font><br><br></td></tr>
-<tr><td nowrap align=right valign=top>void&nbsp;</td><td valign=bottom><a class="el" href="classRtMidiIn.html#a3">openPort</a> (unsigned int portNumber=0, <a class="el" href="classRtMidiIn.html#s0">RtMidiCallback</a> callback=0, void *userData=0)</td></tr>
-<tr><td>&nbsp;</td><td><font size=-1><em>Open a MIDI input connection and optionally set a user callback function.</em> <a href="#a3"></a><em></em></font><br><br></td></tr>
-<tr><td nowrap align=right valign=top><a name="a4" doxytag="RtMidiIn::closePort"></a>
-void&nbsp;</td><td valign=bottom><a class="el" href="classRtMidiIn.html#a4">closePort</a> (void)</td></tr>
-<tr><td>&nbsp;</td><td><font size=-1><em>Close an open MIDI connection (if one exists).</em></font><br><br></td></tr>
-<tr><td nowrap align=right valign=top><a name="a5" doxytag="RtMidiIn::getPortCount"></a>
-unsigned int&nbsp;</td><td valign=bottom><a class="el" href="classRtMidiIn.html#a5">getPortCount</a> ()</td></tr>
-<tr><td>&nbsp;</td><td><font size=-1><em>Return the number of available MIDI input ports.</em></font><br><br></td></tr>
-<tr><td nowrap align=right valign=top><a name="a6" doxytag="RtMidiIn::getPortName"></a>
-std::string&nbsp;</td><td valign=bottom><a class="el" href="classRtMidiIn.html#a6">getPortName</a> (unsigned int portNumber=0)</td></tr>
-<tr><td>&nbsp;</td><td><font size=-1><em>Return a string identifier for the specified MIDI input port number.</em></font><br><br></td></tr>
-<tr><td nowrap align=right valign=top>void&nbsp;</td><td valign=bottom><a class="el" href="classRtMidiIn.html#a7">setQueueSizeLimit</a> (unsigned int queueSize)</td></tr>
-<tr><td>&nbsp;</td><td><font size=-1><em>Set the maximum number of MIDI messages to be saved in the queue.</em> <a href="#a7"></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="classRtMidiIn.html#a8">ignoreTypes</a> (bool midiSysex=true, bool midiTime=true, bool midiSense=true)</td></tr>
-<tr><td>&nbsp;</td><td><font size=-1><em>Specify whether certain MIDI message types should be queued or ignored during input.</em> <a href="#a8"></a><em></em></font><br><br></td></tr>
-<tr><td nowrap align=right valign=top>double&nbsp;</td><td valign=bottom><a class="el" href="classRtMidiIn.html#a9">getMessage</a> (std::vector&lt; unsigned char &gt; *message)</td></tr>
-<tr><td>&nbsp;</td><td><font size=-1><em>Fill the user-provided vector with the data bytes for the next available MIDI message in the input queue and return the event delta-time in seconds.</em> <a href="#a9"></a><em></em></font><br><br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-A realtime MIDI input class.
-<p>
-This class provides a common, platform-independent API for realtime MIDI input. It allows access to a single MIDI input port. Incoming MIDI messages are either saved to a queue for retrieval using the <a class="el" href="classRtMidiIn.html#a9">getMessage()</a> function or immediately passed to a user-specified callback function. Create multiple instances of this class to connect to more than one MIDI device at the same time.<p>
-by Gary P. Scavone, 2003.
-<p>
-
-<p>
-Definition at line <a class="el" href="RtMidi_8h-source.html#l00053">53</a> of file <a class="el" href="RtMidi_8h-source.html">RtMidi.h</a>.<hr><h2>Constructor &amp; Destructor Documentation</h2>
-<a name="a1" doxytag="RtMidiIn::RtMidiIn"></a><p>
-<table width="100%" cellpadding="2" cellspacing="0" border="0">
- <tr>
- <td class="md">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> RtMidiIn::RtMidiIn </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">unsigned int&nbsp;</td>
- <td class="mdname" nowrap>&nbsp; <em>portNumber</em>, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap><a class="el" href="classRtMidiIn.html#s0">RtMidiCallback</a>&nbsp;</td>
- <td class="mdname" nowrap>&nbsp; <em>callback</em> = 0, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>void *&nbsp;</td>
- <td class="mdname" nowrap>&nbsp; <em>userData</em> = 0</td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-An overloaded constructor which can be used to open a MIDI input port during instantiation.
-<p>
-If the optional RtMidiCallback argument is non-NULL, the callback function will be invoked whenever MIDI input messages become available. An exception is thrown if an error occurs while attempting to make the port connection.
-<p>
-Definition at line <a class="el" href="RtMidi_8cpp-source.html#l00040">40</a> of file <a class="el" href="RtMidi_8cpp-source.html">RtMidi.cpp</a>.
-<p>
-References <a class="el" href="classRtMidiIn.html#a3">openPort()</a>. </td>
- </tr>
-</table>
-<hr><h2>Member Function Documentation</h2>
-<a name="a3" doxytag="RtMidiIn::openPort"></a><p>
-<table width="100%" cellpadding="2" cellspacing="0" border="0">
- <tr>
- <td class="md">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void RtMidiIn::openPort </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">unsigned int&nbsp;</td>
- <td class="mdname" nowrap>&nbsp; <em>portNumber</em> = 0, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap><a class="el" href="classRtMidiIn.html#s0">RtMidiCallback</a>&nbsp;</td>
- <td class="mdname" nowrap>&nbsp; <em>callback</em> = 0, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>void *&nbsp;</td>
- <td class="mdname" nowrap>&nbsp; <em>userData</em> = 0</td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Open a MIDI input connection and optionally set a user callback function.
-<p>
-An optional port number greater than 0 can be specified. Otherwise, the default or first port found is opened. If the optional RtMidiCallback argument is non-NULL, the callback function will be associated with the port and invoked whenever MIDI input messages become available. An exception is thrown if an error occurs while attempting to make the port connection.
-<p>
-Referenced by <a class="el" href="RtMidi_8cpp-source.html#l00040">RtMidiIn()</a>. </td>
- </tr>
-</table>
-<a name="a7" doxytag="RtMidiIn::setQueueSizeLimit"></a><p>
-<table width="100%" cellpadding="2" cellspacing="0" border="0">
- <tr>
- <td class="md">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void RtMidiIn::setQueueSizeLimit </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">unsigned int&nbsp;</td>
- <td class="mdname1" valign="top" nowrap>&nbsp; <em>queueSize</em> </td>
- <td class="md" valign="top">)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Set the maximum number of MIDI messages to be saved in the queue.
-<p>
-If the queue size limit is reached, incoming messages will be ignored. The default limit is 1024. </td>
- </tr>
-</table>
-<a name="a8" doxytag="RtMidiIn::ignoreTypes"></a><p>
-<table width="100%" cellpadding="2" cellspacing="0" border="0">
- <tr>
- <td class="md">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void RtMidiIn::ignoreTypes </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">bool&nbsp;</td>
- <td class="mdname" nowrap>&nbsp; <em>midiSysex</em> = true, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>bool&nbsp;</td>
- <td class="mdname" nowrap>&nbsp; <em>midiTime</em> = true, </td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td class="md" nowrap>bool&nbsp;</td>
- <td class="mdname" nowrap>&nbsp; <em>midiSense</em> = true</td>
- </tr>
- <tr>
- <td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Specify whether certain MIDI message types should be queued or ignored during input.
-<p>
-By default, MIDI timing and active sensing messages are ignored during message input because of their relative high data rates. MIDI sysex messages are ignored by default as well. Variable values of "true" imply that the respective message type will be ignored. </td>
- </tr>
-</table>
-<a name="a9" doxytag="RtMidiIn::getMessage"></a><p>
-<table width="100%" cellpadding="2" cellspacing="0" border="0">
- <tr>
- <td class="md">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> double RtMidiIn::getMessage </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">std::vector&lt; unsigned char &gt; *&nbsp;</td>
- <td class="mdname1" valign="top" nowrap>&nbsp; <em>message</em> </td>
- <td class="md" valign="top">)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Fill the user-provided vector with the data bytes for the next available MIDI message in the input queue and return the event delta-time in seconds.
-<p>
-This function returns immediately whether a new message is available or not. A valid message is indicated by a non-zero vector size. An exception is thrown if an error occurs during message retrieval or an input connection was not previously established. </td>
- </tr>
-</table>
-<hr>The documentation for this class was generated from the following files:<ul>
-<li><a class="el" href="RtMidi_8h-source.html">RtMidi.h</a><li><a class="el" href="RtMidi_8cpp-source.html">RtMidi.cpp</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>
diff --git a/doxygen/html/classRtMidiIn.png b/doxygen/html/classRtMidiIn.png
deleted file mode 100755
index 224cf6d..0000000
--- a/doxygen/html/classRtMidiIn.png
+++ /dev/null
Binary files differ
diff --git a/doxygen/html/classRtMidiOut-members.html b/doxygen/html/classRtMidiOut-members.html
deleted file mode 100755
index af47f3d..0000000
--- a/doxygen/html/classRtMidiOut-members.html
+++ /dev/null
@@ -1,29 +0,0 @@
-<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="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
-<HR>
-<!-- Generated by Doxygen 1.3-rc3 -->
-<h1>RtMidiOut Member List</h1>This is the complete list of members for <a class="el" href="classRtMidiOut.html">RtMidiOut</a>, including all inherited members.<table>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classRtMidiOut.html#a4">closePort</a>()</td><td><a class="el" href="classRtMidiOut.html">RtMidiOut</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classRtMidiOut.html#a5">getPortCount</a>()</td><td><a class="el" href="classRtMidiOut.html">RtMidiOut</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classRtMidiOut.html#a6">getPortName</a>(unsigned int portNumber)</td><td><a class="el" href="classRtMidiOut.html">RtMidiOut</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classRtMidiOut.html#a3">openPort</a>(unsigned int portNumber=0)</td><td><a class="el" href="classRtMidiOut.html">RtMidiOut</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classRtMidiOut.html#a0">RtMidiOut</a>()</td><td><a class="el" href="classRtMidiOut.html">RtMidiOut</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classRtMidiOut.html#a1">RtMidiOut</a>(unsigned int portNumber)</td><td><a class="el" href="classRtMidiOut.html">RtMidiOut</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classRtMidiOut.html#a7">sendMessage</a>(std::vector&lt; unsigned char &gt; *message)</td><td><a class="el" href="classRtMidiOut.html">RtMidiOut</a></td><td></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classRtMidiOut.html#a2">~RtMidiOut</a>()</td><td><a class="el" href="classRtMidiOut.html">RtMidiOut</a></td><td></td></tr>
-</table><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>
diff --git a/doxygen/html/classRtMidiOut.html b/doxygen/html/classRtMidiOut.html
deleted file mode 100755
index bb5b0f9..0000000
--- a/doxygen/html/classRtMidiOut.html
+++ /dev/null
@@ -1,166 +0,0 @@
-<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="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
-<HR>
-<!-- Generated by Doxygen 1.3-rc3 -->
-<h1>RtMidiOut Class Reference</h1>A realtime MIDI output class.
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;<a class="el" href="RtMidi_8h-source.html">RtMidi.h</a>&gt;</code>
-<p>
-<p>Inheritance diagram for RtMidiOut:
-<p><center><img src="classRtMidiOut.png" usemap="#RtMidiOut_map" border="0" alt=""></center>
-<map name="RtMidiOut_map">
-<area href="classRtMidi.html" alt="RtMidi" shape="rect" coords="0,0,67,24">
-</map>
-<a href="classRtMidiOut-members.html">List of all members.</a><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 nowrap align=right valign=top><a name="a0" doxytag="RtMidiOut::RtMidiOut"></a>
-&nbsp;</td><td valign=bottom><a class="el" href="classRtMidiOut.html#a0">RtMidiOut</a> ()</td></tr>
-<tr><td>&nbsp;</td><td><font size=-1><em>Default constructor.</em></font><br><br></td></tr>
-<tr><td nowrap align=right valign=top>&nbsp;</td><td valign=bottom><a class="el" href="classRtMidiOut.html#a1">RtMidiOut</a> (unsigned int portNumber)</td></tr>
-<tr><td>&nbsp;</td><td><font size=-1><em>An overloaded constructor which opens a MIDI output port during instantiation.</em> <a href="#a1"></a><em></em></font><br><br></td></tr>
-<tr><td nowrap align=right valign=top><a name="a2" doxytag="RtMidiOut::~RtMidiOut"></a>
-&nbsp;</td><td valign=bottom><a class="el" href="classRtMidiOut.html#a2">~RtMidiOut</a> ()</td></tr>
-<tr><td>&nbsp;</td><td><font size=-1><em>The destructor closes any open MIDI connections.</em></font><br><br></td></tr>
-<tr><td nowrap align=right valign=top>void&nbsp;</td><td valign=bottom><a class="el" href="classRtMidiOut.html#a3">openPort</a> (unsigned int portNumber=0)</td></tr>
-<tr><td>&nbsp;</td><td><font size=-1><em>Open a MIDI output connection.</em> <a href="#a3"></a><em></em></font><br><br></td></tr>
-<tr><td nowrap align=right valign=top><a name="a4" doxytag="RtMidiOut::closePort"></a>
-void&nbsp;</td><td valign=bottom><a class="el" href="classRtMidiOut.html#a4">closePort</a> ()</td></tr>
-<tr><td>&nbsp;</td><td><font size=-1><em>Close an open MIDI connection (if one exists).</em></font><br><br></td></tr>
-<tr><td nowrap align=right valign=top><a name="a5" doxytag="RtMidiOut::getPortCount"></a>
-unsigned int&nbsp;</td><td valign=bottom><a class="el" href="classRtMidiOut.html#a5">getPortCount</a> ()</td></tr>
-<tr><td>&nbsp;</td><td><font size=-1><em>Return the number of available MIDI output ports.</em></font><br><br></td></tr>
-<tr><td nowrap align=right valign=top><a name="a6" doxytag="RtMidiOut::getPortName"></a>
-std::string&nbsp;</td><td valign=bottom><a class="el" href="classRtMidiOut.html#a6">getPortName</a> (unsigned int portNumber)</td></tr>
-<tr><td>&nbsp;</td><td><font size=-1><em>Return a string identifier for the specified MIDI port type and number.</em></font><br><br></td></tr>
-<tr><td nowrap align=right valign=top>void&nbsp;</td><td valign=bottom><a class="el" href="classRtMidiOut.html#a7">sendMessage</a> (std::vector&lt; unsigned char &gt; *message)</td></tr>
-<tr><td>&nbsp;</td><td><font size=-1><em>Immediately send a single message out an open MIDI output port.</em> <a href="#a7"></a><em></em></font><br><br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-A realtime MIDI output class.
-<p>
-This class provides a common, platform-independent API for MIDI output. It allows one to probe available MIDI output ports, to connect to one such port, and to send MIDI bytes immediately over the connection. Create multiple instances of this class to connect to more than one MIDI device at the same time.<p>
-by Gary P. Scavone, 2003.
-<p>
-
-<p>
-Definition at line <a class="el" href="RtMidi_8h-source.html#l00170">170</a> of file <a class="el" href="RtMidi_8h-source.html">RtMidi.h</a>.<hr><h2>Constructor &amp; Destructor Documentation</h2>
-<a name="a1" doxytag="RtMidiOut::RtMidiOut"></a><p>
-<table width="100%" cellpadding="2" cellspacing="0" border="0">
- <tr>
- <td class="md">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> RtMidiOut::RtMidiOut </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">unsigned int&nbsp;</td>
- <td class="mdname1" valign="top" nowrap>&nbsp; <em>portNumber</em> </td>
- <td class="md" valign="top">)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-An overloaded constructor which opens a MIDI output port during instantiation.
-<p>
-An exception is thrown if an error occurs while attempting to make the port connection.
-<p>
-Definition at line <a class="el" href="RtMidi_8cpp-source.html#l00056">56</a> of file <a class="el" href="RtMidi_8cpp-source.html">RtMidi.cpp</a>.
-<p>
-References <a class="el" href="classRtMidiOut.html#a3">openPort()</a>. </td>
- </tr>
-</table>
-<hr><h2>Member Function Documentation</h2>
-<a name="a3" doxytag="RtMidiOut::openPort"></a><p>
-<table width="100%" cellpadding="2" cellspacing="0" border="0">
- <tr>
- <td class="md">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void RtMidiOut::openPort </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">unsigned int&nbsp;</td>
- <td class="mdname1" valign="top" nowrap>&nbsp; <em>portNumber</em> = 0 </td>
- <td class="md" valign="top">)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Open a MIDI output connection.
-<p>
-An optional port number greater than 0 can be specified. Otherwise, the default or first port found is opened. An exception is thrown if an error occurs while attempting to make the port connection.
-<p>
-Referenced by <a class="el" href="RtMidi_8cpp-source.html#l00056">RtMidiOut()</a>. </td>
- </tr>
-</table>
-<a name="a7" doxytag="RtMidiOut::sendMessage"></a><p>
-<table width="100%" cellpadding="2" cellspacing="0" border="0">
- <tr>
- <td class="md">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> void RtMidiOut::sendMessage </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">std::vector&lt; unsigned char &gt; *&nbsp;</td>
- <td class="mdname1" valign="top" nowrap>&nbsp; <em>message</em> </td>
- <td class="md" valign="top">)&nbsp;</td>
- <td class="md" nowrap></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Immediately send a single message out an open MIDI output port.
-<p>
-An exception is thrown if an error occurs during output or an output connection was not previously established. </td>
- </tr>
-</table>
-<hr>The documentation for this class was generated from the following files:<ul>
-<li><a class="el" href="RtMidi_8h-source.html">RtMidi.h</a><li><a class="el" href="RtMidi_8cpp-source.html">RtMidi.cpp</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>
diff --git a/doxygen/html/classRtMidiOut.png b/doxygen/html/classRtMidiOut.png
deleted file mode 100755
index 6a41edc..0000000
--- a/doxygen/html/classRtMidiOut.png
+++ /dev/null
Binary files differ
diff --git a/doxygen/html/classStk-members.html b/doxygen/html/classStk-members.html
deleted file mode 100755
index c38fd67..0000000
--- a/doxygen/html/classStk-members.html
+++ /dev/null
@@ -1,35 +0,0 @@
-<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="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
-<HR>
-<!-- Generated by Doxygen 1.3-rc3 -->
-<h1>Stk Member List</h1>This is the complete list of members for <a class="el" href="classStk.html">Stk</a>, including all inherited members.<table>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classStk.html#e0">handleError</a>(const std::string &amp;message, StkError::Type type)</td><td><a class="el" href="classStk.html">Stk</a></td><td><code> [protected, static]</code></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classStk.html#d2">rawwavePath</a>(void)</td><td><a class="el" href="classStk.html">Stk</a></td><td><code> [inline, static]</code></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classStk.html#d0">sampleRate</a>(void)</td><td><a class="el" href="classStk.html">Stk</a></td><td><code> [inline, static]</code></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classStk.html#d3">setRawwavePath</a>(std::string path)</td><td><a class="el" href="classStk.html">Stk</a></td><td><code> [static]</code></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classStk.html#d1">setSampleRate</a>(StkFloat rate)</td><td><a class="el" href="classStk.html">Stk</a></td><td><code> [inline, static]</code></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classStk.html#d7">sleep</a>(unsigned long milliseconds)</td><td><a class="el" href="classStk.html">Stk</a></td><td><code> [static]</code></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classStk.html#p3">STK_FLOAT32</a></td><td><a class="el" href="classStk.html">Stk</a></td><td><code> [static]</code></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classStk.html#p4">STK_FLOAT64</a></td><td><a class="el" href="classStk.html">Stk</a></td><td><code> [static]</code></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classStk.html#p1">STK_SINT16</a></td><td><a class="el" href="classStk.html">Stk</a></td><td><code> [static]</code></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classStk.html#p2">STK_SINT32</a></td><td><a class="el" href="classStk.html">Stk</a></td><td><code> [static]</code></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classStk.html#p0">STK_SINT8</a></td><td><a class="el" href="classStk.html">Stk</a></td><td><code> [static]</code></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classStk.html#d4">swap16</a>(unsigned char *ptr)</td><td><a class="el" href="classStk.html">Stk</a></td><td><code> [static]</code></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classStk.html#d5">swap32</a>(unsigned char *ptr)</td><td><a class="el" href="classStk.html">Stk</a></td><td><code> [static]</code></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classStk.html#d6">swap64</a>(unsigned char *ptr)</td><td><a class="el" href="classStk.html">Stk</a></td><td><code> [static]</code></td></tr>
-</table><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>
diff --git a/doxygen/html/classStk.html b/doxygen/html/classStk.html
deleted file mode 100755
index f3cf78f..0000000
--- a/doxygen/html/classStk.html
+++ /dev/null
@@ -1,232 +0,0 @@
-<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="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
-<HR>
-<!-- Generated by Doxygen 1.3-rc3 -->
-<h1>Stk Class Reference</h1>STK base class.
-<a href="#_details">More...</a>
-<p>
-<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="classMidiFileIn.html" alt="MidiFileIn" shape="rect" coords="0,56,67,80">
-</map>
-<a href="classStk-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Static Public Member Functions</h2></td></tr>
-<tr><td nowrap align=right valign=top><a name="d0" doxytag="Stk::sampleRate"></a>
-StkFloat&nbsp;</td><td valign=bottom><a class="el" href="classStk.html#d0">sampleRate</a> (void)</td></tr>
-<tr><td>&nbsp;</td><td><font size=-1><em>Static method which returns the current STK sample rate.</em></font><br><br></td></tr>
-<tr><td nowrap align=right valign=top>void&nbsp;</td><td valign=bottom><a class="el" href="classStk.html#d1">setSampleRate</a> (StkFloat rate)</td></tr>
-<tr><td>&nbsp;</td><td><font size=-1><em>Static method which sets the STK sample rate.</em> <a href="#d1"></a><em></em></font><br><br></td></tr>
-<tr><td nowrap align=right valign=top><a name="d2" doxytag="Stk::rawwavePath"></a>
-std::string&nbsp;</td><td valign=bottom><a class="el" href="classStk.html#d2">rawwavePath</a> (void)</td></tr>
-<tr><td>&nbsp;</td><td><font size=-1><em>Static method which returns the current rawwave path.</em></font><br><br></td></tr>
-<tr><td nowrap align=right valign=top><a name="d3" doxytag="Stk::setRawwavePath"></a>
-void&nbsp;</td><td valign=bottom><a class="el" href="classStk.html#d3">setRawwavePath</a> (std::string path)</td></tr>
-<tr><td>&nbsp;</td><td><font size=-1><em>Static method which sets the STK rawwave path.</em></font><br><br></td></tr>
-<tr><td nowrap align=right valign=top><a name="d4" doxytag="Stk::swap16"></a>
-void&nbsp;</td><td valign=bottom><a class="el" href="classStk.html#d4">swap16</a> (unsigned char *ptr)</td></tr>
-<tr><td>&nbsp;</td><td><font size=-1><em>Static method which byte-swaps a 16-bit data type.</em></font><br><br></td></tr>
-<tr><td nowrap align=right valign=top><a name="d5" doxytag="Stk::swap32"></a>
-void&nbsp;</td><td valign=bottom><a class="el" href="classStk.html#d5">swap32</a> (unsigned char *ptr)</td></tr>
-<tr><td>&nbsp;</td><td><font size=-1><em>Static method which byte-swaps a 32-bit data type.</em></font><br><br></td></tr>
-<tr><td nowrap align=right valign=top><a name="d6" doxytag="Stk::swap64"></a>
-void&nbsp;</td><td valign=bottom><a class="el" href="classStk.html#d6">swap64</a> (unsigned char *ptr)</td></tr>
-<tr><td>&nbsp;</td><td><font size=-1><em>Static method which byte-swaps a 64-bit data type.</em></font><br><br></td></tr>
-<tr><td nowrap align=right valign=top><a name="d7" doxytag="Stk::sleep"></a>
-void&nbsp;</td><td valign=bottom><a class="el" href="classStk.html#d7">sleep</a> (unsigned long milliseconds)</td></tr>
-<tr><td>&nbsp;</td><td><font size=-1><em>Static cross-platform method to sleep for a number of milliseconds.</em></font><br><br></td></tr>
-<tr><td colspan=2><br><h2>Static Public Attributes</h2></td></tr>
-<tr><td nowrap align=right valign=top>const StkFormat&nbsp;</td><td valign=bottom><a class="el" href="classStk.html#p0">STK_SINT8</a> = 1</td></tr>
-<tr><td nowrap align=right valign=top>const StkFormat&nbsp;</td><td valign=bottom><a class="el" href="classStk.html#p1">STK_SINT16</a> = 2</td></tr>
-<tr><td nowrap align=right valign=top>const StkFormat&nbsp;</td><td valign=bottom><a class="el" href="classStk.html#p2">STK_SINT32</a> = 8</td></tr>
-<tr><td nowrap align=right valign=top>const StkFormat&nbsp;</td><td valign=bottom><a class="el" href="classStk.html#p3">STK_FLOAT32</a> = 16</td></tr>
-<tr><td nowrap align=right valign=top>const StkFormat&nbsp;</td><td valign=bottom><a class="el" href="classStk.html#p4">STK_FLOAT64</a> = 32</td></tr>
-<tr><td colspan=2><br><h2>Static Protected Member Functions</h2></td></tr>
-<tr><td nowrap align=right valign=top><a name="e0" doxytag="Stk::handleError"></a>
-void&nbsp;</td><td valign=bottom><a class="el" href="classStk.html#e0">handleError</a> (const std::string &amp;message, StkError::Type type)</td></tr>
-<tr><td>&nbsp;</td><td><font size=-1><em>Function for error reporting and handling.</em></font><br><br></td></tr>
-</table>
-<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 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 - 2003.
-<p>
-
-<p>
-Definition at line <a class="el" href="Stk_8h-source.html#l00072">72</a> of file <a class="el" href="Stk_8h-source.html">Stk.h</a>.<hr><h2>Member Function Documentation</h2>
-<a name="d1" doxytag="Stk::setSampleRate"></a><p>
-<table width="100%" cellpadding="2" cellspacing="0" border="0">
- <tr>
- <td class="md">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> 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>&nbsp; <em>rate</em> </td>
- <td class="md" valign="top">)&nbsp;</td>
- <td class="md" nowrap><code> [inline, static]</code></td>
- </tr>
-
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Static method which 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.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.
-<p>
-Definition at line <a class="el" href="Stk_8h-source.html#l00095">95</a> of file <a class="el" href="Stk_8h-source.html">Stk.h</a>. </td>
- </tr>
-</table>
-<hr><h2>Member Data Documentation</h2>
-<a name="p0" doxytag="Stk::STK_SINT8"></a><p>
-<table width="100%" cellpadding="2" cellspacing="0" border="0">
- <tr>
- <td class="md">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> const Stk::StkFormat Stk::STK_SINT8 = 1<code> [static]</code>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
--128 to +127
-<p>
-Definition at line <a class="el" href="Stk_8cpp-source.html#l00019">19</a> of file <a class="el" href="Stk_8cpp-source.html">Stk.cpp</a>. </td>
- </tr>
-</table>
-<a name="p1" doxytag="Stk::STK_SINT16"></a><p>
-<table width="100%" cellpadding="2" cellspacing="0" border="0">
- <tr>
- <td class="md">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> const Stk::StkFormat Stk::STK_SINT16 = 2<code> [static]</code>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
--32768 to +32767
-<p>
-Definition at line <a class="el" href="Stk_8cpp-source.html#l00020">20</a> of file <a class="el" href="Stk_8cpp-source.html">Stk.cpp</a>. </td>
- </tr>
-</table>
-<a name="p2" doxytag="Stk::STK_SINT32"></a><p>
-<table width="100%" cellpadding="2" cellspacing="0" border="0">
- <tr>
- <td class="md">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> const Stk::StkFormat Stk::STK_SINT32 = 8<code> [static]</code>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
--2147483648 to +2147483647.
-<p>
-Definition at line <a class="el" href="Stk_8cpp-source.html#l00021">21</a> of file <a class="el" href="Stk_8cpp-source.html">Stk.cpp</a>. </td>
- </tr>
-</table>
-<a name="p3" doxytag="Stk::STK_FLOAT32"></a><p>
-<table width="100%" cellpadding="2" cellspacing="0" border="0">
- <tr>
- <td class="md">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> const Stk::StkFormat Stk::STK_FLOAT32 = 16<code> [static]</code>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Normalized between plus/minus 1.0.
-<p>
-Definition at line <a class="el" href="Stk_8cpp-source.html#l00022">22</a> of file <a class="el" href="Stk_8cpp-source.html">Stk.cpp</a>. </td>
- </tr>
-</table>
-<a name="p4" doxytag="Stk::STK_FLOAT64"></a><p>
-<table width="100%" cellpadding="2" cellspacing="0" border="0">
- <tr>
- <td class="md">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top"> const Stk::StkFormat Stk::STK_FLOAT64 = 32<code> [static]</code>
- </table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Normalized between plus/minus 1.0.
-<p>
-Definition at line <a class="el" href="Stk_8cpp-source.html#l00023">23</a> of file <a class="el" href="Stk_8cpp-source.html">Stk.cpp</a>. </td>
- </tr>
-</table>
-<hr>The documentation for this class was generated from the following files:<ul>
-<li><a class="el" href="Stk_8h-source.html">Stk.h</a><li><a class="el" href="Stk_8cpp-source.html">Stk.cpp</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>
diff --git a/doxygen/html/classStk.png b/doxygen/html/classStk.png
deleted file mode 100755
index 84495a3..0000000
--- a/doxygen/html/classStk.png
+++ /dev/null
Binary files differ
diff --git a/doxygen/html/classStkError-members.html b/doxygen/html/classStkError-members.html
deleted file mode 100755
index 97d7df0..0000000
--- a/doxygen/html/classStkError-members.html
+++ /dev/null
@@ -1,26 +0,0 @@
-<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="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
-<HR>
-<!-- Generated by Doxygen 1.3-rc3 -->
-<h1>StkError Member List</h1>This is the complete list of members for <a class="el" href="classStkError.html">StkError</a>, including all inherited members.<table>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classStkError.html#a4">getMessage</a>(void)</td><td><a class="el" href="classStkError.html">StkError</a></td><td><code> [inline, virtual]</code></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classStkError.html#a3">getType</a>(void)</td><td><a class="el" href="classStkError.html">StkError</a></td><td><code> [inline, virtual]</code></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classStkError.html#a2">printMessage</a>(void)</td><td><a class="el" href="classStkError.html">StkError</a></td><td><code> [inline, virtual]</code></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classStkError.html#a0">StkError</a>(const std::string &amp;message, Type type=StkError::UNSPECIFIED)</td><td><a class="el" href="classStkError.html">StkError</a></td><td><code> [inline]</code></td></tr>
- <tr bgcolor="#f0f0f0"><td><a class="el" href="classStkError.html#a1">~StkError</a>(void)</td><td><a class="el" href="classStkError.html">StkError</a></td><td><code> [inline, virtual]</code></td></tr>
-</table><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>
diff --git a/doxygen/html/classStkError.html b/doxygen/html/classStkError.html
deleted file mode 100755
index cfdb29f..0000000
--- a/doxygen/html/classStkError.html
+++ /dev/null
@@ -1,53 +0,0 @@
-<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="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
-<HR>
-<!-- Generated by Doxygen 1.3-rc3 -->
-<h1>StkError Class Reference</h1>STK error handling class.
-<a href="#_details">More...</a>
-<p>
-<code>#include &lt;<a class="el" href="Stk_8h-source.html">Stk.h</a>&gt;</code>
-<p>
-<a href="classStkError-members.html">List of all members.</a><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 nowrap align=right valign=top><a name="a0" doxytag="StkError::StkError"></a>
-&nbsp;</td><td valign=bottom><a class="el" href="classStkError.html#a0">StkError</a> (const std::string &amp;message, Type type=StkError::UNSPECIFIED)</td></tr>
-<tr><td>&nbsp;</td><td><font size=-1><em>The constructor.</em></font><br><br></td></tr>
-<tr><td nowrap align=right valign=top><a name="a1" doxytag="StkError::~StkError"></a>
-virtual&nbsp;</td><td valign=bottom><a class="el" href="classStkError.html#a1">~StkError</a> (void)</td></tr>
-<tr><td>&nbsp;</td><td><font size=-1><em>The destructor.</em></font><br><br></td></tr>
-<tr><td nowrap align=right valign=top><a name="a2" doxytag="StkError::printMessage"></a>
-virtual void&nbsp;</td><td valign=bottom><a class="el" href="classStkError.html#a2">printMessage</a> (void)</td></tr>
-<tr><td>&nbsp;</td><td><font size=-1><em>Prints "thrown" error message to stdout.</em></font><br><br></td></tr>
-<tr><td nowrap align=right valign=top><a name="a3" doxytag="StkError::getType"></a>
-virtual const Type &amp;&nbsp;</td><td valign=bottom><a class="el" href="classStkError.html#a3">getType</a> (void)</td></tr>
-<tr><td>&nbsp;</td><td><font size=-1><em>Returns the "thrown" error message type.</em></font><br><br></td></tr>
-<tr><td nowrap align=right valign=top><a name="a4" doxytag="StkError::getMessage"></a>
-virtual const std::string &amp;&nbsp;</td><td valign=bottom><a class="el" href="classStkError.html#a4">getMessage</a> (void)</td></tr>
-<tr><td>&nbsp;</td><td><font size=-1><em>Returns the "thrown" error message string.</em></font><br><br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-STK error handling class.
-<p>
-This is a fairly abstract exception handling class. There could be sub-classes to take care of more specific error conditions ... or not.
-<p>
-
-<p>
-Definition at line <a class="el" href="Stk_8h-source.html#l00033">33</a> of file <a class="el" href="Stk_8h-source.html">Stk.h</a>.<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://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>
diff --git a/doxygen/html/doxygen.css b/doxygen/html/doxygen.css
deleted file mode 100755
index 96680fb..0000000
--- a/doxygen/html/doxygen.css
+++ /dev/null
@@ -1,49 +0,0 @@
-H1 { text-align: center; }
-CAPTION { font-weight: bold }
-A.qindex {}
-A.qindexRef {}
-A.el { text-decoration: none; font-weight: bold }
-A.elRef { font-weight: bold }
-A.code { text-decoration: none; font-weight: normal; color: #4444ee }
-A.codeRef { font-weight: normal; color: #4444ee }
-A:hover { text-decoration: none; background-color: #f2f2ff }
-DL.el { margin-left: -1cm }
-DIV.fragment { width: 100%; border: none; background-color: #eeeeee }
-DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px }
-TD.md { background-color: #f2f2ff; font-weight: bold; }
-TD.mdname1 { background-color: #f2f2ff; font-weight: bold; color: #602020; }
-TD.mdname { background-color: #f2f2ff; font-weight: bold; color: #602020; width: 600px; }
-DIV.groupHeader { margin-left: 16px; margin-top: 12px; margin-bottom: 6px; font-weight: bold }
-DIV.groupText { margin-left: 16px; font-style: italic; font-size: smaller }
-BODY { background: white; color: black }
-TD.indexkey {
- background-color: #eeeeff;
- font-weight: bold;
- padding-right : 10px;
- padding-top : 2px;
- padding-left : 10px;
- padding-bottom : 2px;
- margin-left : 0px;
- margin-right : 0px;
- margin-top : 2px;
- margin-bottom : 2px
-}
-TD.indexvalue {
- background-color: #eeeeff;
- font-style: italic;
- padding-right : 10px;
- padding-top : 2px;
- padding-left : 10px;
- padding-bottom : 2px;
- margin-left : 0px;
- margin-right : 0px;
- margin-top : 2px;
- margin-bottom : 2px
-}
-span.keyword { color: #008000 }
-span.keywordtype { color: #604020 }
-span.keywordflow { color: #e08000 }
-span.comment { color: #800000 }
-span.preprocessor { color: #806020 }
-span.stringliteral { color: #002080 }
-span.charliteral { color: #008080 }
diff --git a/doxygen/html/doxygen.png b/doxygen/html/doxygen.png
deleted file mode 100755
index 96ae72c..0000000
--- a/doxygen/html/doxygen.png
+++ /dev/null
Binary files differ
diff --git a/doxygen/html/files.html b/doxygen/html/files.html
deleted file mode 100755
index 981655b..0000000
--- a/doxygen/html/files.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<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="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
-<HR>
-<!-- Generated by Doxygen 1.3-rc3 -->
-<h1>STK File List</h1>Here is a list of all documented files with brief descriptions:<table>
- <tr><td class="indexkey"><b>MidiFileIn.cpp</b> <a href="MidiFileIn_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>MidiFileIn.h</b> <a href="MidiFileIn_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>midiin.cpp</b> <a href="midiin_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>miditime.cpp</b> <a href="miditime_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>playsmf.cpp</b> <a href="playsmf_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>RtError.h</b> <a href="RtError_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>RtMidi.cpp</b> <a href="RtMidi_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>RtMidi.h</b> <a href="RtMidi_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Stk.cpp</b> <a href="Stk_8cpp-source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><b>Stk.h</b> <a href="Stk_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
-</table>
-<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>
diff --git a/doxygen/html/functions.html b/doxygen/html/functions.html
deleted file mode 100755
index 48492e2..0000000
--- a/doxygen/html/functions.html
+++ /dev/null
@@ -1,65 +0,0 @@
-<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="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
-<HR>
-<!-- Generated by Doxygen 1.3-rc3 -->
-<h1>STK Compound Members</h1>Here is a list of all documented class members with links to the class documentation for each member:<ul>
-<li>closePort()
-: <a class="el" href="classRtMidiOut.html#a4">RtMidiOut</a>, <a class="el" href="classRtMidiIn.html#a4">RtMidiIn</a><li>getDivision()
-: <a class="el" href="classMidiFileIn.html#a4">MidiFileIn</a><li>getFileFormat()
-: <a class="el" href="classMidiFileIn.html#a2">MidiFileIn</a><li>getMessage()
-: <a class="el" href="classStkError.html#a4">StkError</a>, <a class="el" href="classRtMidiIn.html#a9">RtMidiIn</a>, <a class="el" href="classRtError.html#a4">RtError</a><li>getNextEvent()
-: <a class="el" href="classMidiFileIn.html#a7">MidiFileIn</a><li>getNextMidiEvent()
-: <a class="el" href="classMidiFileIn.html#a8">MidiFileIn</a><li>getNumberOfTracks()
-: <a class="el" href="classMidiFileIn.html#a3">MidiFileIn</a><li>getPortCount()
-: <a class="el" href="classRtMidiOut.html#a5">RtMidiOut</a>, <a class="el" href="classRtMidiIn.html#a5">RtMidiIn</a><li>getPortName()
-: <a class="el" href="classRtMidiOut.html#a6">RtMidiOut</a>, <a class="el" href="classRtMidiIn.html#a6">RtMidiIn</a><li>getTickSeconds()
-: <a class="el" href="classMidiFileIn.html#a6">MidiFileIn</a><li>getType()
-: <a class="el" href="classStkError.html#a3">StkError</a>, <a class="el" href="classRtError.html#a3">RtError</a><li>handleError()
-: <a class="el" href="classStk.html#e0">Stk</a><li>ignoreTypes()
-: <a class="el" href="classRtMidiIn.html#a8">RtMidiIn</a><li>MidiFileIn()
-: <a class="el" href="classMidiFileIn.html#a0">MidiFileIn</a><li>openPort()
-: <a class="el" href="classRtMidiOut.html#a3">RtMidiOut</a>, <a class="el" href="classRtMidiIn.html#a3">RtMidiIn</a><li>printMessage()
-: <a class="el" href="classStkError.html#a2">StkError</a>, <a class="el" href="classRtError.html#a2">RtError</a><li>rawwavePath()
-: <a class="el" href="classStk.html#d2">Stk</a><li>rewindTrack()
-: <a class="el" href="classMidiFileIn.html#a5">MidiFileIn</a><li>RtError()
-: <a class="el" href="classRtError.html#a0">RtError</a><li>RtMidiCallback
-: <a class="el" href="classRtMidiIn.html#s0">RtMidiIn</a><li>RtMidiIn()
-: <a class="el" href="classRtMidiIn.html#a1">RtMidiIn</a><li>RtMidiOut()
-: <a class="el" href="classRtMidiOut.html#a1">RtMidiOut</a><li>sampleRate()
-: <a class="el" href="classStk.html#d0">Stk</a><li>sendMessage()
-: <a class="el" href="classRtMidiOut.html#a7">RtMidiOut</a><li>setQueueSizeLimit()
-: <a class="el" href="classRtMidiIn.html#a7">RtMidiIn</a><li>setRawwavePath()
-: <a class="el" href="classStk.html#d3">Stk</a><li>setSampleRate()
-: <a class="el" href="classStk.html#d1">Stk</a><li>sleep()
-: <a class="el" href="classStk.html#d7">Stk</a><li>STK_FLOAT32
-: <a class="el" href="classStk.html#p3">Stk</a><li>STK_FLOAT64
-: <a class="el" href="classStk.html#p4">Stk</a><li>STK_SINT16
-: <a class="el" href="classStk.html#p1">Stk</a><li>STK_SINT32
-: <a class="el" href="classStk.html#p2">Stk</a><li>STK_SINT8
-: <a class="el" href="classStk.html#p0">Stk</a><li>StkError()
-: <a class="el" href="classStkError.html#a0">StkError</a><li>swap16()
-: <a class="el" href="classStk.html#d4">Stk</a><li>swap32()
-: <a class="el" href="classStk.html#d5">Stk</a><li>swap64()
-: <a class="el" href="classStk.html#d6">Stk</a><li>Type
-: <a class="el" href="classRtError.html#s11">RtError</a><li>~MidiFileIn()
-: <a class="el" href="classMidiFileIn.html#a1">MidiFileIn</a><li>~RtError()
-: <a class="el" href="classRtError.html#a1">RtError</a><li>~RtMidiIn()
-: <a class="el" href="classRtMidiIn.html#a2">RtMidiIn</a><li>~RtMidiOut()
-: <a class="el" href="classRtMidiOut.html#a2">RtMidiOut</a><li>~StkError()
-: <a class="el" href="classStkError.html#a1">StkError</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>
diff --git a/doxygen/html/hierarchy.html b/doxygen/html/hierarchy.html
deleted file mode 100755
index 3f2be16..0000000
--- a/doxygen/html/hierarchy.html
+++ /dev/null
@@ -1,33 +0,0 @@
-<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="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
-<HR>
-<!-- Generated by Doxygen 1.3-rc3 -->
-<h1>STK Class Hierarchy</h1>This inheritance list is sorted roughly, but not completely, alphabetically:<ul>
-<li><a class="el" href="classRtError.html">RtError</a>
-<li><a class="el" href="classRtMidi.html">RtMidi</a>
-<ul>
-<li><a class="el" href="classRtMidiIn.html">RtMidiIn</a>
-<li><a class="el" href="classRtMidiOut.html">RtMidiOut</a>
-</ul>
-<li><a class="el" href="classStk.html">Stk</a>
-<ul>
-<li><a class="el" href="classMidiFileIn.html">MidiFileIn</a>
-</ul>
-<li><a class="el" href="classStkError.html">StkError</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>
diff --git a/doxygen/html/index.html b/doxygen/html/index.html
deleted file mode 100755
index e68c218..0000000
--- a/doxygen/html/index.html
+++ /dev/null
@@ -1,24 +0,0 @@
-<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="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
-<HR>
-<!-- Generated by Doxygen 1.3-rc3 -->
-<h1>STK Documentation</h1>
-<p>
-<ul>
-<li><a class="qindex" href="index.html">Main Page</a> &nbsp; <li><a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <li><a class="qindex" href="annotated.html">Compound List</a> &nbsp; <li><a class="qindex" href="files.html">File List</a> &nbsp; <li><a class="qindex" href="functions.html">Compound Members</a> &nbsp; </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>
diff --git a/doxygen/html/midiin_8cpp-source.html b/doxygen/html/midiin_8cpp-source.html
deleted file mode 100755
index 267d6fb..0000000
--- a/doxygen/html/midiin_8cpp-source.html
+++ /dev/null
@@ -1,83 +0,0 @@
-<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="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
-<HR>
-<!-- Generated by Doxygen 1.3-rc3 -->
-<h1>midiin.cpp</h1><div class="fragment"><pre>00001 <span class="comment">// midiin.cpp</span>
-00002 <span class="comment">//</span>
-00003 <span class="comment">// Simple program to read MIDI input from default port.</span>
-00004 <span class="comment">//</span>
-00005 <span class="comment">// by Gary Scavone, 2003.</span>
-00006 <span class="comment">//</span>
-00007 <span class="comment">// compile: g++ -Wall -D__MACOSX_CORE__ -o midiin midiin.cpp RtMidi.cpp Stk.cpp -framework CoreMIDI -framework CoreFoundation -framework CoreAudio</span>
-00008
-00009 <span class="preprocessor">#include &lt;iostream&gt;</span>
-00010 <span class="preprocessor">#include &lt;unistd.h&gt;</span>
-00011 <span class="preprocessor">#include &lt;signal.h&gt;</span>
-00012 <span class="preprocessor">#include "RtMidi.h"</span>
-00013
-00014 <span class="keywordtype">bool</span> done;
-00015 <span class="keyword">static</span> <span class="keywordtype">void</span> finish(<span class="keywordtype">int</span> ignore){ done = <span class="keyword">true</span>; }
-00016
-00017 <span class="keywordtype">int</span> main()
-00018 {
-00019 <span class="keyword">using</span> <span class="keyword">namespace </span>std;
-00020 <a class="code" href="classRtMidiIn.html">RtMidiIn</a> midi;
-00021 std::vector&lt;unsigned char&gt; message;
-00022
-00023 <span class="keywordflow">if</span> ( midi.<a class="code" href="classRtMidiIn.html#a5">getPortCount</a>() &lt; 1 ) {
-00024 cout &lt;&lt; <span class="stringliteral">"\nThere are no MIDI input sources available!\n"</span>;
-00025 exit(0);
-00026 }
-00027
-00028 <span class="keywordflow">try</span> {
-00029 midi.<a class="code" href="classRtMidiIn.html#a3">openPort</a>();
-00030 }
-00031 <span class="keywordflow">catch</span> ( <a class="code" href="classRtError.html">RtError</a> &amp; ) {
-00032 <span class="comment">// You might want to do something more useful here.</span>
-00033 cout &lt;&lt; <span class="stringliteral">"\nAborting program!\n"</span>;
-00034 <span class="keywordflow">goto</span> cleanup;
-00035 }
-00036
-00037 <span class="comment">// Install an interrupt handler function.</span>
-00038 (void) signal(SIGINT, finish);
-00039
-00040 <span class="keywordtype">int</span> nBytes, i, value;
-00041 <span class="keywordtype">double</span> stamp;
-00042 done = <span class="keyword">false</span>;
-00043 cout &lt;&lt; <span class="stringliteral">"Reading MIDI from default port ..."</span> &lt;&lt; endl;
-00044 <span class="keywordflow">while</span> ( !done ) {
-00045 stamp = midi.<a class="code" href="classRtMidiIn.html#a9">getMessage</a>( &amp;message );
-00046 nBytes = message.size();
-00047 <span class="keywordflow">for</span> ( i=0; i&lt;nBytes; i++ ) {
-00048 value = message[i];
-00049 cout &lt;&lt; <span class="stringliteral">"Byte "</span> &lt;&lt; i &lt;&lt; <span class="stringliteral">" = "</span> &lt;&lt; value &lt;&lt; <span class="stringliteral">", "</span>;
-00050 }
-00051 <span class="keywordflow">if</span> ( nBytes &gt; 0 )
-00052 cout &lt;&lt; <span class="stringliteral">"stamp = "</span> &lt;&lt; stamp &lt;&lt; <span class="charliteral">'\n'</span>;
-00053
-00054 <span class="comment">// Sleep for 10 milliseconds.</span>
-00055 usleep( 10000 );
-00056 }
-00057
-00058 cout &lt;&lt; <span class="stringliteral">"Goodbye!"</span> &lt;&lt; endl;
-00059
-00060 cleanup:
-00061 midi.<a class="code" href="classRtMidiIn.html#a4">closePort</a>();
-00062 <span class="keywordflow">return</span> 0;
-00063 }
-</pre></div><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>
diff --git a/doxygen/html/miditime_8cpp-source.html b/doxygen/html/miditime_8cpp-source.html
deleted file mode 100755
index cf274e6..0000000
--- a/doxygen/html/miditime_8cpp-source.html
+++ /dev/null
@@ -1,93 +0,0 @@
-<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="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
-<HR>
-<!-- Generated by Doxygen 1.3-rc3 -->
-<h1>miditime.cpp</h1><div class="fragment"><pre>00001 <span class="comment">// miditime.cpp</span>
-00002 <span class="comment">//</span>
-00003 <span class="comment">// Simple program to output MIDI to the default port.</span>
-00004 <span class="comment">//</span>
-00005 <span class="comment">// by Gary Scavone, 2003.</span>
-00006 <span class="comment">//</span>
-00007 <span class="comment">// compile: g++ -Wall -o miditime miditime.cpp RtMidi.cpp -framework CoreMIDI -framework CoreFoundation -framework CoreAudio</span>
-00008
-00009 <span class="preprocessor">#include &lt;iostream&gt;</span>
-00010 <span class="preprocessor">#include &lt;unistd.h&gt;</span>
-00011 <span class="preprocessor">#include &lt;signal.h&gt;</span>
-00012 <span class="preprocessor">#include "RtMidi.h"</span>
-00013
-00014 <span class="keywordtype">bool</span> done;
-00015 <span class="keyword">static</span> <span class="keywordtype">void</span> finish(<span class="keywordtype">int</span> ignore){ done = <span class="keyword">true</span>; }
-00016
-00017 <span class="keywordtype">int</span> main()
-00018 {
-00019 <span class="keyword">using</span> <span class="keyword">namespace </span>std;
-00020 <a class="code" href="classRtMidi.html">RtMidi</a> midi( RtMidi::ABSOLUTE_TIME );
-00021
-00022 <span class="keywordflow">if</span> ( midi.getPortCount( RtMidi::MIDI_OUTPUT ) &lt; 1 ) {
-00023 cout &lt;&lt; <span class="stringliteral">"\nThere are no MIDI output destinations available!\n"</span>;
-00024 exit(0);
-00025 }
-00026
-00027 <span class="keywordflow">try</span> {
-00028 midi.openPort( RtMidi::MIDI_OUTPUT );
-00029 }
-00030 <span class="keywordflow">catch</span> ( <a class="code" href="classRtError.html">RtError</a> &amp; ) {
-00031 <span class="comment">// You might want to do something more useful here.</span>
-00032 cout &lt;&lt; <span class="stringliteral">"\nAborting program!\n"</span>;
-00033 midi.closePort();
-00034 exit(0);
-00035 }
-00036
-00037 <span class="comment">// Install an interrupt handler function.</span>
-00038 (void) signal(SIGINT, finish);
-00039
-00040 RtMidi::MidiMessage message;
-00041 message.bytes.push_back( 144 );
-00042 message.bytes.push_back( 64 );
-00043 message.bytes.push_back( 80 );
-00044
-00045 cout &lt;&lt; <span class="stringliteral">"Scheduling for 1 second later ..."</span> &lt;&lt; endl;
-00046 timeval tvTime;
-00047 <span class="keywordflow">if</span> ( gettimeofday( &amp;tvTime, NULL ) == 0 ) {
-00048 message.timeStamp = (double) tvTime.tv_sec + 1.0;
-00049 message.timeStamp += (double) (tvTime.tv_usec * 0.000001);
-00050 }
-00051 <span class="comment">//message.timeStamp = 1.0;</span>
-00052 midi.sendMessage( &amp;message );
-00053
-00054 <span class="comment">// Sleep for 0.5 seconds.</span>
-00055 usleep( 1000000 );
-00056
-00057 cout &lt;&lt; <span class="stringliteral">"1 second has passed ..."</span> &lt;&lt; endl;
-00058
-00059 <span class="comment">// Sleep another 1.0 seconds.</span>
-00060 usleep( 1000000 );
-00061
-00062 cout &lt;&lt; <span class="stringliteral">"Turning note off ... "</span>;
-00063
-00064 <span class="comment">// Turn the note off.</span>
-00065 message.timeStamp = 0.0;
-00066 message.bytes[2] = 0;
-00067 midi.sendMessage( &amp;message );
-00068
-00069 midi.closePort();
-00070
-00071 cout &lt;&lt; <span class="stringliteral">"Goodbye!"</span> &lt;&lt; endl;
-00072 <span class="keywordflow">return</span> 0;
-00073 }
-</pre></div><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>
diff --git a/doxygen/html/newRtMidi_8h-source.html b/doxygen/html/newRtMidi_8h-source.html
deleted file mode 100755
index 971238f..0000000
--- a/doxygen/html/newRtMidi_8h-source.html
+++ /dev/null
@@ -1,148 +0,0 @@
-<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="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
-<HR>
-<!-- Generated by Doxygen 1.3-rc3 -->
-<h1>newRtMidi.h</h1><div class="fragment"><pre>00001 <span class="comment">/**********************************************************************/</span>
-00012 <span class="comment">/**********************************************************************/</span>
-00013
-00014 <span class="preprocessor">#ifndef RTMIDI_H</span>
-00015 <span class="preprocessor"></span><span class="preprocessor">#define RTMIDI_H</span>
-00016 <span class="preprocessor"></span>
-00017 <span class="preprocessor">#include &lt;vector&gt;</span>
-00018 <span class="preprocessor">#include &lt;string&gt;</span>
-00019 <span class="preprocessor">#include "RtError.h"</span>
-00020
-00021 <span class="comment">// Operating system dependent thread functionality.</span>
-00022 <span class="preprocessor">#if defined(__WINDOWS_DS__) || defined(__WINDOWS_ASIO__)</span>
-00023 <span class="preprocessor"></span><span class="preprocessor"> #include &lt;windows.h&gt;</span>
-00024 <span class="preprocessor"> #include &lt;process.h&gt;</span>
-00025
-00026 <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> ThreadHandle;
-00027 <span class="keyword">typedef</span> CRITICAL_SECTION Mutex;
-00028
-00029 <span class="preprocessor">#else // Various unix flavors with pthread support.</span>
-00030 <span class="preprocessor"></span><span class="preprocessor"> #include &lt;pthread.h&gt;</span>
-00031
-00032 <span class="keyword">typedef</span> pthread_t ThreadHandle;
-00033 <span class="keyword">typedef</span> pthread_mutex_t Mutex;
-00034
-00035 <span class="preprocessor">#endif</span>
-00036 <span class="preprocessor"></span>
-00037 <span class="comment">// OS-X CoreMIDI header files.</span>
-00038 <span class="preprocessor">#include &lt;CoreMIDI/CoreMIDI.h&gt;</span>
-00039 <span class="preprocessor">#include &lt;CoreAudio/HostTime.h&gt;</span>
-00040
-00041 <span class="comment">// Issues yet to resolve:</span>
-00042 <span class="comment">// - how do we make this cross-platform</span>
-00043 <span class="comment">// - no subclasses</span>
-00044 <span class="comment">// - instead, attempt an optional api argument for oss/alsa selection</span>
-00045 <span class="comment">// - do we keep both input and output functionality here?</span>
-00046 <span class="comment">//</span>
-00047 <span class="comment">// - RtMidiIn, RtMidiOut</span>
-00048 <span class="comment">//</span>
-00049 <span class="comment">// - what do we call the ignore() function?</span>
-00050
-00051
-00052
-00053 <span class="keyword">class </span><a class="code" href="classRtMidi.html">RtMidi</a>
-00054 {
-00055 <span class="keyword">public</span>:
-00056
-<a name="l00058"></a><a class="code" href="classRtMidi.html#s8">00058</a> <span class="keyword">enum</span> <a class="code" href="classRtMidi.html#s8">PortType</a> { RTMIDI_INPUT, RTMIDI_OUTPUT };
-00059
-<a name="l00061"></a><a class="code" href="classRtMidi.html#s0">00061</a> <span class="keyword">typedef</span> void (*RtMidiCallback)( std::vector&lt;unsigned char&gt; *message, <span class="keywordtype">void</span> *userData);
-00062
-00064 <a class="code" href="classRtMidi.html#a0">RtMidi</a>();
-00065
-00067
-00071 <a class="code" href="classRtMidi.html#a0">RtMidi</a>( PortType type, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber = 0 );
-00072
-00074 <a class="code" href="classRtMidi.html#a2">~RtMidi</a>();
-00075
-00077
-00083 <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#a3">openPort</a>( PortType type, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber = 0 );
-00084
-00086 <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#a4">closePort</a>( <span class="keywordtype">void</span> );
-00087
-00089 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtMidi.html#a5">getPortCount</a>( PortType type );
-00090
-00092 std::string <a class="code" href="classRtMidi.html#a6">getPortName</a>( PortType type, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber );
-00093
-00095 <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#a7">setInputCallback</a>( RtMidiCallback callback, <span class="keywordtype">void</span> *userData);
-00096
-00097 <span class="keywordtype">void</span> setInputQueueSize( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> queueSize );
-00098
-00100
-00107 <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#a9">setIgnoreTypes</a>( <span class="keywordtype">bool</span> midiSysex = <span class="keyword">true</span>, <span class="keywordtype">bool</span> midiSense = <span class="keyword">true</span>, <span class="keywordtype">bool</span> midiTime = <span class="keyword">true</span> );
-00108
-00110
-00117 <span class="keywordtype">double</span> <a class="code" href="classRtMidi.html#a10">getMessage</a>( std::vector&lt;unsigned char&gt; *message );
-00118
-00120
-00124 <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#a11">sendMessage</a>( std::vector&lt;unsigned char&gt; *message );
-00125
-00126 <span class="comment">// A MIDI structure used internally by the class to store incoming</span>
-00127 <span class="comment">// messages. Each message represents one and only one MIDI message.</span>
-00128 <span class="keyword">struct </span>MidiMessage {
-00129 std::vector&lt;unsigned char&gt; bytes;
-00130 <span class="keywordtype">double</span> timeStamp;
-00131
-00132 <span class="comment">// Default constructor.</span>
-00133 MidiMessage()
-00134 :bytes(3), timeStamp(0.0) {}
-00135 };
-00136
-00137 <span class="comment">// This public structure is used to pass private class data to the</span>
-00138 <span class="comment">// MIDI input callback function or thread.</span>
-00139 <span class="keyword">struct </span>RtMidiCallbackInfo {
-00140 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> writeIndex;
-00141 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> lastTime;
-00142 MidiMessage buffer[nMessages];
-00143 Mutex mutex;
-00144 <span class="keywordtype">bool</span> usingCallback;
-00145 <span class="keywordtype">void</span> *userCallback;
-00146 <span class="keywordtype">void</span> *userData;
-00147
-00148 <span class="comment">// Default constructor.</span>
-00149 RtMidiCallbackInfo()
-00150 : writeIndex(0), doDeltaTime(true), lastTime(0),
-00151 usingCallback(false), userCallback(0), userData(0) {}
-00152 };
-00153
-00154 <span class="keyword">private</span>:
-00155
-00156 <span class="comment">// A basic error reporting function for internal use in the RtMidi</span>
-00157 <span class="comment">// class. The behavior of this function can be modified to suit</span>
-00158 <span class="comment">// specific needs.</span>
-00159 <span class="keywordtype">void</span> error( RtError::Type type );
-00160
-00161 MidiMessage currentMessage_;
-00162 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nMessages;
-00163 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> readIndex_;
-00164 MIDIClientRef client_;
-00165 MIDIPortRef port_;
-00166 MIDIEndpointRef destinationId_;
-00167 RtMidiCallbackInfo callbackInfo_;
-00168 <span class="keywordtype">bool</span> connected_;
-00169 <span class="keywordtype">bool</span> isInputPort_;
-00170 std::string errorString_;
-00171
-00172 };
-00173
-00174 <span class="preprocessor">#endif</span>
-</pre></div><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>
diff --git a/doxygen/html/oldRtMidi_8cpp-source.html b/doxygen/html/oldRtMidi_8cpp-source.html
deleted file mode 100755
index 90c3f47..0000000
--- a/doxygen/html/oldRtMidi_8cpp-source.html
+++ /dev/null
@@ -1,385 +0,0 @@
-<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="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
-<HR>
-<!-- Generated by Doxygen 1.3-rc3 -->
-<h1>oldRtMidi.cpp</h1><div class="fragment"><pre>00001 <span class="comment">// RtMidi class declaration</span>
-00002 <span class="comment">// Realtime MIDI input/output class.</span>
-00003 <span class="comment">//</span>
-00004 <span class="comment">// This class provides access to a single MIDI input or output port.</span>
-00005 <span class="comment">// Create multiple instances of this class to connect to more than</span>
-00006 <span class="comment">// one MIDI device at the same time.</span>
-00007 <span class="comment">//</span>
-00008 <span class="comment">// by Gary P. Scavone, 2003.</span>
-00009
-00010 <span class="preprocessor">#include "RtMidi.h"</span>
-00011 <span class="preprocessor">#include &lt;sstream&gt;</span>
-00012 <span class="preprocessor">#include &lt;sys/time.h&gt;</span>
-00013
-00014 <span class="keywordtype">void</span> midiInputCallback( <span class="keyword">const</span> MIDIPacketList *list, <span class="keywordtype">void</span> *procRef, <span class="keywordtype">void</span> *srcRef )
-00015 {
-00016 RtMidi::RtMidiCallbackInfo *info = static_cast&lt;RtMidi::RtMidiCallbackInfo *&gt; (procRef);
-00017
-00018 RtMidi::MidiMessage *message;
-00019 <span class="keyword">const</span> MIDIPacket *packet = &amp;list-&gt;packet[0];
-00020 <span class="keywordflow">for</span> ( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i=0; i&lt;list-&gt;numPackets; ++i ) {
-00021
-00022 <span class="comment">// For the moment, we're limiting ourselves to basic MIDI messages</span>
-00023 <span class="comment">// and ignoring the (real) possibility that multiple MIDI messages</span>
-00024 <span class="comment">// can be packed into a single MIDIPacket. FIXME!!!</span>
-00025 <span class="keywordflow">if</span> ( packet-&gt;length &gt; 3 ) <span class="keywordflow">continue</span>;
-00026
-00027 message = static_cast&lt;RtMidi::MidiMessage *&gt; (&amp;info-&gt;buffer[info-&gt;writeIndex++]);
-00028 message-&gt;bytes.assign( packet-&gt;data, &amp;packet-&gt;data[packet-&gt;length] );
-00029
-00030 <span class="comment">// - have status byte:</span>
-00031 <span class="comment">// - look for subsequent data bytes of known number (unless sysex ... unknown number)</span>
-00032 <span class="comment">// - if find a system realtime:</span>
-00033 <span class="comment">// - copy incomplete message to next buffer</span>
-00034 <span class="comment">// - clear current buffer and write realtime message</span>
-00035 <span class="comment">// - continue parsing data bytes</span>
-00036 <span class="comment">// while !finished parsing:</span>
-00037 <span class="comment">// if data byte</span>
-00038 <span class="comment">// if ( incomplete ) {</span>
-00039 <span class="comment">// for ( int i = 0; i &lt; packet-&gt;length; i++ ) {</span>
-00040 <span class="comment">// if while ( packet-&gt;data[</span>
-00041 <span class="comment">// }</span>
-00042 <span class="comment">//}</span>
-00043
-00044 <span class="comment">// Calculate time stamp.</span>
-00045 message-&gt;timeStamp = 0.0;
-00046 <span class="keywordflow">if</span> ( info-&gt;doDeltaTime ) {
-00047 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> time = packet-&gt;timeStamp;
-00048 time -= info-&gt;lastTime;
-00049 info-&gt;lastTime = packet-&gt;timeStamp;
-00050 time = AudioConvertHostTimeToNanos( time );
-00051 message-&gt;timeStamp = time * 0.000000001;
-00052 }
-00053 <span class="keywordflow">else</span> { <span class="comment">// absolute time in seconds since midnight (0 hour), January 1, 1970</span>
-00054 timeval time;
-00055 <span class="keywordflow">if</span> ( gettimeofday( &amp;time, NULL ) != 0 ) {
-00056 std::cerr &lt;&lt; <span class="stringliteral">"RtMidi: error in midiInputCallback calculating time stamp."</span>;
-00057 }
-00058 <span class="keywordflow">else</span> {
-00059 message-&gt;timeStamp = (double) time.tv_sec;
-00060 message-&gt;timeStamp += (double) (time.tv_usec * 0.000001);
-00061 }
-00062 }
-00063
-00064 <span class="keywordflow">if</span> ( info-&gt;writeIndex &gt;= nMessages )
-00065 info-&gt;writeIndex = 0;
-00066
-00067 <span class="keywordflow">if</span> ( info-&gt;usingCallback ) {
-00068 <a class="code" href="classRtMidi.html#s0">RtMidi::RtMidiCallback</a> callback = (RtMidi::RtMidiCallback) info-&gt;userCallback;
-00069 callback( message, info-&gt;userData );
-00070 }
-00071
-00072 packet = MIDIPacketNext(packet);
-00073 }
-00074 }
-00075
-00076 <a class="code" href="classRtMidi.html#a0">RtMidi :: RtMidi</a>( TimeType time )
-00077 {
-00078 <span class="keywordflow">if</span> ( time == ABSOLUTE_TIME ) callbackInfo_.doDeltaTime = <span class="keyword">false</span>;
-00079 callbackInfo_.lastTime = AudioGetCurrentHostTime();
-00080 readIndex_ = 0;
-00081 connected_ = <span class="keyword">false</span>;
-00082 }
-00083
-00084 <a class="code" href="classRtMidi.html#a0">RtMidi :: RtMidi</a>( PortType type, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber, TimeType time )
-00085 {
-00086 <span class="keywordflow">if</span> ( time == ABSOLUTE_TIME ) callbackInfo_.doDeltaTime = <span class="keyword">false</span>;
-00087 callbackInfo_.lastTime = AudioGetCurrentHostTime();
-00088 readIndex_ = 0;
-00089 connected_ = <span class="keyword">false</span>;
-00090
-00091 <span class="comment">// Attempt to make the connection.</span>
-00092 this-&gt;<a class="code" href="classRtMidi.html#a3">openPort</a>( type, portNumber );
-00093 }
-00094
-<a name="l00095"></a><a class="code" href="classRtMidi.html#a2">00095</a> <a class="code" href="classRtMidi.html#a2">RtMidi :: ~RtMidi</a>()
-00096 {
-00097 <span class="keywordflow">if</span> ( connected_ ) {
-00098 MIDIClientDispose( client_ );
-00099 MIDIPortDispose( port_ );
-00100 }
-00101 }
-00102
-<a name="l00103"></a><a class="code" href="classRtMidi.html#a3">00103</a> <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#a3">RtMidi :: openPort</a>( PortType type, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber )
-00104 {
-00105 <span class="keywordflow">if</span> ( connected_ ) {
-00106 errorString_ = <span class="stringliteral">"RtMidi::openPort: a valid connection already exists."</span>;
-00107 error( RtError::WARNING );
-00108 <span class="keywordflow">return</span>;
-00109 }
-00110
-00111 <span class="keywordflow">if</span> ( portNumber &lt; 0 ) {
-00112 errorString_ = <span class="stringliteral">"RtMidi::openPort: the 'portNumber' argument must be greater than zero."</span>;
-00113 error( RtError::INVALID_PARAMETER );
-00114 }
-00115
-00116 std::ostringstream ost;
-00117 <span class="keywordflow">if</span> ( type == MIDI_INPUT ) {
-00118 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nSrc = MIDIGetNumberOfSources();
-00119 <span class="keywordflow">if</span> (nSrc &lt; 1) {
-00120 errorString_ = <span class="stringliteral">"RtMidi::openPort: no MIDI input sources found!"</span>;
-00121 error( RtError::NO_DEVICES_FOUND );
-00122 }
-00123
-00124 <span class="keywordflow">if</span> ( portNumber &gt;= nSrc ) {
-00125 ost &lt;&lt; <span class="stringliteral">"RtMidi::openPort: the 'portNumber' argument ("</span> &lt;&lt; portNumber &lt;&lt; <span class="stringliteral">") is invalid."</span>;
-00126 errorString_ = ost.str();
-00127 error( RtError::INVALID_PARAMETER );
-00128 }
-00129
-00130 OSStatus result = MIDIClientCreate( CFSTR(<span class="stringliteral">"RtMidi Input Client"</span>), NULL, NULL, &amp;client_ );
-00131 <span class="keywordflow">if</span> ( result != noErr ) {
-00132 errorString_ = <span class="stringliteral">"RtMidi::openPort: error creating OS-X MIDI client object."</span>;
-00133 error( RtError::DRIVER_ERROR );
-00134 }
-00135
-00136 result = MIDIInputPortCreate( client_, CFSTR(<span class="stringliteral">"RtMidi Virtual MIDI Input Port"</span>), midiInputCallback, (<span class="keywordtype">void</span> *)&amp;callbackInfo_, &amp;port_ );
-00137 <span class="keywordflow">if</span> ( result != noErr ) {
-00138 MIDIClientDispose( client_ );
-00139 errorString_ = <span class="stringliteral">"RtMidi::openPort: error creating OS-X MIDI input port."</span>;
-00140 error( RtError::DRIVER_ERROR );
-00141 }
-00142
-00143 <span class="comment">// Get the desired input source identifier.</span>
-00144 MIDIEndpointRef src = MIDIGetSource( portNumber );
-00145 <span class="keywordflow">if</span> ( src == NULL ) {
-00146 MIDIPortDispose( port_ );
-00147 MIDIClientDispose( client_ );
-00148 errorString_ = <span class="stringliteral">"RtMidi::openPort: error getting MIDI input source reference."</span>;
-00149 error( RtError::DRIVER_ERROR );
-00150 }
-00151
-00152 <span class="comment">// Make the connection.</span>
-00153 result = MIDIPortConnectSource(port_, src, NULL );
-00154 <span class="keywordflow">if</span> ( result != noErr ) {
-00155 MIDIPortDispose( port_ );
-00156 MIDIClientDispose( client_ );
-00157 errorString_ = <span class="stringliteral">"RtMidi::openPort: error connecting OS-X MIDI input port."</span>;
-00158 error( RtError::DRIVER_ERROR );
-00159 }
-00160
-00161 isInputPort_ = <span class="keyword">true</span>;
-00162 callbackInfo_.lastTime = AudioGetCurrentHostTime();
-00163 }
-00164 <span class="keywordflow">else</span> { <span class="comment">// MIDI_OUTPUT</span>
-00165 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nDest = MIDIGetNumberOfDestinations();
-00166 <span class="keywordflow">if</span> (nDest &lt; 1) {
-00167 errorString_ = <span class="stringliteral">"RtMidi::openPort: no MIDI output destinations found!"</span>;
-00168 error( RtError::NO_DEVICES_FOUND );
-00169 }
-00170
-00171 <span class="keywordflow">if</span> ( portNumber &gt;= nDest ) {
-00172 ost &lt;&lt; <span class="stringliteral">"RtMidi::openPort: the 'portNumber' argument ("</span> &lt;&lt; portNumber &lt;&lt; <span class="stringliteral">") is invalid."</span>;
-00173 errorString_ = ost.str();
-00174 error( RtError::INVALID_PARAMETER );
-00175 }
-00176
-00177 OSStatus result = MIDIClientCreate( CFSTR(<span class="stringliteral">"RtMidi Output Client"</span>), NULL, NULL, &amp;client_ );
-00178 <span class="keywordflow">if</span> ( result != noErr ) {
-00179 errorString_ = <span class="stringliteral">"RtMidi::openPort: error creating OS-X MIDI client object."</span>;
-00180 error( RtError::DRIVER_ERROR );
-00181 }
-00182
-00183 result = MIDIOutputPortCreate( client_, CFSTR(<span class="stringliteral">"RtMidi Virtual MIDI Output Port"</span>), &amp;port_ );
-00184 <span class="keywordflow">if</span> ( result != noErr ) {
-00185 MIDIClientDispose( client_ );
-00186 errorString_ = <span class="stringliteral">"RtMidi::openPort: error creating OS-X MIDI output port."</span>;
-00187 error( RtError::DRIVER_ERROR );
-00188 }
-00189
-00190 <span class="comment">// Get the desired output port identifier.</span>
-00191 destinationId_ = MIDIGetDestination( portNumber );
-00192 <span class="keywordflow">if</span> ( destinationId_ == NULL ) {
-00193 MIDIPortDispose( port_ );
-00194 MIDIClientDispose( client_ );
-00195 errorString_ = <span class="stringliteral">"RtMidi::openPort: error getting MIDI output destination reference."</span>;
-00196 error( RtError::DRIVER_ERROR );
-00197 }
-00198
-00199 isInputPort_ = <span class="keyword">false</span>;
-00200 }
-00201
-00202 connected_ = <span class="keyword">true</span>;
-00203 }
-00204
-<a name="l00205"></a><a class="code" href="classRtMidi.html#a4">00205</a> <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#a4">RtMidi :: closePort</a>( <span class="keywordtype">void</span> )
-00206 {
-00207 <span class="keywordflow">if</span> ( connected_ ) {
-00208 MIDIClientDispose( client_ );
-00209 MIDIPortDispose( port_ );
-00210 }
-00211 <span class="keywordflow">else</span> {
-00212 errorString_ = <span class="stringliteral">"RtMidi::closePort: a port connection was not open!"</span>;
-00213 error( RtError::WARNING );
-00214 }
-00215 connected_ = <span class="keyword">false</span>;
-00216 }
-00217
-<a name="l00218"></a><a class="code" href="classRtMidi.html#a5">00218</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtMidi.html#a5">RtMidi :: getPortCount</a>( PortType type )
-00219 {
-00220 <span class="keywordflow">if</span> ( type == MIDI_INPUT )
-00221 <span class="keywordflow">return</span> MIDIGetNumberOfSources();
-00222 <span class="keywordflow">else</span> <span class="comment">// MIDI_OUTPUT</span>
-00223 <span class="keywordflow">return</span> MIDIGetNumberOfDestinations();
-00224 }
-00225
-<a name="l00226"></a><a class="code" href="classRtMidi.html#a6">00226</a> std::string <a class="code" href="classRtMidi.html#a6">RtMidi :: getPortName</a>( PortType type, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber )
-00227 {
-00228 CFStringRef nameRef;
-00229 MIDIEndpointRef portRef;
-00230 std::ostringstream ost;
-00231 <span class="keywordtype">char</span> name[128];
-00232 <span class="keywordflow">if</span> ( type == MIDI_INPUT ) {
-00233 <span class="keywordflow">if</span> ( portNumber &lt; 0 || portNumber &gt;= MIDIGetNumberOfSources() ) {
-00234 ost &lt;&lt; <span class="stringliteral">"RtMidi::getPortName: the 'portNumber' argument ("</span> &lt;&lt; portNumber &lt;&lt; <span class="stringliteral">") is invalid."</span>;
-00235 errorString_ = ost.str();
-00236 error( RtError::INVALID_PARAMETER );
-00237 }
-00238 portRef = MIDIGetSource( portNumber );
-00239 }
-00240 <span class="keywordflow">else</span> { <span class="comment">// MIDI_OUTPUT</span>
-00241 <span class="keywordflow">if</span> ( portNumber &lt; 0 || portNumber &gt;= MIDIGetNumberOfDestinations() ) {
-00242 ost &lt;&lt; <span class="stringliteral">"RtMidi::getPortName: the 'portNumber' argument ("</span> &lt;&lt; portNumber &lt;&lt; <span class="stringliteral">") is invalid."</span>;
-00243 errorString_ = ost.str();
-00244 error( RtError::INVALID_PARAMETER );
-00245 }
-00246 portRef = MIDIGetDestination( portNumber );
-00247 }
-00248
-00249 MIDIObjectGetStringProperty( portRef, kMIDIPropertyName, &amp;nameRef );
-00250 CFStringGetCString( nameRef, name, <span class="keyword">sizeof</span>(name), 0);
-00251 CFRelease( nameRef );
-00252 std::string stringName = name;
-00253 <span class="keywordflow">return</span> stringName;
-00254 }
-00255
-<a name="l00256"></a><a class="code" href="classRtMidi.html#a7">00256</a> <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#a7">RtMidi :: setInputCallback</a>( RtMidiCallback callback, <span class="keywordtype">void</span> *userData)
-00257 {
-00258 callbackInfo_.userCallback = (<span class="keywordtype">void</span> *) callback;
-00259 callbackInfo_.userData = userData;
-00260 callbackInfo_.usingCallback = <span class="keyword">true</span>;
-00261 }
-00262
-00263 <span class="keyword">const</span> RtMidi::MidiMessage* <a class="code" href="classRtMidi.html#a10">RtMidi :: getMessage</a>( <span class="keywordtype">void</span> )
-00264 {
-00265 currentMessage_.bytes.clear();
-00266 <span class="keywordflow">if</span> ( !connected_ ) {
-00267 errorString_ = <span class="stringliteral">"RtMidi::getNextMessage: a port is not open!"</span>;
-00268 error( RtError::WARNING );
-00269 <span class="keywordflow">return</span> &amp;currentMessage_;
-00270 }
-00271
-00272 <span class="keywordflow">if</span> ( !isInputPort_ ) {
-00273 errorString_ = <span class="stringliteral">"RtMidi::getNextMessage: this is not an input port!"</span>;
-00274 error( RtError::WARNING );
-00275 <span class="keywordflow">return</span> &amp;currentMessage_;
-00276 }
-00277
-00278 <span class="keywordflow">if</span> ( callbackInfo_.usingCallback ) {
-00279 errorString_ = <span class="stringliteral">"RtMidi::getNextMessage: a user callback is currently set for this port."</span>;
-00280 error( RtError::WARNING );
-00281 <span class="keywordflow">return</span> &amp;currentMessage_;
-00282 }
-00283
-00284 <span class="keywordflow">if</span> ( readIndex_ == callbackInfo_.writeIndex ) <span class="keywordflow">return</span> &amp;currentMessage_;
-00285
-00286 currentMessage_ = callbackInfo_.buffer[readIndex_++];
-00287 <span class="keywordflow">if</span> ( readIndex_ &gt;= nMessages ) readIndex_ = 0;
-00288
-00289 <span class="keywordflow">return</span> &amp;currentMessage_;
-00290 }
-00291
-00292 <span class="keywordtype">bool</span> <a class="code" href="classRtMidi.html#a11">RtMidi :: sendMessage</a>( <span class="keyword">const</span> MidiMessage *message )
-00293 {
-00294 <span class="keywordflow">if</span> ( !connected_ ) {
-00295 errorString_ = <span class="stringliteral">"RtMidi::sendMessage: a port is not open!"</span>;
-00296 error( RtError::WARNING );
-00297 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-00298 }
-00299
-00300 <span class="keywordflow">if</span> ( isInputPort_ ) {
-00301 errorString_ = <span class="stringliteral">"RtMidi::sendMessage: this is not an output port!"</span>;
-00302 error( RtError::WARNING );
-00303 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-00304 }
-00305
-00306 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nBytes = message-&gt;bytes.size();
-00307 <span class="comment">// Pad the buffer for extra (unknown) structure data.</span>
-00308 Byte buffer[nBytes+32];
-00309 MIDIPacketList *pktlist = (MIDIPacketList *) buffer;
-00310 MIDIPacket *curPacket = MIDIPacketListInit( pktlist );
-00311
-00312 MIDITimeStamp timeStamp = 0;
-00313 <span class="comment">// If a non-zero delta or absolute time, convert to CoreMIDI's host time.</span>
-00314 <span class="keywordflow">if</span> ( message-&gt;timeStamp != 0.0 ) {
-00315 <span class="keywordflow">if</span> ( callbackInfo_.doDeltaTime ) {
-00316 timeStamp = AudioConvertHostTimeToNanos( AudioGetCurrentHostTime() );
-00317 timeStamp += (UInt64) (message-&gt;timeStamp * 1000000000.0);
-00318 timeStamp = AudioConvertNanosToHostTime( timeStamp );
-00319 }
-00320 <span class="keywordflow">else</span> {
-00321 timeval tvTime;
-00322 <span class="keywordtype">double</span> time;
-00323 <span class="keywordflow">if</span> ( gettimeofday( &amp;tvTime, NULL ) != 0 ) {
-00324 errorString_ = <span class="stringliteral">"RtMidi::sendMessage: error calculating time stamp."</span>;
-00325 error( RtError::WARNING );
-00326 }
-00327 <span class="keywordflow">else</span> {
-00328 time = (double) tvTime.tv_sec;
-00329 time += (double) (tvTime.tv_usec * 0.000001);
-00330 time = message-&gt;timeStamp - time;
-00331 <span class="keywordflow">if</span> ( time &gt; 0.0 ) {
-00332 timeStamp = AudioConvertHostTimeToNanos( AudioGetCurrentHostTime() );
-00333 timeStamp += (UInt64) (time * 1000000000.0);
-00334 timeStamp = AudioConvertNanosToHostTime( timeStamp );
-00335 }
-00336 }
-00337 }
-00338 }
-00339 curPacket = MIDIPacketListAdd( pktlist, <span class="keyword">sizeof</span>(buffer), curPacket, timeStamp, nBytes, &amp;message-&gt;bytes[0]);
-00340
-00341 OSStatus result = MIDISend( port_, destinationId_, pktlist );
-00342 <span class="keywordflow">if</span> ( result != noErr ) {
-00343 errorString_ = <span class="stringliteral">"RtMidi::sendMessage: error sending MIDI message."</span>;
-00344 error( RtError::WARNING );
-00345 <span class="keywordflow">return</span> <span class="keyword">false</span>;
-00346 }
-00347
-00348 <span class="keywordflow">return</span> <span class="keyword">true</span>;
-00349 }
-00350
-00351 <span class="keywordtype">void</span> RtMidi :: error( RtError::Type type )
-00352 {
-00353 <span class="keywordflow">if</span> (type == RtError::WARNING) {
-00354 std::cerr &lt;&lt; <span class="charliteral">'\n'</span> &lt;&lt; errorString_ &lt;&lt; <span class="stringliteral">"\n\n"</span>;
-00355 }
-00356 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (type == RtError::DEBUG_WARNING) {
-00357 <span class="preprocessor">#if defined(__RTMIDI_DEBUG__)</span>
-00358 <span class="preprocessor"></span> std::cerr &lt;&lt; <span class="charliteral">'\n'</span> &lt;&lt; errorString_ &lt;&lt; <span class="stringliteral">"\n\n"</span>;
-00359 <span class="preprocessor">#endif</span>
-00360 <span class="preprocessor"></span> }
-00361 <span class="keywordflow">else</span> {
-00362 std::cerr &lt;&lt; <span class="charliteral">'\n'</span> &lt;&lt; errorString_ &lt;&lt; <span class="stringliteral">"\n\n"</span>;
-00363 <span class="keywordflow">throw</span> <a class="code" href="classRtError.html">RtError</a>( errorString_, type );
-00364 }
-00365 }
-</pre></div><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>
diff --git a/doxygen/html/oldRtMidi_8h-source.html b/doxygen/html/oldRtMidi_8h-source.html
deleted file mode 100755
index 26ea396..0000000
--- a/doxygen/html/oldRtMidi_8h-source.html
+++ /dev/null
@@ -1,163 +0,0 @@
-<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="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
-<HR>
-<!-- Generated by Doxygen 1.3-rc3 -->
-<h1>oldRtMidi.h</h1><div class="fragment"><pre>00001 <span class="comment">/**********************************************************************/</span>
-00011 <span class="comment">/**********************************************************************/</span>
-00012
-00013 <span class="preprocessor">#ifndef RTMIDI_H</span>
-00014 <span class="preprocessor"></span><span class="preprocessor">#define RTMIDI_H</span>
-00015 <span class="preprocessor"></span>
-00016 <span class="preprocessor">#include &lt;vector&gt;</span>
-00017 <span class="preprocessor">#include &lt;string&gt;</span>
-00018 <span class="preprocessor">#include "RtError.h"</span>
-00019
-00020 <span class="comment">// Operating system dependent thread functionality.</span>
-00021 <span class="preprocessor">#if defined(__WINDOWS_DS__) || defined(__WINDOWS_ASIO__)</span>
-00022 <span class="preprocessor"></span><span class="preprocessor"> #include &lt;windows.h&gt;</span>
-00023 <span class="preprocessor"> #include &lt;process.h&gt;</span>
-00024
-00025 <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> ThreadHandle;
-00026 <span class="keyword">typedef</span> CRITICAL_SECTION Mutex;
-00027
-00028 <span class="preprocessor">#else // Various unix flavors with pthread support.</span>
-00029 <span class="preprocessor"></span><span class="preprocessor"> #include &lt;pthread.h&gt;</span>
-00030
-00031 <span class="keyword">typedef</span> pthread_t ThreadHandle;
-00032 <span class="keyword">typedef</span> pthread_mutex_t Mutex;
-00033
-00034 <span class="preprocessor">#endif</span>
-00035 <span class="preprocessor"></span>
-00036 <span class="comment">// OS-X CoreMIDI header files.</span>
-00037 <span class="preprocessor">#include &lt;CoreMIDI/CoreMIDI.h&gt;</span>
-00038 <span class="preprocessor">#include &lt;CoreAudio/HostTime.h&gt;</span>
-00039
-00040 <span class="comment">// Set the size of the circular MIDI input message buffer.</span>
-00041 <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nMessages = 100;
-00042
-00043 <span class="keyword">class </span><a class="code" href="classRtMidi.html">RtMidi</a>
-00044 {
-00045 <span class="keyword">public</span>:
-00046
-00047 <span class="comment">// A MIDI message structure. Each message represents one and only</span>
-00048 <span class="comment">// one MIDI message. Given the variable length of the bytes member,</span>
-00049 <span class="comment">// this structure can contain sysex messages of arbitrary length.</span>
-00050 <span class="keyword">struct </span>MidiMessage {
-00051 std::vector&lt;unsigned char&gt; bytes;
-00052 <span class="keywordtype">double</span> timeStamp;
-00053
-00054 <span class="comment">// Default constructor.</span>
-00055 MidiMessage()
-00056 :bytes(3), timeStamp(0.0) {}
-00057 };
-00058
-00059 <span class="comment">// Defined MIDI port types.</span>
-00060 <span class="keyword">enum</span> <a class="code" href="classRtMidi.html#s8">PortType</a> { MIDI_INPUT, MIDI_OUTPUT };
-00061
-00062 <span class="comment">// Defined MIDI time stamp types. Times are saved in a</span>
-00063 <span class="comment">// double-precision floating-point variable. Delta time is in</span>
-00064 <span class="comment">// seconds (between events). Absolute time is in seconds since</span>
-00065 <span class="comment">// midnight (0 hour), January 1, 1970.</span>
-00066 <span class="keyword">enum</span> TimeType { DELTA_TIME, ABSOLUTE_TIME };
-00067
-00068 <span class="comment">// User callback function type definition.</span>
-00069 <span class="keyword">typedef</span> void (*RtMidiCallback)( MidiMessage *message, <span class="keywordtype">void</span> *userData);
-00070
-00071 <span class="comment">// Default constructor.</span>
-00072 <a class="code" href="classRtMidi.html#a0">RtMidi</a>( TimeType time = DELTA_TIME );
-00073
-00074 <span class="comment">// An overloaded constructor which can be used to open a MIDI port</span>
-00075 <span class="comment">// during instantiation. An exception is thrown if an error occurs</span>
-00076 <span class="comment">// while attempting to make the port connection.</span>
-00077 <a class="code" href="classRtMidi.html#a0">RtMidi</a>( PortType type, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber = 0, TimeType time = DELTA_TIME );
-00078
-00079 <span class="comment">// The destructor closes any open MIDI connections.</span>
-00080 <a class="code" href="classRtMidi.html#a2">~RtMidi</a>();
-00081
-00082 <span class="comment">// Open a MIDI connection of the specified type. An optional port</span>
-00083 <span class="comment">// number greater than 0 can be specified. Otherwise, the default</span>
-00084 <span class="comment">// or first port found is opened. An exception is thrown if an</span>
-00085 <span class="comment">// error occurs while attempting to make the port connection.</span>
-00086 <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#a3">openPort</a>( PortType type, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber = 0 );
-00087
-00088 <span class="comment">// Close an open MIDI connection (if one exists).</span>
-00089 <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#a4">closePort</a>( <span class="keywordtype">void</span> );
-00090
-00091 <span class="comment">// Return the number of available MIDI ports of the specified type.</span>
-00092 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtMidi.html#a5">getPortCount</a>( PortType type );
-00093
-00094 <span class="comment">// Return a string identifier for the specified MIDI port type and number.</span>
-00095 std::string <a class="code" href="classRtMidi.html#a6">getPortName</a>( PortType type, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber );
-00096
-00097 <span class="comment">// Set a user-defined callback function for notification of Midi input.</span>
-00098 <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#a7">setInputCallback</a>( RtMidiCallback callback, <span class="keywordtype">void</span> *userData);
-00099
-00100 <span class="comment">// Return a reference to a vector containing the next available</span>
-00101 <span class="comment">// incoming MIDI message. This function returns immediately whether</span>
-00102 <span class="comment">// a new message is available or not. A valid message is indicated</span>
-00103 <span class="comment">// by a non-zero vector size in the MidiMessage structure. An</span>
-00104 <span class="comment">// exception is thrown if an error occurs during message retrieval</span>
-00105 <span class="comment">// or an input connection was not previously established.</span>
-00106 <span class="keyword">const</span> RtMidi::MidiMessage *<a class="code" href="classRtMidi.html#a10">getMessage</a>( <span class="keywordtype">void</span> );
-00107
-00108 <span class="comment">// Send a single message out an open MIDI port. If the message time</span>
-00109 <span class="comment">// stamp is non-zero, the message will be scheduled for output</span>
-00110 <span class="comment">// accordingly. Otherwise, it will be output immediately. An</span>
-00111 <span class="comment">// exception is thrown if an error occurs during output or an output</span>
-00112 <span class="comment">// connection was not previously established.</span>
-00113 <span class="keywordtype">bool</span> <a class="code" href="classRtMidi.html#a11">sendMessage</a>( <span class="keyword">const</span> MidiMessage *message );
-00114
-00115 <span class="comment">// This public structure is used to pass private class data to the</span>
-00116 <span class="comment">// MIDI input callback function or thread.</span>
-00117 <span class="keyword">struct </span>RtMidiCallbackInfo {
-00118 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> writeIndex;
-00119 <span class="keywordtype">bool</span> doDeltaTime;
-00120 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> lastTime;
-00121 MidiMessage buffer[nMessages];
-00122 Mutex mutex;
-00123 <span class="keywordtype">bool</span> usingCallback;
-00124 <span class="keywordtype">void</span> *userCallback;
-00125 <span class="keywordtype">void</span> *userData;
-00126
-00127 <span class="comment">// Default constructor.</span>
-00128 RtMidiCallbackInfo()
-00129 : writeIndex(0), doDeltaTime(true), lastTime(0),
-00130 usingCallback(false), userCallback(0), userData(0) {}
-00131 };
-00132
-00133 <span class="keyword">private</span>:
-00134
-00135 <span class="comment">// A basic error reporting function for internal use in the RtMidi</span>
-00136 <span class="comment">// class. The behavior of this function can be modified to suit</span>
-00137 <span class="comment">// specific needs.</span>
-00138 <span class="keywordtype">void</span> error( RtError::Type type );
-00139
-00140 MidiMessage currentMessage_;
-00141 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> readIndex_;
-00142 MIDIClientRef client_;
-00143 MIDIPortRef port_;
-00144 MIDIEndpointRef destinationId_;
-00145 RtMidiCallbackInfo callbackInfo_;
-00146 <span class="keywordtype">bool</span> connected_;
-00147 <span class="keywordtype">bool</span> isInputPort_;
-00148 std::string errorString_;
-00149
-00150 };
-00151
-00152 <span class="preprocessor">#endif</span>
-</pre></div><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>
diff --git a/doxygen/html/playsmf_8cpp-source.html b/doxygen/html/playsmf_8cpp-source.html
deleted file mode 100755
index 5db53c4..0000000
--- a/doxygen/html/playsmf_8cpp-source.html
+++ /dev/null
@@ -1,117 +0,0 @@
-<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="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
-<HR>
-<!-- Generated by Doxygen 1.3-rc3 -->
-<h1>playsmf.cpp</h1><div class="fragment"><pre>00001 <span class="comment">// playsmf.cpp</span>
-00002 <span class="comment">//</span>
-00003 <span class="comment">// Simple program to test the MidiFileIn class by reading and playing</span>
-00004 <span class="comment">// a single track from a given Standard MIDI file.</span>
-00005 <span class="comment">//</span>
-00006 <span class="comment">// by Gary Scavone, 2003.</span>
-00007 <span class="comment">//</span>
-00008 <span class="comment">// compile: g++ -Wall -o playsmf playsmf.cpp RtMidi.o MidiFileIn.cpp Stk.cpp -framework CoreMIDI -framework CoreFoundation -framework CoreAudio</span>
-00009
-00010 <span class="preprocessor">#include "MidiFileIn.h"</span>
-00011 <span class="preprocessor">#include "RtMidi.h"</span>
-00012 <span class="preprocessor">#include &lt;signal.h&gt;</span>
-00013 <span class="preprocessor">#include &lt;unistd.h&gt;</span>
-00014
-00015 <span class="keywordtype">bool</span> done = <span class="keyword">false</span>;
-00016 <span class="keyword">static</span> <span class="keywordtype">void</span> finish(<span class="keywordtype">int</span> ignore){ done = <span class="keyword">true</span>; }
-00017
-00018 <span class="keywordtype">void</span> usage(<span class="keywordtype">void</span>) {
-00019 <span class="comment">// Error function in case of incorrect command-line</span>
-00020 <span class="comment">// argument specifications.</span>
-00021 std::cout &lt;&lt; <span class="stringliteral">"\nusage: testmidi file track\n"</span>;
-00022 std::cout &lt;&lt; <span class="stringliteral">" where file = a standard MIDI file,\n"</span>;
-00023 std::cout &lt;&lt; <span class="stringliteral">" and track = the track to play (0 = 1st track).\n\n"</span>;
-00024 exit(0);
-00025 }
-00026
-00027 <span class="keywordtype">int</span> main( <span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> *argv[] )
-00028 {
-00029 <span class="keywordflow">if</span> ( argc != 3 ) usage();
-00030
-00031 <a class="code" href="classRtMidiOut.html">RtMidiOut</a> midi;
-00032
-00033 <span class="keywordflow">if</span> ( midi.<a class="code" href="classRtMidiOut.html#a5">getPortCount</a>() &lt; 1 ) {
-00034 std::cout &lt;&lt; <span class="stringliteral">"\nThere are no MIDI output destinations available!\n\n"</span>;
-00035 exit(0);
-00036 }
-00037
-00038 <span class="keywordflow">try</span> {
-00039 midi.<a class="code" href="classRtMidiOut.html#a3">openPort</a>();
-00040 }
-00041 <span class="keywordflow">catch</span> ( <a class="code" href="classRtError.html">RtError</a> &amp; ) {
-00042 <span class="comment">// You might want to do something more useful here.</span>
-00043 std::cout &lt;&lt; <span class="stringliteral">"\nAborting program!\n"</span>;
-00044 exit(0);
-00045 }
-00046
-00047 <span class="comment">// Install an interrupt handler function. Type "ctrl-c" to quit the</span>
-00048 <span class="comment">// program.</span>
-00049 (void) signal(SIGINT, finish);
-00050
-00051 <span class="keywordflow">try</span> {
-00052 <a class="code" href="classMidiFileIn.html">MidiFileIn</a> midiFile( argv[1] );
-00053
-00054 <span class="comment">// Print a little information about the file.</span>
-00055 std::cout &lt;&lt; <span class="stringliteral">"\nThe MIDI file ("</span> &lt;&lt; argv[1] &lt;&lt; <span class="stringliteral">") information:\n"</span>;
-00056 std::cout &lt;&lt; <span class="stringliteral">" - format = "</span> &lt;&lt; midiFile.<a class="code" href="classMidiFileIn.html#a2">getFileFormat</a>() &lt;&lt; <span class="stringliteral">"\n"</span>;
-00057 std::cout &lt;&lt; <span class="stringliteral">" - tracks = "</span> &lt;&lt; midiFile.<a class="code" href="classMidiFileIn.html#a3">getNumberOfTracks</a>() &lt;&lt; <span class="stringliteral">"\n"</span>;
-00058 std::cout &lt;&lt; <span class="stringliteral">" - seconds / ticks = "</span> &lt;&lt; midiFile.<a class="code" href="classMidiFileIn.html#a6">getTickSeconds</a>() &lt;&lt; <span class="stringliteral">"\n"</span>;
-00059
-00060 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> track = (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>) atoi( argv[2] );
-00061 <span class="keywordflow">if</span> ( midiFile.<a class="code" href="classMidiFileIn.html#a3">getNumberOfTracks</a>() &lt;= track ) {
-00062 std::cout &lt;&lt; <span class="stringliteral">"\nInvalid track number ... playing track 0.\n"</span>;
-00063 track = 0;
-00064 }
-00065
-00066 std::cout &lt;&lt; <span class="stringliteral">"\nPress &lt;enter&gt; to start reading/playing.\n"</span>;
-00067 <span class="keywordtype">char</span> input;
-00068 std::cin.get(input);
-00069
-00070 std::vector&lt;unsigned char&gt; event;
-00071 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> ticks = midiFile.<a class="code" href="classMidiFileIn.html#a8">getNextMidiEvent</a>( &amp;event, track );
-00072 <span class="keywordflow">while</span> ( !done &amp;&amp; event.size() ) {
-00073
-00074 <span class="comment">// Pause for the MIDI event delta time.</span>
-00075 <a class="code" href="classStk.html#d7">Stk::sleep</a>( (<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span>) (ticks * midiFile.<a class="code" href="classMidiFileIn.html#a6">getTickSeconds</a>() * 1000 ) );
-00076
-00077 midi.<a class="code" href="classRtMidiOut.html#a7">sendMessage</a>( &amp;event );
-00078
-00079 <span class="comment">// Get a new event.</span>
-00080 ticks = midiFile.<a class="code" href="classMidiFileIn.html#a8">getNextMidiEvent</a>( &amp;event, track );
-00081 }
-00082
-00083 <span class="comment">// Send a "reset" to the synthesizer.</span>
-00084 event.clear();
-00085 event.push_back( 0xff );
-00086 midi.<a class="code" href="classRtMidiOut.html#a7">sendMessage</a>( &amp;event );
-00087 }
-00088 <span class="keywordflow">catch</span> ( <a class="code" href="classStkError.html">StkError</a> &amp; ) {
-00089 <span class="comment">// You might want to do something more useful here.</span>
-00090 std::cout &lt;&lt; <span class="stringliteral">"\nAborting program!\n"</span>;
-00091 midi.<a class="code" href="classRtMidiOut.html#a4">closePort</a>();
-00092 exit(0);
-00093 }
-00094
-00095 std::cout &lt;&lt; <span class="stringliteral">"Goodbye!\n"</span>;
-00096 <span class="keywordflow">return</span> 0;
-00097 }
-</pre></div><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>