diff options
| -rw-r--r-- | doc/html/RtMidi_8h-source.html | 10 | ||||
| -rw-r--r-- | doc/html/classRtMidi-members.html | 2 | ||||
| -rw-r--r-- | doc/html/classRtMidi.html | 4 | ||||
| -rw-r--r-- | doc/html/classRtMidiIn-members.html | 2 | ||||
| -rw-r--r-- | doc/html/classRtMidiIn.html | 11 | ||||
| -rw-r--r-- | doc/html/classRtMidiOut-members.html | 4 | ||||
| -rw-r--r-- | doc/html/classRtMidiOut.html | 17 | ||||
| -rw-r--r-- | doc/html/index.html | 18 |
8 files changed, 39 insertions, 29 deletions
diff --git a/doc/html/RtMidi_8h-source.html b/doc/html/RtMidi_8h-source.html index 16695a2..593507f 100644 --- a/doc/html/RtMidi_8h-source.html +++ b/doc/html/RtMidi_8h-source.html @@ -11,7 +11,7 @@ <h1>RtMidi.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/**********************************************************************/</span> <a name="l00036"></a>00036 <span class="comment">/**********************************************************************/</span> <a name="l00037"></a>00037 -<a name="l00038"></a>00038 <span class="comment">// RtMidi: Version 1.0.4, 14 October 2005</span> +<a name="l00038"></a>00038 <span class="comment">// RtMidi: Version 1.0.5, in development</span> <a name="l00039"></a>00039 <a name="l00040"></a>00040 <span class="preprocessor">#ifndef RTMIDI_H</span> <a name="l00041"></a>00041 <span class="preprocessor"></span><span class="preprocessor">#define RTMIDI_H</span> @@ -25,7 +25,7 @@ <a name="l00049"></a>00049 <a name="l00051"></a>00051 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#a0">openPort</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber = 0 ) = 0; <a name="l00052"></a>00052 -<a name="l00054"></a>00054 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#a1">openVirtualPort</a>() = 0; +<a name="l00054"></a>00054 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#a1">openVirtualPort</a>( <span class="keyword">const</span> std::string portName = std::string( <span class="stringliteral">"RtMidi"</span> ) ) = 0; <a name="l00055"></a>00055 <a name="l00057"></a>00057 <span class="keyword">virtual</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtMidi.html#a2">getPortCount</a>() = 0; <a name="l00058"></a>00058 @@ -69,7 +69,7 @@ <a name="l00122"></a>00122 <span class="keywordtype">void</span> <a class="code" href="classRtMidiIn.html#a2">openPort</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber = 0 ); <a name="l00123"></a>00123 <a name="l00125"></a>00125 -<a name="l00131"></a>00131 <span class="keywordtype">void</span> <a class="code" href="classRtMidiIn.html#a3">openVirtualPort</a>(); +<a name="l00131"></a>00131 <span class="keywordtype">void</span> <a class="code" href="classRtMidiIn.html#a3">openVirtualPort</a>( <span class="keyword">const</span> std::string portName = std::string( <span class="stringliteral">"RtMidi Input"</span> ) ); <a name="l00132"></a>00132 <a name="l00134"></a>00134 <a name="l00140"></a>00140 <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 ); @@ -148,12 +148,12 @@ <a name="l00262"></a>00262 <span class="keywordtype">void</span> <a class="code" href="classRtMidiOut.html#a3">closePort</a>(); <a name="l00263"></a>00263 <a name="l00265"></a>00265 -<a name="l00273"></a>00273 <span class="keywordtype">void</span> <a class="code" href="classRtMidiOut.html#a4">openVirtualPort</a>(); +<a name="l00273"></a>00273 <span class="keywordtype">void</span> <a class="code" href="classRtMidiOut.html#a4">openVirtualPort</a>( <span class="keyword">const</span> std::string portName = std::string( <span class="stringliteral">"RtMidi Output"</span> ) ); <a name="l00274"></a>00274 <a name="l00276"></a>00276 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtMidiOut.html#a5">getPortCount</a>(); <a name="l00277"></a>00277 <a name="l00279"></a>00279 -<a name="l00282"></a>00282 std::string <a class="code" href="classRtMidiOut.html#a6">getPortName</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber ); +<a name="l00282"></a>00282 std::string <a class="code" href="classRtMidiOut.html#a6">getPortName</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber = 0 ); <a name="l00283"></a>00283 <a name="l00285"></a>00285 <a name="l00289"></a>00289 <span class="keywordtype">void</span> <a class="code" href="classRtMidiOut.html#a7">sendMessage</a>( std::vector<unsigned char> *message ); diff --git a/doc/html/classRtMidi-members.html b/doc/html/classRtMidi-members.html index c7c4240..08e1abd 100644 --- a/doc/html/classRtMidi-members.html +++ b/doc/html/classRtMidi-members.html @@ -13,7 +13,7 @@ <tr class="memlist"><td><a class="el" href="classRtMidi.html#a2">getPortCount</a>()=0</td><td><a class="el" href="classRtMidi.html">RtMidi</a></td><td><code> [pure virtual]</code></td></tr> <tr class="memlist"><td><a class="el" href="classRtMidi.html#a3">getPortName</a>(unsigned int portNumber=0)=0</td><td><a class="el" href="classRtMidi.html">RtMidi</a></td><td><code> [pure virtual]</code></td></tr> <tr class="memlist"><td><a class="el" href="classRtMidi.html#a0">openPort</a>(unsigned int portNumber=0)=0</td><td><a class="el" href="classRtMidi.html">RtMidi</a></td><td><code> [pure virtual]</code></td></tr> - <tr class="memlist"><td><a class="el" href="classRtMidi.html#a1">openVirtualPort</a>()=0</td><td><a class="el" href="classRtMidi.html">RtMidi</a></td><td><code> [pure virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classRtMidi.html#a1">openVirtualPort</a>(const std::string portName=std::string("RtMidi"))=0</td><td><a class="el" href="classRtMidi.html">RtMidi</a></td><td><code> [pure virtual]</code></td></tr> </table><HR> <table><tr><td><img src="../images/mcgill.gif" width=165></td> diff --git a/doc/html/classRtMidi.html b/doc/html/classRtMidi.html index 2b45cf9..c405cb2 100644 --- a/doc/html/classRtMidi.html +++ b/doc/html/classRtMidi.html @@ -26,8 +26,8 @@ virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classRtMidi.html#a0">openPort</a> (unsigned int portNumber=0)=0</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Pure virtual <a class="el" href="classRtMidi.html#a0">openPort()</a> function. <br></td></tr> -<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a1"></a><!-- doxytag: member="RtMidi::openVirtualPort" ref="a1" args="()=0" --> -virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classRtMidi.html#a1">openVirtualPort</a> ()=0</td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a1"></a><!-- doxytag: member="RtMidi::openVirtualPort" ref="a1" args="(const std::string portName=std::string("RtMidi"))=0" --> +virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classRtMidi.html#a1">openVirtualPort</a> (const std::string portName=std::string("RtMidi"))=0</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Pure virtual <a class="el" href="classRtMidi.html#a1">openVirtualPort()</a> function. <br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a2"></a><!-- doxytag: member="RtMidi::getPortCount" ref="a2" args="()=0" --> diff --git a/doc/html/classRtMidiIn-members.html b/doc/html/classRtMidiIn-members.html index fdc5605..4143eb9 100644 --- a/doc/html/classRtMidiIn-members.html +++ b/doc/html/classRtMidiIn-members.html @@ -16,7 +16,7 @@ <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><code> [virtual]</code></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><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classRtMidiIn.html#a3">openVirtualPort</a>(const std::string portName=std::string("RtMidi Input"))</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#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> diff --git a/doc/html/classRtMidiIn.html b/doc/html/classRtMidiIn.html index 13f02e0..eb172be 100644 --- a/doc/html/classRtMidiIn.html +++ b/doc/html/classRtMidiIn.html @@ -36,9 +36,9 @@ typedef void(* </td><td class="memItemRight" valign="bottom"><a class="el" <tr><td class="memItemLeft" nowrap align="right" valign="top">void </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"> </td><td class="mdescRight">Open a MIDI input connection. <a href="#a2"></a><br></td></tr> -<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classRtMidiIn.html#a3">openVirtualPort</a> ()</td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classRtMidiIn.html#a3">openVirtualPort</a> (const std::string portName=std::string("RtMidi Input"))</td></tr> -<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a virtual input port to allow software connections (OS X and ALSA only). <a href="#a3"></a><br></td></tr> +<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a virtual input port, with optional name, to allow software connections (OS X and ALSA only). <a href="#a3"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">void </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"> </td><td class="mdescRight">Set a callback function to be invoked for incoming MIDI messages. <a href="#a4"></a><br></td></tr> @@ -140,7 +140,7 @@ An optional port number greater than 0 can be specified. Otherwise, the default Implements <a class="el" href="classRtMidi.html#a0">RtMidi</a>. </td> </tr> </table> -<a class="anchor" name="a3"></a><!-- doxytag: member="RtMidiIn::openVirtualPort" ref="a3" args="()" --><p> +<a class="anchor" name="a3"></a><!-- doxytag: member="RtMidiIn::openVirtualPort" ref="a3" args="(const std::string portName=std::string("RtMidi Input"))" --><p> <table class="mdTable" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> @@ -148,7 +148,8 @@ Implements <a class="el" href="classRtMidi.html#a0">RtMidi</a>. </td> <tr> <td class="md" nowrap valign="top">void RtMidiIn::openVirtualPort </td> <td class="md" valign="top">( </td> - <td class="mdname1" valign="top" nowrap> </td> + <td class="md" nowrap valign="top">const std::string </td> + <td class="mdname1" valign="top" nowrap> <em>portName</em> = <code>std::string("RtMidi Input")</code> </td> <td class="md" valign="top"> ) </td> <td class="md" nowrap><code> [virtual]</code></td> </tr> @@ -164,7 +165,7 @@ Implements <a class="el" href="classRtMidi.html#a0">RtMidi</a>. </td> <td> <p> -Create a virtual input port to allow software connections (OS X and ALSA only). +Create a virtual input port, with optional name, 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). <p> diff --git a/doc/html/classRtMidiOut-members.html b/doc/html/classRtMidiOut-members.html index 2f07304..e2c919c 100644 --- a/doc/html/classRtMidiOut-members.html +++ b/doc/html/classRtMidiOut-members.html @@ -11,9 +11,9 @@ <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.<p><table> <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><code> [virtual]</code></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><code> [virtual]</code></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><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classRtMidiOut.html#a6">getPortName</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#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><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classRtMidiOut.html#a4">openVirtualPort</a>(const std::string portName=std::string("RtMidi Output"))</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#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< unsigned char > *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> diff --git a/doc/html/classRtMidiOut.html b/doc/html/classRtMidiOut.html index 781470f..0b54d28 100644 --- a/doc/html/classRtMidiOut.html +++ b/doc/html/classRtMidiOut.html @@ -35,14 +35,14 @@ void </td><td class="memItemRight" valign="bottom"><a class="el" href="classRtMidiOut.html#a3">closePort</a> ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Close an open MIDI connection (if one exists). <br></td></tr> -<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classRtMidiOut.html#a4">openVirtualPort</a> ()</td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classRtMidiOut.html#a4">openVirtualPort</a> (const std::string portName=std::string("RtMidi Output"))</td></tr> -<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a virtual output port to allow software connections (OS X and ALSA only). <a href="#a4"></a><br></td></tr> +<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a virtual output port, with optional name, to allow software connections (OS X and ALSA only). <a href="#a4"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a5"></a><!-- doxytag: member="RtMidiOut::getPortCount" ref="a5" args="()" --> unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classRtMidiOut.html#a5">getPortCount</a> ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Return the number of available MIDI output ports. <br></td></tr> -<tr><td class="memItemLeft" nowrap align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="classRtMidiOut.html#a6">getPortName</a> (unsigned int portNumber)</td></tr> +<tr><td class="memItemLeft" nowrap align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="classRtMidiOut.html#a6">getPortName</a> (unsigned int portNumber=0)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Return a string identifier for the specified MIDI port type and number. <a href="#a6"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classRtMidiOut.html#a7">sendMessage</a> (std::vector< unsigned char > *message)</td></tr> @@ -118,7 +118,7 @@ An optional port number greater than 0 can be specified. Otherwise, the default Implements <a class="el" href="classRtMidi.html#a0">RtMidi</a>. </td> </tr> </table> -<a class="anchor" name="a4"></a><!-- doxytag: member="RtMidiOut::openVirtualPort" ref="a4" args="()" --><p> +<a class="anchor" name="a4"></a><!-- doxytag: member="RtMidiOut::openVirtualPort" ref="a4" args="(const std::string portName=std::string("RtMidi Output"))" --><p> <table class="mdTable" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> @@ -126,7 +126,8 @@ Implements <a class="el" href="classRtMidi.html#a0">RtMidi</a>. </td> <tr> <td class="md" nowrap valign="top">void RtMidiOut::openVirtualPort </td> <td class="md" valign="top">( </td> - <td class="mdname1" valign="top" nowrap> </td> + <td class="md" nowrap valign="top">const std::string </td> + <td class="mdname1" valign="top" nowrap> <em>portName</em> = <code>std::string("RtMidi Output")</code> </td> <td class="md" valign="top"> ) </td> <td class="md" nowrap><code> [virtual]</code></td> </tr> @@ -142,14 +143,14 @@ Implements <a class="el" href="classRtMidi.html#a0">RtMidi</a>. </td> <td> <p> -Create a virtual output port to allow software connections (OS X and ALSA only). +Create a virtual output port, with optional name, 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. <p> Implements <a class="el" href="classRtMidi.html#a1">RtMidi</a>. </td> </tr> </table> -<a class="anchor" name="a6"></a><!-- doxytag: member="RtMidiOut::getPortName" ref="a6" args="(unsigned int portNumber)" --><p> +<a class="anchor" name="a6"></a><!-- doxytag: member="RtMidiOut::getPortName" ref="a6" args="(unsigned int portNumber=0)" --><p> <table class="mdTable" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> @@ -158,7 +159,7 @@ Implements <a class="el" href="classRtMidi.html#a1">RtMidi</a>. </td> <td class="md" nowrap valign="top">std::string RtMidiOut::getPortName </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">unsigned int </td> - <td class="mdname1" valign="top" nowrap> <em>portNumber</em> </td> + <td class="mdname1" valign="top" nowrap> <em>portNumber</em> = <code>0</code> </td> <td class="md" valign="top"> ) </td> <td class="md" nowrap><code> [virtual]</code></td> </tr> diff --git a/doc/html/index.html b/doc/html/index.html index 1d40a77..9a0ce50 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -26,7 +26,7 @@ MIDI device enumeration </li> <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<unsigned char>.<h2><a class="anchor" name="download"> Download</a></h2> -Latest Release (14 October 2005): <a href="http://music.mcgill.ca/~gary/rtmidi/release/rtmidi-1.0.4.tar.gz">Version 1.0.4</a><h2><a class="anchor" name="start"> +Latest Release (18 November 2005): <a href="http://music.mcgill.ca/~gary/rtmidi/release/rtmidi-1.0.5.tar.gz">Version 1.0.5</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 possible to connect to MIDI devices that may not have been present when the classes were instantiated. The following code example demonstrates default object construction and destruction:<p> <div class="fragment"><pre class="fragment"><span class="preprocessor">#include "RtMidi.h"</span> @@ -48,7 +48,7 @@ The first thing that must be done when using <a class="el" href="classRtMidi.htm <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 class="anchor" name="error"> +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 that 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-source.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> @@ -289,11 +289,11 @@ 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> +<td width="5%"><b>OS:</b> </td><td width="5%"><b>MIDI 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 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> +<td>Macintosh OS X </td><td>CoreMidi </td><td>__MACOSX_CORE__ </td><td><code>CoreMidi, CoreAudio, CoreFoundation</code> </td><td><code>g++ -Wall -D__MACOSX_CORE__ -o midiinfo midiinfo.cpp RtMidi.cpp -framework CoreMidi -framework CoreAudio -framework CoreFoundation</code> </td></tr> <tr> <td>Irix </td><td>MD </td><td>__IRIX_MD__ </td><td><code>md, pthread</code> </td><td><code>CC -Wall -D__IRIX_MD__ -o midiinfo midiinfo.cpp RtMidi.cpp -laudio -lpthread</code> </td></tr> <tr> @@ -314,7 +314,15 @@ The Irix version of <a class="el" href="classRtMidi.html">RtMidi</a> was written 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="acknowledge"> Acknowledgements</a></h2> -Many thanks to Pedro Lopez-Cabanillas for his help with the ALSA sequencer API!<h2><a class="anchor" name="license"> +Many thanks to the following people for providing bug fixes: <ul> +<li> +Pedro Lopez-Cabanillas (ALSA sequencer API) </li> +<li> +Eduardo Coutinho (Windows device names) </li> +<li> +Jean-Baptiste Berruchon (Windows sysex code) </li> +</ul> +<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-2005 Gary P. Scavone<p> |
