This file is indexed.

/usr/share/doc/librtmidi-dev/api_ref/RtMidi_8h_source.html is in librtmidi-doc 3.0.0~ds1-2.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
<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.8.13 -->
</div><!-- top -->
<div class="header">
  <div class="headertitle">
<div class="title">RtMidi.h</div>  </div>
</div><!--header-->
<div class="contents">
<a href="RtMidi_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">/**********************************************************************/</span></div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="comment">/**********************************************************************/</span></div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="preprocessor">#ifndef RTMIDI_H</span></div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;<span class="preprocessor">#define RTMIDI_H</span></div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<span class="preprocessor">#if defined _WIN32 || defined __CYGWIN__</span></div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;<span class="preprocessor">  #define RTMIDI_DLL_PUBLIC</span></div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<span class="preprocessor">  #if __GNUC__ &gt;= 4</span></div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;<span class="preprocessor">    #define RTMIDI_DLL_PUBLIC __attribute__( (visibility( &quot;default&quot; )) )</span></div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;<span class="preprocessor">  #else</span></div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;<span class="preprocessor">    #define RTMIDI_DLL_PUBLIC</span></div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;<span class="preprocessor">  #endif</span></div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;</div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;<span class="preprocessor">#define RTMIDI_VERSION &quot;3.0.0&quot;</span></div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;<span class="preprocessor">#include &lt;exception&gt;</span></div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;<span class="preprocessor">#include &lt;iostream&gt;</span></div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;<span class="comment">/************************************************************************/</span></div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;<span class="comment">/************************************************************************/</span></div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;</div><div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="classRtMidiError.html">   73</a></span>&#160;<span class="keyword">class </span><a class="code" href="classRtMidiError.html">RtMidiError</a> : <span class="keyword">public</span> std::exception</div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;{</div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="classRtMidiError.html#a741314057cec5fb8c743c12f284905ee">   77</a></span>&#160;  <span class="keyword">enum</span> <a class="code" href="classRtMidiError.html#a741314057cec5fb8c743c12f284905ee">Type</a> {</div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="classRtMidiError.html#a741314057cec5fb8c743c12f284905eea778e66d730c9ff2aab7000aed36ca8df">   78</a></span>&#160;    <a class="code" href="classRtMidiError.html#a741314057cec5fb8c743c12f284905eea778e66d730c9ff2aab7000aed36ca8df">WARNING</a>,           </div><div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="classRtMidiError.html#a741314057cec5fb8c743c12f284905eead9dcf332975d9d0358f7db349d565c8a">   79</a></span>&#160;    <a class="code" href="classRtMidiError.html#a741314057cec5fb8c743c12f284905eead9dcf332975d9d0358f7db349d565c8a">DEBUG_WARNING</a>,     </div><div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="classRtMidiError.html#a741314057cec5fb8c743c12f284905eeabd80a28d9fedd9a861c72d3fae096a79">   80</a></span>&#160;    <a class="code" href="classRtMidiError.html#a741314057cec5fb8c743c12f284905eeabd80a28d9fedd9a861c72d3fae096a79">UNSPECIFIED</a>,       </div><div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="classRtMidiError.html#a741314057cec5fb8c743c12f284905eea2edbf3e6f6b2383bc3e352b4417326d7">   81</a></span>&#160;    <a class="code" href="classRtMidiError.html#a741314057cec5fb8c743c12f284905eea2edbf3e6f6b2383bc3e352b4417326d7">NO_DEVICES_FOUND</a>,  </div><div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="classRtMidiError.html#a741314057cec5fb8c743c12f284905eea8c87118f56675ecd8fd859e01a61338a">   82</a></span>&#160;    <a class="code" href="classRtMidiError.html#a741314057cec5fb8c743c12f284905eea8c87118f56675ecd8fd859e01a61338a">INVALID_DEVICE</a>,    </div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="classRtMidiError.html#a741314057cec5fb8c743c12f284905eea4a3fe6c709b50a4c85c470406ea4fddf">   83</a></span>&#160;    <a class="code" href="classRtMidiError.html#a741314057cec5fb8c743c12f284905eea4a3fe6c709b50a4c85c470406ea4fddf">MEMORY_ERROR</a>,      </div><div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="classRtMidiError.html#a741314057cec5fb8c743c12f284905eea707297abd1e7f447f0823a9de2ee1d8f">   84</a></span>&#160;    <a class="code" href="classRtMidiError.html#a741314057cec5fb8c743c12f284905eea707297abd1e7f447f0823a9de2ee1d8f">INVALID_PARAMETER</a>, </div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="classRtMidiError.html#a741314057cec5fb8c743c12f284905eea25eb917874adfebc2029c41072aef05a">   85</a></span>&#160;    <a class="code" href="classRtMidiError.html#a741314057cec5fb8c743c12f284905eea25eb917874adfebc2029c41072aef05a">INVALID_USE</a>,       </div><div class="line"><a name="l00086"></a><span class="lineno"><a class="line" href="classRtMidiError.html#a741314057cec5fb8c743c12f284905eeaacbd6476ea9704d758d03b7175f5c4c9">   86</a></span>&#160;    <a class="code" href="classRtMidiError.html#a741314057cec5fb8c743c12f284905eeaacbd6476ea9704d758d03b7175f5c4c9">DRIVER_ERROR</a>,      </div><div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="classRtMidiError.html#a741314057cec5fb8c743c12f284905eeaf2708443eebfe5dcd0f656e22a73cfd8">   87</a></span>&#160;    <a class="code" href="classRtMidiError.html#a741314057cec5fb8c743c12f284905eeaf2708443eebfe5dcd0f656e22a73cfd8">SYSTEM_ERROR</a>,      </div><div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="classRtMidiError.html#a741314057cec5fb8c743c12f284905eea9928f70b060712c44f4f23432bc8b76c">   88</a></span>&#160;    <a class="code" href="classRtMidiError.html#a741314057cec5fb8c743c12f284905eea9928f70b060712c44f4f23432bc8b76c">THREAD_ERROR</a>       </div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;  };</div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;</div><div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="classRtMidiError.html#af0952e4900c79dc0928a40fc62cb68d1">   92</a></span>&#160;  <a class="code" href="classRtMidiError.html#af0952e4900c79dc0928a40fc62cb68d1">RtMidiError</a>( <span class="keyword">const</span> std::string&amp; message, <a class="code" href="classRtMidiError.html#a741314057cec5fb8c743c12f284905ee">Type</a> type = <a class="code" href="classRtMidiError.html#a741314057cec5fb8c743c12f284905eeabd80a28d9fedd9a861c72d3fae096a79">RtMidiError::UNSPECIFIED</a> ) <span class="keywordflow">throw</span>() : message_(message), type_(type) {}</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160; </div><div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="classRtMidiError.html#ac3223037a1c192d37fbd285e4a52878f">   95</a></span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classRtMidiError.html#ac3223037a1c192d37fbd285e4a52878f">~RtMidiError</a>( <span class="keywordtype">void</span> ) <span class="keywordflow">throw</span>() {}</div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;</div><div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="classRtMidiError.html#a678201ec055ab2dc9e285cbe41d61c0a">   98</a></span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classRtMidiError.html#a678201ec055ab2dc9e285cbe41d61c0a">printMessage</a>( <span class="keywordtype">void</span> ) <span class="keyword">const</span> <span class="keywordflow">throw</span>() { std::cerr &lt;&lt; <span class="charliteral">&#39;\n&#39;</span> &lt;&lt; message_ &lt;&lt; <span class="stringliteral">&quot;\n\n&quot;</span>; }</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;</div><div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="classRtMidiError.html#ab973f38c6a27ed3388c69a62a17d4c08">  101</a></span>&#160;  <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="classRtMidiError.html#a741314057cec5fb8c743c12f284905ee">Type</a>&amp; <a class="code" href="classRtMidiError.html#ab973f38c6a27ed3388c69a62a17d4c08">getType</a>(<span class="keywordtype">void</span>) <span class="keyword">const</span> <span class="keywordflow">throw</span>() { <span class="keywordflow">return</span> type_; }</div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;</div><div class="line"><a name="l00104"></a><span class="lineno"><a class="line" href="classRtMidiError.html#a2053c81fa4756181e9ddcfad4a9bd020">  104</a></span>&#160;  <span class="keyword">virtual</span> <span class="keyword">const</span> std::string&amp; <a class="code" href="classRtMidiError.html#a2053c81fa4756181e9ddcfad4a9bd020">getMessage</a>(<span class="keywordtype">void</span>) <span class="keyword">const</span> <span class="keywordflow">throw</span>() { <span class="keywordflow">return</span> message_; }</div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;</div><div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="classRtMidiError.html#a43c2daa59d632c7fae3454c5c7726d99">  107</a></span>&#160;  <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classRtMidiError.html#a43c2daa59d632c7fae3454c5c7726d99">what</a>( <span class="keywordtype">void</span> ) <span class="keyword">const</span> <span class="keywordflow">throw</span>() { <span class="keywordflow">return</span> message_.c_str(); }</div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;</div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160; <span class="keyword">protected</span>:</div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;  std::string message_;</div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;  <a class="code" href="classRtMidiError.html#a741314057cec5fb8c743c12f284905ee">Type</a> type_;</div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;};</div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;</div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;</div><div class="line"><a name="l00122"></a><span class="lineno"><a class="line" href="RtMidi_8h.html#a57641d3490f722c3efb9ee1c640e36bb">  122</a></span>&#160;<span class="keyword">typedef</span> void (*<a class="code" href="RtMidi_8h.html#a57641d3490f722c3efb9ee1c640e36bb">RtMidiErrorCallback</a>)( <a class="code" href="classRtMidiError.html#a741314057cec5fb8c743c12f284905ee">RtMidiError::Type</a> type, <span class="keyword">const</span> std::string &amp;errorText, <span class="keywordtype">void</span> *userData );</div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;</div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;<span class="keyword">class </span><a class="code" href="classMidiApi.html">MidiApi</a>;</div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;</div><div class="line"><a name="l00126"></a><span class="lineno"><a class="line" href="classRtMidi.html">  126</a></span>&#160;<span class="keyword">class </span><a class="code" href="classRtMidi.html">RtMidi</a></div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;{</div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;</div><div class="line"><a name="l00131"></a><span class="lineno"><a class="line" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406">  131</a></span>&#160;  <span class="keyword">enum</span> <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406">Api</a> {</div><div class="line"><a name="l00132"></a><span class="lineno"><a class="line" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a4a4d9f7a38a082d6b0d5dd2b5de94ab9">  132</a></span>&#160;    <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a4a4d9f7a38a082d6b0d5dd2b5de94ab9">UNSPECIFIED</a>,    </div><div class="line"><a name="l00133"></a><span class="lineno"><a class="line" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a3f41293f89467641484fbd54c4530908">  133</a></span>&#160;    <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a3f41293f89467641484fbd54c4530908">MACOSX_CORE</a>,    </div><div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a20c691b24844d3ab5dbf882123235df2">  134</a></span>&#160;    <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a20c691b24844d3ab5dbf882123235df2">LINUX_ALSA</a>,     </div><div class="line"><a name="l00135"></a><span class="lineno"><a class="line" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a1f59daf3120f47c0ae3891773112ddfa">  135</a></span>&#160;    <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a1f59daf3120f47c0ae3891773112ddfa">UNIX_JACK</a>,      </div><div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a647868cb4ed37f517bf185a7f41cb70f">  136</a></span>&#160;    <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a647868cb4ed37f517bf185a7f41cb70f">WINDOWS_MM</a>,     </div><div class="line"><a name="l00137"></a><span class="lineno"><a class="line" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a54dba406ab358492005ce2b966a2d959">  137</a></span>&#160;    RTMIDI_DUMMY    </div><div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;  };</div><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;</div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;  <span class="keyword">static</span> std::string getVersion( <span class="keywordtype">void</span> ) <span class="keywordflow">throw</span>();</div><div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;</div><div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;</div><div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;  <span class="keyword">static</span> <span class="keywordtype">void</span> getCompiledApi( std::vector&lt;RtMidi::Api&gt; &amp;apis ) <span class="keywordflow">throw</span>();</div><div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;</div><div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">void</span> openPort( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber = 0, <span class="keyword">const</span> std::string &amp;portName = std::string( <span class="stringliteral">&quot;RtMidi&quot;</span> ) ) = 0;</div><div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;</div><div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">void</span> openVirtualPort( <span class="keyword">const</span> std::string &amp;portName = std::string( <span class="stringliteral">&quot;RtMidi&quot;</span> ) ) = 0;</div><div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;</div><div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> getPortCount() = 0;</div><div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;</div><div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;  <span class="keyword">virtual</span> std::string getPortName( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber = 0 ) = 0;</div><div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;</div><div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">void</span> closePort( <span class="keywordtype">void</span> ) = 0;</div><div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;</div><div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;</div><div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> isPortOpen( <span class="keywordtype">void</span> ) <span class="keyword">const</span> = 0;</div><div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;</div><div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;</div><div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">void</span> setErrorCallback( <a class="code" href="RtMidi_8h.html#a57641d3490f722c3efb9ee1c640e36bb">RtMidiErrorCallback</a> errorCallback = NULL, <span class="keywordtype">void</span> *userData = 0 ) = 0;</div><div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;</div><div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160; <span class="keyword">protected</span>:</div><div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;</div><div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;  <a class="code" href="classRtMidi.html">RtMidi</a>();</div><div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;  <span class="keyword">virtual</span> ~<a class="code" href="classRtMidi.html">RtMidi</a>();</div><div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;</div><div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;  <a class="code" href="classMidiApi.html">MidiApi</a> *rtapi_;</div><div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;};</div><div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;</div><div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;<span class="comment">/**********************************************************************/</span></div><div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;<span class="comment">/**********************************************************************/</span></div><div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;</div><div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;<span class="comment">// **************************************************************** //</span></div><div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;<span class="comment">// RtMidiIn and RtMidiOut class declarations.</span></div><div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;<span class="comment">// RtMidiIn / RtMidiOut are &quot;controllers&quot; used to select an available</span></div><div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;<span class="comment">// MIDI input or output interface.  They present common APIs for the</span></div><div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;<span class="comment">// user to call but all functionality is implemented by the classes</span></div><div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;<span class="comment">// MidiInApi, MidiOutApi and their subclasses.  RtMidiIn and RtMidiOut</span></div><div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;<span class="comment">// each create an instance of a MidiInApi or MidiOutApi subclass based</span></div><div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;<span class="comment">// on the user&#39;s API choice.  If no choice is made, they attempt to</span></div><div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;<span class="comment">// make a &quot;logical&quot; API selection.</span></div><div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;<span class="comment">// **************************************************************** //</span></div><div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;</div><div class="line"><a name="l00220"></a><span class="lineno"><a class="line" href="classRtMidiIn.html">  220</a></span>&#160;<span class="keyword">class </span>RTMIDI_DLL_PUBLIC <a class="code" href="classRtMidiIn.html">RtMidiIn</a> : <span class="keyword">public</span> <a class="code" href="classRtMidi.html">RtMidi</a></div><div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;{</div><div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;</div><div class="line"><a name="l00225"></a><span class="lineno"><a class="line" href="classRtMidiIn.html#aac5c0da1ec6f97fe43d5189bad00caef">  225</a></span>&#160;  <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);</div><div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;</div><div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;</div><div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;  <a class="code" href="classRtMidiIn.html">RtMidiIn</a>( <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406">RtMidi::Api</a> api=<a class="code" href="classRtMidiError.html#a741314057cec5fb8c743c12f284905eeabd80a28d9fedd9a861c72d3fae096a79">UNSPECIFIED</a>,</div><div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;            <span class="keyword">const</span> std::string&amp; clientName = <span class="stringliteral">&quot;RtMidi Input Client&quot;</span>,</div><div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;            <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> queueSizeLimit = 100 );</div><div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;</div><div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;  ~<a class="code" href="classRtMidiIn.html">RtMidiIn</a> ( <span class="keywordtype">void</span> ) <span class="keywordflow">throw</span>();</div><div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;</div><div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;  <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406">RtMidi::Api</a> getCurrentApi( <span class="keywordtype">void</span> ) <span class="keywordflow">throw</span>();</div><div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;</div><div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;</div><div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;  <span class="keywordtype">void</span> openPort( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber = 0, <span class="keyword">const</span> std::string &amp;portName = std::string( <span class="stringliteral">&quot;RtMidi Input&quot;</span> ) );</div><div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;</div><div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;</div><div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160;  <span class="keywordtype">void</span> openVirtualPort( <span class="keyword">const</span> std::string &amp;portName = std::string( <span class="stringliteral">&quot;RtMidi Input&quot;</span> ) );</div><div class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160;</div><div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160;</div><div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;  <span class="keywordtype">void</span> setCallback( RtMidiCallback callback, <span class="keywordtype">void</span> *userData = 0 );</div><div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;</div><div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160;</div><div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160;  <span class="keywordtype">void</span> cancelCallback();</div><div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;</div><div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160;  <span class="keywordtype">void</span> closePort( <span class="keywordtype">void</span> );</div><div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;</div><div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160;</div><div class="line"><a name="l00303"></a><span class="lineno">  303</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> isPortOpen() <span class="keyword">const</span>;</div><div class="line"><a name="l00304"></a><span class="lineno">  304</span>&#160;</div><div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160;</div><div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> getPortCount();</div><div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;</div><div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;</div><div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#160;  std::string getPortName( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber = 0 );</div><div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160;</div><div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160;</div><div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160;  <span class="keywordtype">void</span> ignoreTypes( <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> );</div><div class="line"><a name="l00328"></a><span class="lineno">  328</span>&#160;</div><div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160;</div><div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;  <span class="keywordtype">double</span> <a class="code" href="classRtMidiError.html#a2053c81fa4756181e9ddcfad4a9bd020">getMessage</a>( std::vector&lt;unsigned char&gt; *message );</div><div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;</div><div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160;</div><div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">void</span> setErrorCallback( <a class="code" href="RtMidi_8h.html#a57641d3490f722c3efb9ee1c640e36bb">RtMidiErrorCallback</a> errorCallback = NULL, <span class="keywordtype">void</span> *userData = 0 );</div><div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160;</div><div class="line"><a name="l00346"></a><span class="lineno">  346</span>&#160; <span class="keyword">protected</span>:</div><div class="line"><a name="l00347"></a><span class="lineno">  347</span>&#160;  <span class="keywordtype">void</span> openMidiApi( <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406">RtMidi::Api</a> api, <span class="keyword">const</span> std::string &amp;clientName, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> queueSizeLimit );</div><div class="line"><a name="l00348"></a><span class="lineno">  348</span>&#160;</div><div class="line"><a name="l00349"></a><span class="lineno">  349</span>&#160;};</div><div class="line"><a name="l00350"></a><span class="lineno">  350</span>&#160;</div><div class="line"><a name="l00351"></a><span class="lineno">  351</span>&#160;<span class="comment">/**********************************************************************/</span></div><div class="line"><a name="l00365"></a><span class="lineno">  365</span>&#160;<span class="comment">/**********************************************************************/</span></div><div class="line"><a name="l00366"></a><span class="lineno">  366</span>&#160;</div><div class="line"><a name="l00367"></a><span class="lineno"><a class="line" href="classRtMidiOut.html">  367</a></span>&#160;<span class="keyword">class </span>RTMIDI_DLL_PUBLIC <a class="code" href="classRtMidiOut.html">RtMidiOut</a> : <span class="keyword">public</span> <a class="code" href="classRtMidi.html">RtMidi</a></div><div class="line"><a name="l00368"></a><span class="lineno">  368</span>&#160;{</div><div class="line"><a name="l00369"></a><span class="lineno">  369</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l00370"></a><span class="lineno">  370</span>&#160;</div><div class="line"><a name="l00372"></a><span class="lineno">  372</span>&#160;</div><div class="line"><a name="l00379"></a><span class="lineno">  379</span>&#160;  <a class="code" href="classRtMidiOut.html">RtMidiOut</a>( <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406">RtMidi::Api</a> api=<a class="code" href="classRtMidiError.html#a741314057cec5fb8c743c12f284905eeabd80a28d9fedd9a861c72d3fae096a79">UNSPECIFIED</a>,</div><div class="line"><a name="l00380"></a><span class="lineno">  380</span>&#160;             <span class="keyword">const</span> std::string&amp; clientName = <span class="stringliteral">&quot;RtMidi Output Client&quot;</span> );</div><div class="line"><a name="l00381"></a><span class="lineno">  381</span>&#160;</div><div class="line"><a name="l00383"></a><span class="lineno">  383</span>&#160;  ~<a class="code" href="classRtMidiOut.html">RtMidiOut</a>( <span class="keywordtype">void</span> ) <span class="keywordflow">throw</span>();</div><div class="line"><a name="l00384"></a><span class="lineno">  384</span>&#160;</div><div class="line"><a name="l00386"></a><span class="lineno">  386</span>&#160;  <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406">RtMidi::Api</a> getCurrentApi( <span class="keywordtype">void</span> ) <span class="keywordflow">throw</span>();</div><div class="line"><a name="l00387"></a><span class="lineno">  387</span>&#160;</div><div class="line"><a name="l00389"></a><span class="lineno">  389</span>&#160;</div><div class="line"><a name="l00395"></a><span class="lineno">  395</span>&#160;  <span class="keywordtype">void</span> openPort( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber = 0, <span class="keyword">const</span> std::string &amp;portName = std::string( <span class="stringliteral">&quot;RtMidi Output&quot;</span> ) );</div><div class="line"><a name="l00396"></a><span class="lineno">  396</span>&#160;</div><div class="line"><a name="l00398"></a><span class="lineno">  398</span>&#160;  <span class="keywordtype">void</span> closePort( <span class="keywordtype">void</span> );</div><div class="line"><a name="l00399"></a><span class="lineno">  399</span>&#160;</div><div class="line"><a name="l00401"></a><span class="lineno">  401</span>&#160;</div><div class="line"><a name="l00405"></a><span class="lineno">  405</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> isPortOpen() <span class="keyword">const</span>;</div><div class="line"><a name="l00406"></a><span class="lineno">  406</span>&#160;</div><div class="line"><a name="l00408"></a><span class="lineno">  408</span>&#160;</div><div class="line"><a name="l00416"></a><span class="lineno">  416</span>&#160;  <span class="keywordtype">void</span> openVirtualPort( <span class="keyword">const</span> std::string &amp;portName = std::string( <span class="stringliteral">&quot;RtMidi Output&quot;</span> ) );</div><div class="line"><a name="l00417"></a><span class="lineno">  417</span>&#160;</div><div class="line"><a name="l00419"></a><span class="lineno">  419</span>&#160;  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> getPortCount( <span class="keywordtype">void</span> );</div><div class="line"><a name="l00420"></a><span class="lineno">  420</span>&#160;</div><div class="line"><a name="l00422"></a><span class="lineno">  422</span>&#160;</div><div class="line"><a name="l00427"></a><span class="lineno">  427</span>&#160;  std::string getPortName( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber = 0 );</div><div class="line"><a name="l00428"></a><span class="lineno">  428</span>&#160;</div><div class="line"><a name="l00430"></a><span class="lineno">  430</span>&#160;</div><div class="line"><a name="l00434"></a><span class="lineno">  434</span>&#160;  <span class="keywordtype">void</span> sendMessage( <span class="keyword">const</span> std::vector&lt;unsigned char&gt; *message );</div><div class="line"><a name="l00435"></a><span class="lineno">  435</span>&#160;</div><div class="line"><a name="l00437"></a><span class="lineno">  437</span>&#160;</div><div class="line"><a name="l00444"></a><span class="lineno">  444</span>&#160;  <span class="keywordtype">void</span> sendMessage( <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *message, <span class="keywordtype">size_t</span> size );</div><div class="line"><a name="l00445"></a><span class="lineno">  445</span>&#160;</div><div class="line"><a name="l00447"></a><span class="lineno">  447</span>&#160;</div><div class="line"><a name="l00451"></a><span class="lineno">  451</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">void</span> setErrorCallback( <a class="code" href="RtMidi_8h.html#a57641d3490f722c3efb9ee1c640e36bb">RtMidiErrorCallback</a> errorCallback = NULL, <span class="keywordtype">void</span> *userData = 0 );</div><div class="line"><a name="l00452"></a><span class="lineno">  452</span>&#160;</div><div class="line"><a name="l00453"></a><span class="lineno">  453</span>&#160; <span class="keyword">protected</span>:</div><div class="line"><a name="l00454"></a><span class="lineno">  454</span>&#160;  <span class="keywordtype">void</span> openMidiApi( <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406">RtMidi::Api</a> api, <span class="keyword">const</span> std::string &amp;clientName );</div><div class="line"><a name="l00455"></a><span class="lineno">  455</span>&#160;};</div><div class="line"><a name="l00456"></a><span class="lineno">  456</span>&#160;</div><div class="line"><a name="l00457"></a><span class="lineno">  457</span>&#160;</div><div class="line"><a name="l00458"></a><span class="lineno">  458</span>&#160;<span class="comment">// **************************************************************** //</span></div><div class="line"><a name="l00459"></a><span class="lineno">  459</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00460"></a><span class="lineno">  460</span>&#160;<span class="comment">// MidiInApi / MidiOutApi class declarations.</span></div><div class="line"><a name="l00461"></a><span class="lineno">  461</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00462"></a><span class="lineno">  462</span>&#160;<span class="comment">// Subclasses of MidiInApi and MidiOutApi contain all API- and</span></div><div class="line"><a name="l00463"></a><span class="lineno">  463</span>&#160;<span class="comment">// OS-specific code necessary to fully implement the RtMidi API.</span></div><div class="line"><a name="l00464"></a><span class="lineno">  464</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00465"></a><span class="lineno">  465</span>&#160;<span class="comment">// Note that MidiInApi and MidiOutApi are abstract base classes and</span></div><div class="line"><a name="l00466"></a><span class="lineno">  466</span>&#160;<span class="comment">// cannot be explicitly instantiated.  RtMidiIn and RtMidiOut will</span></div><div class="line"><a name="l00467"></a><span class="lineno">  467</span>&#160;<span class="comment">// create instances of a MidiInApi or MidiOutApi subclass.</span></div><div class="line"><a name="l00468"></a><span class="lineno">  468</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00469"></a><span class="lineno">  469</span>&#160;<span class="comment">// **************************************************************** //</span></div><div class="line"><a name="l00470"></a><span class="lineno">  470</span>&#160;</div><div class="line"><a name="l00471"></a><span class="lineno"><a class="line" href="classMidiApi.html">  471</a></span>&#160;<span class="keyword">class </span><a class="code" href="classMidiApi.html">MidiApi</a></div><div class="line"><a name="l00472"></a><span class="lineno">  472</span>&#160;{</div><div class="line"><a name="l00473"></a><span class="lineno">  473</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l00474"></a><span class="lineno">  474</span>&#160;</div><div class="line"><a name="l00475"></a><span class="lineno">  475</span>&#160;  <a class="code" href="classMidiApi.html">MidiApi</a>();</div><div class="line"><a name="l00476"></a><span class="lineno">  476</span>&#160;  <span class="keyword">virtual</span> ~<a class="code" href="classMidiApi.html">MidiApi</a>();</div><div class="line"><a name="l00477"></a><span class="lineno">  477</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406">RtMidi::Api</a> getCurrentApi( <span class="keywordtype">void</span> ) = 0;</div><div class="line"><a name="l00478"></a><span class="lineno">  478</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">void</span> openPort( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber, <span class="keyword">const</span> std::string &amp;portName ) = 0;</div><div class="line"><a name="l00479"></a><span class="lineno">  479</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">void</span> openVirtualPort( <span class="keyword">const</span> std::string &amp;portName ) = 0;</div><div class="line"><a name="l00480"></a><span class="lineno">  480</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">void</span> closePort( <span class="keywordtype">void</span> ) = 0;</div><div class="line"><a name="l00481"></a><span class="lineno">  481</span>&#160;</div><div class="line"><a name="l00482"></a><span class="lineno">  482</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> getPortCount( <span class="keywordtype">void</span> ) = 0;</div><div class="line"><a name="l00483"></a><span class="lineno">  483</span>&#160;  <span class="keyword">virtual</span> std::string getPortName( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber ) = 0;</div><div class="line"><a name="l00484"></a><span class="lineno">  484</span>&#160;</div><div class="line"><a name="l00485"></a><span class="lineno">  485</span>&#160;  <span class="keyword">inline</span> <span class="keywordtype">bool</span> isPortOpen()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> connected_; }</div><div class="line"><a name="l00486"></a><span class="lineno">  486</span>&#160;  <span class="keywordtype">void</span> setErrorCallback( <a class="code" href="RtMidi_8h.html#a57641d3490f722c3efb9ee1c640e36bb">RtMidiErrorCallback</a> errorCallback, <span class="keywordtype">void</span> *userData );</div><div class="line"><a name="l00487"></a><span class="lineno">  487</span>&#160;</div><div class="line"><a name="l00489"></a><span class="lineno">  489</span>&#160;  <span class="keywordtype">void</span> error( <a class="code" href="classRtMidiError.html#a741314057cec5fb8c743c12f284905ee">RtMidiError::Type</a> type, std::string errorString );</div><div class="line"><a name="l00490"></a><span class="lineno">  490</span>&#160;</div><div class="line"><a name="l00491"></a><span class="lineno">  491</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00492"></a><span class="lineno">  492</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">void</span> initialize( <span class="keyword">const</span> std::string&amp; clientName ) = 0;</div><div class="line"><a name="l00493"></a><span class="lineno">  493</span>&#160;</div><div class="line"><a name="l00494"></a><span class="lineno">  494</span>&#160;  <span class="keywordtype">void</span> *apiData_;</div><div class="line"><a name="l00495"></a><span class="lineno">  495</span>&#160;  <span class="keywordtype">bool</span> connected_;</div><div class="line"><a name="l00496"></a><span class="lineno">  496</span>&#160;  std::string errorString_;</div><div class="line"><a name="l00497"></a><span class="lineno">  497</span>&#160;  <a class="code" href="RtMidi_8h.html#a57641d3490f722c3efb9ee1c640e36bb">RtMidiErrorCallback</a> errorCallback_;</div><div class="line"><a name="l00498"></a><span class="lineno">  498</span>&#160;  <span class="keywordtype">bool</span> firstErrorOccurred_;</div><div class="line"><a name="l00499"></a><span class="lineno">  499</span>&#160;  <span class="keywordtype">void</span> *errorCallbackUserData_;</div><div class="line"><a name="l00500"></a><span class="lineno">  500</span>&#160;};</div><div class="line"><a name="l00501"></a><span class="lineno">  501</span>&#160;</div><div class="line"><a name="l00502"></a><span class="lineno"><a class="line" href="classMidiInApi.html">  502</a></span>&#160;<span class="keyword">class </span><a class="code" href="classMidiInApi.html">MidiInApi</a> : <span class="keyword">public</span> <a class="code" href="classMidiApi.html">MidiApi</a></div><div class="line"><a name="l00503"></a><span class="lineno">  503</span>&#160;{</div><div class="line"><a name="l00504"></a><span class="lineno">  504</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l00505"></a><span class="lineno">  505</span>&#160;</div><div class="line"><a name="l00506"></a><span class="lineno">  506</span>&#160;  <a class="code" href="classMidiInApi.html">MidiInApi</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> queueSizeLimit );</div><div class="line"><a name="l00507"></a><span class="lineno">  507</span>&#160;  <span class="keyword">virtual</span> ~<a class="code" href="classMidiInApi.html">MidiInApi</a>( <span class="keywordtype">void</span> );</div><div class="line"><a name="l00508"></a><span class="lineno">  508</span>&#160;  <span class="keywordtype">void</span> setCallback( <a class="code" href="classRtMidiIn.html#aac5c0da1ec6f97fe43d5189bad00caef">RtMidiIn::RtMidiCallback</a> callback, <span class="keywordtype">void</span> *userData );</div><div class="line"><a name="l00509"></a><span class="lineno">  509</span>&#160;  <span class="keywordtype">void</span> cancelCallback( <span class="keywordtype">void</span> );</div><div class="line"><a name="l00510"></a><span class="lineno">  510</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">void</span> ignoreTypes( <span class="keywordtype">bool</span> midiSysex, <span class="keywordtype">bool</span> midiTime, <span class="keywordtype">bool</span> midiSense );</div><div class="line"><a name="l00511"></a><span class="lineno">  511</span>&#160;  <span class="keywordtype">double</span> <a class="code" href="classRtMidiError.html#a2053c81fa4756181e9ddcfad4a9bd020">getMessage</a>( std::vector&lt;unsigned char&gt; *message );</div><div class="line"><a name="l00512"></a><span class="lineno">  512</span>&#160;</div><div class="line"><a name="l00513"></a><span class="lineno">  513</span>&#160;  <span class="comment">// A MIDI structure used internally by the class to store incoming</span></div><div class="line"><a name="l00514"></a><span class="lineno">  514</span>&#160;  <span class="comment">// messages.  Each message represents one and only one MIDI message.</span></div><div class="line"><a name="l00515"></a><span class="lineno"><a class="line" href="structMidiInApi_1_1MidiMessage.html">  515</a></span>&#160;  <span class="keyword">struct </span><a class="code" href="structMidiInApi_1_1MidiMessage.html">MidiMessage</a> { </div><div class="line"><a name="l00516"></a><span class="lineno">  516</span>&#160;    std::vector&lt;unsigned char&gt; bytes; </div><div class="line"><a name="l00517"></a><span class="lineno">  517</span>&#160;</div><div class="line"><a name="l00519"></a><span class="lineno"><a class="line" href="structMidiInApi_1_1MidiMessage.html#a32dad612037ace7037af0d1779894c6e">  519</a></span>&#160;    <span class="keywordtype">double</span> <a class="code" href="structMidiInApi_1_1MidiMessage.html#a32dad612037ace7037af0d1779894c6e">timeStamp</a>;</div><div class="line"><a name="l00520"></a><span class="lineno">  520</span>&#160;</div><div class="line"><a name="l00521"></a><span class="lineno">  521</span>&#160;    <span class="comment">// Default constructor.</span></div><div class="line"><a name="l00522"></a><span class="lineno">  522</span>&#160;  <a class="code" href="structMidiInApi_1_1MidiMessage.html">MidiMessage</a>()</div><div class="line"><a name="l00523"></a><span class="lineno">  523</span>&#160;  :bytes(0), timeStamp(0.0) {}</div><div class="line"><a name="l00524"></a><span class="lineno">  524</span>&#160;  };</div><div class="line"><a name="l00525"></a><span class="lineno">  525</span>&#160;</div><div class="line"><a name="l00526"></a><span class="lineno"><a class="line" href="structMidiInApi_1_1MidiQueue.html">  526</a></span>&#160;  <span class="keyword">struct </span><a class="code" href="structMidiInApi_1_1MidiQueue.html">MidiQueue</a> {</div><div class="line"><a name="l00527"></a><span class="lineno">  527</span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> front;</div><div class="line"><a name="l00528"></a><span class="lineno">  528</span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> back;</div><div class="line"><a name="l00529"></a><span class="lineno">  529</span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ringSize;</div><div class="line"><a name="l00530"></a><span class="lineno">  530</span>&#160;    <a class="code" href="structMidiInApi_1_1MidiMessage.html">MidiMessage</a> *ring;</div><div class="line"><a name="l00531"></a><span class="lineno">  531</span>&#160;</div><div class="line"><a name="l00532"></a><span class="lineno">  532</span>&#160;    <span class="comment">// Default constructor.</span></div><div class="line"><a name="l00533"></a><span class="lineno">  533</span>&#160;  <a class="code" href="structMidiInApi_1_1MidiQueue.html">MidiQueue</a>()</div><div class="line"><a name="l00534"></a><span class="lineno">  534</span>&#160;  :front(0), back(0), ringSize(0), ring(0) {}</div><div class="line"><a name="l00535"></a><span class="lineno">  535</span>&#160;    <span class="keywordtype">bool</span> push(<span class="keyword">const</span> <a class="code" href="structMidiInApi_1_1MidiMessage.html">MidiMessage</a>&amp;);</div><div class="line"><a name="l00536"></a><span class="lineno">  536</span>&#160;    <span class="keywordtype">bool</span> pop(std::vector&lt;unsigned char&gt;*, <span class="keywordtype">double</span>*);</div><div class="line"><a name="l00537"></a><span class="lineno">  537</span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> size(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *back=0,</div><div class="line"><a name="l00538"></a><span class="lineno">  538</span>&#160;                      <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *front=0);</div><div class="line"><a name="l00539"></a><span class="lineno">  539</span>&#160;  };</div><div class="line"><a name="l00540"></a><span class="lineno">  540</span>&#160;</div><div class="line"><a name="l00541"></a><span class="lineno">  541</span>&#160;  <span class="comment">// The RtMidiInData structure is used to pass private class data to</span></div><div class="line"><a name="l00542"></a><span class="lineno">  542</span>&#160;  <span class="comment">// the MIDI input handling function or thread.</span></div><div class="line"><a name="l00543"></a><span class="lineno"><a class="line" href="structMidiInApi_1_1RtMidiInData.html">  543</a></span>&#160;  <span class="keyword">struct </span><a class="code" href="structMidiInApi_1_1RtMidiInData.html">RtMidiInData</a> {</div><div class="line"><a name="l00544"></a><span class="lineno">  544</span>&#160;    <a class="code" href="structMidiInApi_1_1MidiQueue.html">MidiQueue</a> queue;</div><div class="line"><a name="l00545"></a><span class="lineno">  545</span>&#160;    <a class="code" href="structMidiInApi_1_1MidiMessage.html">MidiMessage</a> message;</div><div class="line"><a name="l00546"></a><span class="lineno">  546</span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> ignoreFlags;</div><div class="line"><a name="l00547"></a><span class="lineno">  547</span>&#160;    <span class="keywordtype">bool</span> doInput;</div><div class="line"><a name="l00548"></a><span class="lineno">  548</span>&#160;    <span class="keywordtype">bool</span> firstMessage;</div><div class="line"><a name="l00549"></a><span class="lineno">  549</span>&#160;    <span class="keywordtype">void</span> *apiData;</div><div class="line"><a name="l00550"></a><span class="lineno">  550</span>&#160;    <span class="keywordtype">bool</span> usingCallback;</div><div class="line"><a name="l00551"></a><span class="lineno">  551</span>&#160;    <a class="code" href="classRtMidiIn.html#aac5c0da1ec6f97fe43d5189bad00caef">RtMidiIn::RtMidiCallback</a> userCallback;</div><div class="line"><a name="l00552"></a><span class="lineno">  552</span>&#160;    <span class="keywordtype">void</span> *userData;</div><div class="line"><a name="l00553"></a><span class="lineno">  553</span>&#160;    <span class="keywordtype">bool</span> continueSysex;</div><div class="line"><a name="l00554"></a><span class="lineno">  554</span>&#160;</div><div class="line"><a name="l00555"></a><span class="lineno">  555</span>&#160;    <span class="comment">// Default constructor.</span></div><div class="line"><a name="l00556"></a><span class="lineno">  556</span>&#160;  <a class="code" href="structMidiInApi_1_1RtMidiInData.html">RtMidiInData</a>()</div><div class="line"><a name="l00557"></a><span class="lineno">  557</span>&#160;  : ignoreFlags(7), doInput(<span class="keyword">false</span>), firstMessage(<span class="keyword">true</span>),</div><div class="line"><a name="l00558"></a><span class="lineno">  558</span>&#160;      apiData(0), usingCallback(<span class="keyword">false</span>), userCallback(0), userData(0),</div><div class="line"><a name="l00559"></a><span class="lineno">  559</span>&#160;      continueSysex(<span class="keyword">false</span>) {}</div><div class="line"><a name="l00560"></a><span class="lineno">  560</span>&#160;  };</div><div class="line"><a name="l00561"></a><span class="lineno">  561</span>&#160;</div><div class="line"><a name="l00562"></a><span class="lineno">  562</span>&#160; <span class="keyword">protected</span>:</div><div class="line"><a name="l00563"></a><span class="lineno">  563</span>&#160;  <a class="code" href="structMidiInApi_1_1RtMidiInData.html">RtMidiInData</a> inputData_;</div><div class="line"><a name="l00564"></a><span class="lineno">  564</span>&#160;};</div><div class="line"><a name="l00565"></a><span class="lineno">  565</span>&#160;</div><div class="line"><a name="l00566"></a><span class="lineno"><a class="line" href="classMidiOutApi.html">  566</a></span>&#160;<span class="keyword">class </span><a class="code" href="classMidiOutApi.html">MidiOutApi</a> : <span class="keyword">public</span> <a class="code" href="classMidiApi.html">MidiApi</a></div><div class="line"><a name="l00567"></a><span class="lineno">  567</span>&#160;{</div><div class="line"><a name="l00568"></a><span class="lineno">  568</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l00569"></a><span class="lineno">  569</span>&#160;</div><div class="line"><a name="l00570"></a><span class="lineno">  570</span>&#160;  <a class="code" href="classMidiOutApi.html">MidiOutApi</a>( <span class="keywordtype">void</span> );</div><div class="line"><a name="l00571"></a><span class="lineno">  571</span>&#160;  <span class="keyword">virtual</span> ~<a class="code" href="classMidiOutApi.html">MidiOutApi</a>( <span class="keywordtype">void</span> );</div><div class="line"><a name="l00572"></a><span class="lineno">  572</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">void</span> sendMessage( <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *message, <span class="keywordtype">size_t</span> size ) = 0;</div><div class="line"><a name="l00573"></a><span class="lineno">  573</span>&#160;};</div><div class="line"><a name="l00574"></a><span class="lineno">  574</span>&#160;</div><div class="line"><a name="l00575"></a><span class="lineno">  575</span>&#160;<span class="comment">// **************************************************************** //</span></div><div class="line"><a name="l00576"></a><span class="lineno">  576</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00577"></a><span class="lineno">  577</span>&#160;<span class="comment">// Inline RtMidiIn and RtMidiOut definitions.</span></div><div class="line"><a name="l00578"></a><span class="lineno">  578</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00579"></a><span class="lineno">  579</span>&#160;<span class="comment">// **************************************************************** //</span></div><div class="line"><a name="l00580"></a><span class="lineno">  580</span>&#160;</div><div class="line"><a name="l00581"></a><span class="lineno"><a class="line" href="classRtMidiIn.html#a6475a11eeb0c8bf22157c3887b100164">  581</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406">RtMidi::Api</a> <a class="code" href="classRtMidiIn.html#a6475a11eeb0c8bf22157c3887b100164">RtMidiIn :: getCurrentApi</a>( <span class="keywordtype">void</span> ) <span class="keywordflow">throw</span>() { <span class="keywordflow">return</span> rtapi_-&gt;getCurrentApi(); }</div><div class="line"><a name="l00582"></a><span class="lineno"><a class="line" href="classRtMidiIn.html#a466c94692550aa109d9e7536bf5d9add">  582</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classRtMidiIn.html#a466c94692550aa109d9e7536bf5d9add">RtMidiIn :: openPort</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber, <span class="keyword">const</span> std::string &amp;portName ) { rtapi_-&gt;openPort( portNumber, portName ); }</div><div class="line"><a name="l00583"></a><span class="lineno"><a class="line" href="classRtMidiIn.html#a9484f3af0c0d1c6f255af9b91f55b3e2">  583</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classRtMidiIn.html#a9484f3af0c0d1c6f255af9b91f55b3e2">RtMidiIn :: openVirtualPort</a>( <span class="keyword">const</span> std::string &amp;portName ) { rtapi_-&gt;openVirtualPort( portName ); }</div><div class="line"><a name="l00584"></a><span class="lineno"><a class="line" href="classRtMidiIn.html#a55bacf0d228fd8e3be6a79d12fd1dc39">  584</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classRtMidiIn.html#a55bacf0d228fd8e3be6a79d12fd1dc39">RtMidiIn :: closePort</a>( <span class="keywordtype">void</span> ) { rtapi_-&gt;closePort(); }</div><div class="line"><a name="l00585"></a><span class="lineno"><a class="line" href="classRtMidiIn.html#aa91ef67e71a19010e16acd0be0eb3ce7">  585</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classRtMidiIn.html#aa91ef67e71a19010e16acd0be0eb3ce7">RtMidiIn :: isPortOpen</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> rtapi_-&gt;isPortOpen(); }</div><div class="line"><a name="l00586"></a><span class="lineno"><a class="line" href="classRtMidiIn.html#a7590563461c7467608a4b3806406b32d">  586</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classRtMidiIn.html#a7590563461c7467608a4b3806406b32d">RtMidiIn :: setCallback</a>( RtMidiCallback callback, <span class="keywordtype">void</span> *userData ) { ((<a class="code" href="classMidiInApi.html">MidiInApi</a> *)rtapi_)-&gt;setCallback( callback, userData ); }</div><div class="line"><a name="l00587"></a><span class="lineno"><a class="line" href="classRtMidiIn.html#ade23832a66c1ed56965c26325602543e">  587</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classRtMidiIn.html#ade23832a66c1ed56965c26325602543e">RtMidiIn :: cancelCallback</a>( <span class="keywordtype">void</span> ) { ((<a class="code" href="classMidiInApi.html">MidiInApi</a> *)rtapi_)-&gt;cancelCallback(); }</div><div class="line"><a name="l00588"></a><span class="lineno"><a class="line" href="classRtMidiIn.html#a62b1b38aa8e5f11cd66f03d59228f4e4">  588</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtMidiIn.html#a62b1b38aa8e5f11cd66f03d59228f4e4">RtMidiIn :: getPortCount</a>( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> rtapi_-&gt;getPortCount(); }</div><div class="line"><a name="l00589"></a><span class="lineno"><a class="line" href="classRtMidiIn.html#af2961fff09fa01a3d5bc0f0c5a042aaf">  589</a></span>&#160;<span class="keyword">inline</span> std::string <a class="code" href="classRtMidiIn.html#af2961fff09fa01a3d5bc0f0c5a042aaf">RtMidiIn :: getPortName</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber ) { <span class="keywordflow">return</span> rtapi_-&gt;getPortName( portNumber ); }</div><div class="line"><a name="l00590"></a><span class="lineno"><a class="line" href="classRtMidiIn.html#af9507125aaa42276ccc01df576fc3533">  590</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classRtMidiIn.html#af9507125aaa42276ccc01df576fc3533">RtMidiIn :: ignoreTypes</a>( <span class="keywordtype">bool</span> midiSysex, <span class="keywordtype">bool</span> midiTime, <span class="keywordtype">bool</span> midiSense ) { ((<a class="code" href="classMidiInApi.html">MidiInApi</a> *)rtapi_)-&gt;ignoreTypes( midiSysex, midiTime, midiSense ); }</div><div class="line"><a name="l00591"></a><span class="lineno"><a class="line" href="classRtMidiIn.html#a1ba10ecd276b30a8579c7d60a9c890eb">  591</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">double</span> <a class="code" href="classRtMidiIn.html#a1ba10ecd276b30a8579c7d60a9c890eb">RtMidiIn :: getMessage</a>( std::vector&lt;unsigned char&gt; *message ) { <span class="keywordflow">return</span> ((<a class="code" href="classMidiInApi.html">MidiInApi</a> *)rtapi_)-&gt;getMessage( message ); }</div><div class="line"><a name="l00592"></a><span class="lineno"><a class="line" href="classRtMidiIn.html#ad70189a24427b3169d81fcc69f6441e0">  592</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classRtMidiIn.html#ad70189a24427b3169d81fcc69f6441e0">RtMidiIn :: setErrorCallback</a>( <a class="code" href="RtMidi_8h.html#a57641d3490f722c3efb9ee1c640e36bb">RtMidiErrorCallback</a> errorCallback, <span class="keywordtype">void</span> *userData ) { rtapi_-&gt;setErrorCallback(errorCallback, userData); }</div><div class="line"><a name="l00593"></a><span class="lineno">  593</span>&#160;</div><div class="line"><a name="l00594"></a><span class="lineno"><a class="line" href="classRtMidiOut.html#a532b5712e305bd8afb65a3ad14138e0f">  594</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406">RtMidi::Api</a> <a class="code" href="classRtMidiOut.html#a532b5712e305bd8afb65a3ad14138e0f">RtMidiOut :: getCurrentApi</a>( <span class="keywordtype">void</span> ) <span class="keywordflow">throw</span>() { <span class="keywordflow">return</span> rtapi_-&gt;getCurrentApi(); }</div><div class="line"><a name="l00595"></a><span class="lineno"><a class="line" href="classRtMidiOut.html#a4c29a5e7c0f5c088953ef02f3c38d4f3">  595</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classRtMidiOut.html#a4c29a5e7c0f5c088953ef02f3c38d4f3">RtMidiOut :: openPort</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber, <span class="keyword">const</span> std::string &amp;portName ) { rtapi_-&gt;openPort( portNumber, portName ); }</div><div class="line"><a name="l00596"></a><span class="lineno"><a class="line" href="classRtMidiOut.html#a79d6d672c18463d3759d1523e675f9d3">  596</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classRtMidiOut.html#a79d6d672c18463d3759d1523e675f9d3">RtMidiOut :: openVirtualPort</a>( <span class="keyword">const</span> std::string &amp;portName ) { rtapi_-&gt;openVirtualPort( portName ); }</div><div class="line"><a name="l00597"></a><span class="lineno"><a class="line" href="classRtMidiOut.html#a5a28d1ba9e002fd07a317d3a257d87e8">  597</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classRtMidiOut.html#a5a28d1ba9e002fd07a317d3a257d87e8">RtMidiOut :: closePort</a>( <span class="keywordtype">void</span> ) { rtapi_-&gt;closePort(); }</div><div class="line"><a name="l00598"></a><span class="lineno"><a class="line" href="classRtMidiOut.html#a90445e886e502f06aa0d3fce5cbc7721">  598</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classRtMidiOut.html#a90445e886e502f06aa0d3fce5cbc7721">RtMidiOut :: isPortOpen</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> rtapi_-&gt;isPortOpen(); }</div><div class="line"><a name="l00599"></a><span class="lineno"><a class="line" href="classRtMidiOut.html#a0c4d662e1c398ddf35a2dbaf66f50976">  599</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtMidiOut.html#a0c4d662e1c398ddf35a2dbaf66f50976">RtMidiOut :: getPortCount</a>( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> rtapi_-&gt;getPortCount(); }</div><div class="line"><a name="l00600"></a><span class="lineno"><a class="line" href="classRtMidiOut.html#acc4ae0ab71a49ae7629075d5a9cd837c">  600</a></span>&#160;<span class="keyword">inline</span> std::string <a class="code" href="classRtMidiOut.html#acc4ae0ab71a49ae7629075d5a9cd837c">RtMidiOut :: getPortName</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber ) { <span class="keywordflow">return</span> rtapi_-&gt;getPortName( portNumber ); }</div><div class="line"><a name="l00601"></a><span class="lineno"><a class="line" href="classRtMidiOut.html#a19c7049a840a0181a0ddd4b14e99c651">  601</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classRtMidiOut.html#a19c7049a840a0181a0ddd4b14e99c651">RtMidiOut :: sendMessage</a>( <span class="keyword">const</span> std::vector&lt;unsigned char&gt; *message ) { ((<a class="code" href="classMidiOutApi.html">MidiOutApi</a> *)rtapi_)-&gt;sendMessage( &amp;message-&gt;at(0), message-&gt;size() ); }</div><div class="line"><a name="l00602"></a><span class="lineno"><a class="line" href="classRtMidiOut.html#a1e71b6498da083e9c0e46084d3521679">  602</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classRtMidiOut.html#a19c7049a840a0181a0ddd4b14e99c651">RtMidiOut :: sendMessage</a>( <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *message, <span class="keywordtype">size_t</span> size ) { ((<a class="code" href="classMidiOutApi.html">MidiOutApi</a> *)rtapi_)-&gt;sendMessage( message, size ); }</div><div class="line"><a name="l00603"></a><span class="lineno"><a class="line" href="classRtMidiOut.html#a91a4571214f7b033312cc6cb661d3253">  603</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classRtMidiOut.html#a91a4571214f7b033312cc6cb661d3253">RtMidiOut :: setErrorCallback</a>( <a class="code" href="RtMidi_8h.html#a57641d3490f722c3efb9ee1c640e36bb">RtMidiErrorCallback</a> errorCallback, <span class="keywordtype">void</span> *userData ) { rtapi_-&gt;setErrorCallback(errorCallback, userData); }</div><div class="line"><a name="l00604"></a><span class="lineno">  604</span>&#160;</div><div class="line"><a name="l00605"></a><span class="lineno">  605</span>&#160;<span class="comment">// **************************************************************** //</span></div><div class="line"><a name="l00606"></a><span class="lineno">  606</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00607"></a><span class="lineno">  607</span>&#160;<span class="comment">// MidiInApi and MidiOutApi subclass prototypes.</span></div><div class="line"><a name="l00608"></a><span class="lineno">  608</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00609"></a><span class="lineno">  609</span>&#160;<span class="comment">// **************************************************************** //</span></div><div class="line"><a name="l00610"></a><span class="lineno">  610</span>&#160;</div><div class="line"><a name="l00611"></a><span class="lineno">  611</span>&#160;<span class="preprocessor">#if !defined(__LINUX_ALSA__) &amp;&amp; !defined(__UNIX_JACK__) &amp;&amp; !defined(__MACOSX_CORE__) &amp;&amp; !defined(__WINDOWS_MM__)</span></div><div class="line"><a name="l00612"></a><span class="lineno">  612</span>&#160;<span class="preprocessor">  #define __RTMIDI_DUMMY__</span></div><div class="line"><a name="l00613"></a><span class="lineno">  613</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00614"></a><span class="lineno">  614</span>&#160;</div><div class="line"><a name="l00615"></a><span class="lineno">  615</span>&#160;<span class="preprocessor">#if defined(__MACOSX_CORE__)</span></div><div class="line"><a name="l00616"></a><span class="lineno">  616</span>&#160;</div><div class="line"><a name="l00617"></a><span class="lineno"><a class="line" href="classMidiInCore.html">  617</a></span>&#160;<span class="keyword">class </span><a class="code" href="classMidiInCore.html">MidiInCore</a>: <span class="keyword">public</span> <a class="code" href="classMidiInApi.html">MidiInApi</a></div><div class="line"><a name="l00618"></a><span class="lineno">  618</span>&#160;{</div><div class="line"><a name="l00619"></a><span class="lineno">  619</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l00620"></a><span class="lineno">  620</span>&#160;  <a class="code" href="classMidiInCore.html">MidiInCore</a>( <span class="keyword">const</span> std::string &amp;clientName, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> queueSizeLimit );</div><div class="line"><a name="l00621"></a><span class="lineno">  621</span>&#160;  ~<a class="code" href="classMidiInCore.html">MidiInCore</a>( <span class="keywordtype">void</span> );</div><div class="line"><a name="l00622"></a><span class="lineno">  622</span>&#160;  <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406">RtMidi::Api</a> getCurrentApi( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a3f41293f89467641484fbd54c4530908">RtMidi::MACOSX_CORE</a>; };</div><div class="line"><a name="l00623"></a><span class="lineno">  623</span>&#160;  <span class="keywordtype">void</span> openPort( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber, <span class="keyword">const</span> std::string &amp;portName );</div><div class="line"><a name="l00624"></a><span class="lineno">  624</span>&#160;  <span class="keywordtype">void</span> openVirtualPort( <span class="keyword">const</span> std::string &amp;portName );</div><div class="line"><a name="l00625"></a><span class="lineno">  625</span>&#160;  <span class="keywordtype">void</span> closePort( <span class="keywordtype">void</span> );</div><div class="line"><a name="l00626"></a><span class="lineno">  626</span>&#160;  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> getPortCount( <span class="keywordtype">void</span> );</div><div class="line"><a name="l00627"></a><span class="lineno">  627</span>&#160;  std::string getPortName( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber );</div><div class="line"><a name="l00628"></a><span class="lineno">  628</span>&#160;</div><div class="line"><a name="l00629"></a><span class="lineno">  629</span>&#160; <span class="keyword">protected</span>:</div><div class="line"><a name="l00630"></a><span class="lineno">  630</span>&#160;  <span class="keywordtype">void</span> initialize( <span class="keyword">const</span> std::string&amp; clientName );</div><div class="line"><a name="l00631"></a><span class="lineno">  631</span>&#160;};</div><div class="line"><a name="l00632"></a><span class="lineno">  632</span>&#160;</div><div class="line"><a name="l00633"></a><span class="lineno"><a class="line" href="classMidiOutCore.html">  633</a></span>&#160;<span class="keyword">class </span><a class="code" href="classMidiOutCore.html">MidiOutCore</a>: <span class="keyword">public</span> <a class="code" href="classMidiOutApi.html">MidiOutApi</a></div><div class="line"><a name="l00634"></a><span class="lineno">  634</span>&#160;{</div><div class="line"><a name="l00635"></a><span class="lineno">  635</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l00636"></a><span class="lineno">  636</span>&#160;  <a class="code" href="classMidiOutCore.html">MidiOutCore</a>( <span class="keyword">const</span> std::string &amp;clientName );</div><div class="line"><a name="l00637"></a><span class="lineno">  637</span>&#160;  ~<a class="code" href="classMidiOutCore.html">MidiOutCore</a>( <span class="keywordtype">void</span> );</div><div class="line"><a name="l00638"></a><span class="lineno">  638</span>&#160;  <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406">RtMidi::Api</a> getCurrentApi( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a3f41293f89467641484fbd54c4530908">RtMidi::MACOSX_CORE</a>; };</div><div class="line"><a name="l00639"></a><span class="lineno">  639</span>&#160;  <span class="keywordtype">void</span> openPort( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber, <span class="keyword">const</span> std::string &amp;portName );</div><div class="line"><a name="l00640"></a><span class="lineno">  640</span>&#160;  <span class="keywordtype">void</span> openVirtualPort( <span class="keyword">const</span> std::string &amp;portName );</div><div class="line"><a name="l00641"></a><span class="lineno">  641</span>&#160;  <span class="keywordtype">void</span> closePort( <span class="keywordtype">void</span> );</div><div class="line"><a name="l00642"></a><span class="lineno">  642</span>&#160;  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> getPortCount( <span class="keywordtype">void</span> );</div><div class="line"><a name="l00643"></a><span class="lineno">  643</span>&#160;  std::string getPortName( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber );</div><div class="line"><a name="l00644"></a><span class="lineno">  644</span>&#160;  <span class="keywordtype">void</span> sendMessage( <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *message, <span class="keywordtype">size_t</span> size );</div><div class="line"><a name="l00645"></a><span class="lineno">  645</span>&#160;</div><div class="line"><a name="l00646"></a><span class="lineno">  646</span>&#160; <span class="keyword">protected</span>:</div><div class="line"><a name="l00647"></a><span class="lineno">  647</span>&#160;  <span class="keywordtype">void</span> initialize( <span class="keyword">const</span> std::string&amp; clientName );</div><div class="line"><a name="l00648"></a><span class="lineno">  648</span>&#160;};</div><div class="line"><a name="l00649"></a><span class="lineno">  649</span>&#160;</div><div class="line"><a name="l00650"></a><span class="lineno">  650</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00651"></a><span class="lineno">  651</span>&#160;</div><div class="line"><a name="l00652"></a><span class="lineno">  652</span>&#160;<span class="preprocessor">#if defined(__UNIX_JACK__)</span></div><div class="line"><a name="l00653"></a><span class="lineno">  653</span>&#160;</div><div class="line"><a name="l00654"></a><span class="lineno"><a class="line" href="classMidiInJack.html">  654</a></span>&#160;<span class="keyword">class </span><a class="code" href="classMidiInJack.html">MidiInJack</a>: <span class="keyword">public</span> <a class="code" href="classMidiInApi.html">MidiInApi</a></div><div class="line"><a name="l00655"></a><span class="lineno">  655</span>&#160;{</div><div class="line"><a name="l00656"></a><span class="lineno">  656</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l00657"></a><span class="lineno">  657</span>&#160;  <a class="code" href="classMidiInJack.html">MidiInJack</a>( <span class="keyword">const</span> std::string &amp;clientName, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> queueSizeLimit );</div><div class="line"><a name="l00658"></a><span class="lineno">  658</span>&#160;  ~<a class="code" href="classMidiInJack.html">MidiInJack</a>( <span class="keywordtype">void</span> );</div><div class="line"><a name="l00659"></a><span class="lineno">  659</span>&#160;  <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406">RtMidi::Api</a> getCurrentApi( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a1f59daf3120f47c0ae3891773112ddfa">RtMidi::UNIX_JACK</a>; };</div><div class="line"><a name="l00660"></a><span class="lineno">  660</span>&#160;  <span class="keywordtype">void</span> openPort( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber, <span class="keyword">const</span> std::string &amp;portName );</div><div class="line"><a name="l00661"></a><span class="lineno">  661</span>&#160;  <span class="keywordtype">void</span> openVirtualPort( <span class="keyword">const</span> std::string &amp;portName );</div><div class="line"><a name="l00662"></a><span class="lineno">  662</span>&#160;  <span class="keywordtype">void</span> closePort( <span class="keywordtype">void</span> );</div><div class="line"><a name="l00663"></a><span class="lineno">  663</span>&#160;  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> getPortCount( <span class="keywordtype">void</span> );</div><div class="line"><a name="l00664"></a><span class="lineno">  664</span>&#160;  std::string getPortName( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber );</div><div class="line"><a name="l00665"></a><span class="lineno">  665</span>&#160;</div><div class="line"><a name="l00666"></a><span class="lineno">  666</span>&#160; <span class="keyword">protected</span>:</div><div class="line"><a name="l00667"></a><span class="lineno">  667</span>&#160;  std::string clientName;</div><div class="line"><a name="l00668"></a><span class="lineno">  668</span>&#160;</div><div class="line"><a name="l00669"></a><span class="lineno">  669</span>&#160;  <span class="keywordtype">void</span> connect( <span class="keywordtype">void</span> );</div><div class="line"><a name="l00670"></a><span class="lineno">  670</span>&#160;  <span class="keywordtype">void</span> initialize( <span class="keyword">const</span> std::string&amp; clientName );</div><div class="line"><a name="l00671"></a><span class="lineno">  671</span>&#160;};</div><div class="line"><a name="l00672"></a><span class="lineno">  672</span>&#160;</div><div class="line"><a name="l00673"></a><span class="lineno"><a class="line" href="classMidiOutJack.html">  673</a></span>&#160;<span class="keyword">class </span><a class="code" href="classMidiOutJack.html">MidiOutJack</a>: <span class="keyword">public</span> <a class="code" href="classMidiOutApi.html">MidiOutApi</a></div><div class="line"><a name="l00674"></a><span class="lineno">  674</span>&#160;{</div><div class="line"><a name="l00675"></a><span class="lineno">  675</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l00676"></a><span class="lineno">  676</span>&#160;  <a class="code" href="classMidiOutJack.html">MidiOutJack</a>( <span class="keyword">const</span> std::string &amp;clientName );</div><div class="line"><a name="l00677"></a><span class="lineno">  677</span>&#160;  ~<a class="code" href="classMidiOutJack.html">MidiOutJack</a>( <span class="keywordtype">void</span> );</div><div class="line"><a name="l00678"></a><span class="lineno">  678</span>&#160;  <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406">RtMidi::Api</a> getCurrentApi( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a1f59daf3120f47c0ae3891773112ddfa">RtMidi::UNIX_JACK</a>; };</div><div class="line"><a name="l00679"></a><span class="lineno">  679</span>&#160;  <span class="keywordtype">void</span> openPort( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber, <span class="keyword">const</span> std::string &amp;portName );</div><div class="line"><a name="l00680"></a><span class="lineno">  680</span>&#160;  <span class="keywordtype">void</span> openVirtualPort( <span class="keyword">const</span> std::string &amp;portName );</div><div class="line"><a name="l00681"></a><span class="lineno">  681</span>&#160;  <span class="keywordtype">void</span> closePort( <span class="keywordtype">void</span> );</div><div class="line"><a name="l00682"></a><span class="lineno">  682</span>&#160;  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> getPortCount( <span class="keywordtype">void</span> );</div><div class="line"><a name="l00683"></a><span class="lineno">  683</span>&#160;  std::string getPortName( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber );</div><div class="line"><a name="l00684"></a><span class="lineno">  684</span>&#160;  <span class="keywordtype">void</span> sendMessage( <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *message, <span class="keywordtype">size_t</span> size );</div><div class="line"><a name="l00685"></a><span class="lineno">  685</span>&#160;</div><div class="line"><a name="l00686"></a><span class="lineno">  686</span>&#160; <span class="keyword">protected</span>:</div><div class="line"><a name="l00687"></a><span class="lineno">  687</span>&#160;  std::string clientName;</div><div class="line"><a name="l00688"></a><span class="lineno">  688</span>&#160;</div><div class="line"><a name="l00689"></a><span class="lineno">  689</span>&#160;  <span class="keywordtype">void</span> connect( <span class="keywordtype">void</span> );</div><div class="line"><a name="l00690"></a><span class="lineno">  690</span>&#160;  <span class="keywordtype">void</span> initialize( <span class="keyword">const</span> std::string&amp; clientName );</div><div class="line"><a name="l00691"></a><span class="lineno">  691</span>&#160;};</div><div class="line"><a name="l00692"></a><span class="lineno">  692</span>&#160;</div><div class="line"><a name="l00693"></a><span class="lineno">  693</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00694"></a><span class="lineno">  694</span>&#160;</div><div class="line"><a name="l00695"></a><span class="lineno">  695</span>&#160;<span class="preprocessor">#if defined(__LINUX_ALSA__)</span></div><div class="line"><a name="l00696"></a><span class="lineno">  696</span>&#160;</div><div class="line"><a name="l00697"></a><span class="lineno"><a class="line" href="classMidiInAlsa.html">  697</a></span>&#160;<span class="keyword">class </span><a class="code" href="classMidiInAlsa.html">MidiInAlsa</a>: <span class="keyword">public</span> <a class="code" href="classMidiInApi.html">MidiInApi</a></div><div class="line"><a name="l00698"></a><span class="lineno">  698</span>&#160;{</div><div class="line"><a name="l00699"></a><span class="lineno">  699</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l00700"></a><span class="lineno">  700</span>&#160;  <a class="code" href="classMidiInAlsa.html">MidiInAlsa</a>( <span class="keyword">const</span> std::string &amp;clientName, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> queueSizeLimit );</div><div class="line"><a name="l00701"></a><span class="lineno">  701</span>&#160;  ~<a class="code" href="classMidiInAlsa.html">MidiInAlsa</a>( <span class="keywordtype">void</span> );</div><div class="line"><a name="l00702"></a><span class="lineno">  702</span>&#160;  <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406">RtMidi::Api</a> getCurrentApi( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a20c691b24844d3ab5dbf882123235df2">RtMidi::LINUX_ALSA</a>; };</div><div class="line"><a name="l00703"></a><span class="lineno">  703</span>&#160;  <span class="keywordtype">void</span> openPort( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber, <span class="keyword">const</span> std::string &amp;portName );</div><div class="line"><a name="l00704"></a><span class="lineno">  704</span>&#160;  <span class="keywordtype">void</span> openVirtualPort( <span class="keyword">const</span> std::string &amp;portName );</div><div class="line"><a name="l00705"></a><span class="lineno">  705</span>&#160;  <span class="keywordtype">void</span> closePort( <span class="keywordtype">void</span> );</div><div class="line"><a name="l00706"></a><span class="lineno">  706</span>&#160;  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> getPortCount( <span class="keywordtype">void</span> );</div><div class="line"><a name="l00707"></a><span class="lineno">  707</span>&#160;  std::string getPortName( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber );</div><div class="line"><a name="l00708"></a><span class="lineno">  708</span>&#160;</div><div class="line"><a name="l00709"></a><span class="lineno">  709</span>&#160; <span class="keyword">protected</span>:</div><div class="line"><a name="l00710"></a><span class="lineno">  710</span>&#160;  <span class="keywordtype">void</span> initialize( <span class="keyword">const</span> std::string&amp; clientName );</div><div class="line"><a name="l00711"></a><span class="lineno">  711</span>&#160;};</div><div class="line"><a name="l00712"></a><span class="lineno">  712</span>&#160;</div><div class="line"><a name="l00713"></a><span class="lineno"><a class="line" href="classMidiOutAlsa.html">  713</a></span>&#160;<span class="keyword">class </span><a class="code" href="classMidiOutAlsa.html">MidiOutAlsa</a>: <span class="keyword">public</span> <a class="code" href="classMidiOutApi.html">MidiOutApi</a></div><div class="line"><a name="l00714"></a><span class="lineno">  714</span>&#160;{</div><div class="line"><a name="l00715"></a><span class="lineno">  715</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l00716"></a><span class="lineno">  716</span>&#160;  <a class="code" href="classMidiOutAlsa.html">MidiOutAlsa</a>( <span class="keyword">const</span> std::string &amp;clientName );</div><div class="line"><a name="l00717"></a><span class="lineno">  717</span>&#160;  ~<a class="code" href="classMidiOutAlsa.html">MidiOutAlsa</a>( <span class="keywordtype">void</span> );</div><div class="line"><a name="l00718"></a><span class="lineno">  718</span>&#160;  <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406">RtMidi::Api</a> getCurrentApi( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a20c691b24844d3ab5dbf882123235df2">RtMidi::LINUX_ALSA</a>; };</div><div class="line"><a name="l00719"></a><span class="lineno">  719</span>&#160;  <span class="keywordtype">void</span> openPort( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber, <span class="keyword">const</span> std::string &amp;portName );</div><div class="line"><a name="l00720"></a><span class="lineno">  720</span>&#160;  <span class="keywordtype">void</span> openVirtualPort( <span class="keyword">const</span> std::string &amp;portName );</div><div class="line"><a name="l00721"></a><span class="lineno">  721</span>&#160;  <span class="keywordtype">void</span> closePort( <span class="keywordtype">void</span> );</div><div class="line"><a name="l00722"></a><span class="lineno">  722</span>&#160;  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> getPortCount( <span class="keywordtype">void</span> );</div><div class="line"><a name="l00723"></a><span class="lineno">  723</span>&#160;  std::string getPortName( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber );</div><div class="line"><a name="l00724"></a><span class="lineno">  724</span>&#160;  <span class="keywordtype">void</span> sendMessage( <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *message, <span class="keywordtype">size_t</span> size );</div><div class="line"><a name="l00725"></a><span class="lineno">  725</span>&#160;</div><div class="line"><a name="l00726"></a><span class="lineno">  726</span>&#160; <span class="keyword">protected</span>:</div><div class="line"><a name="l00727"></a><span class="lineno">  727</span>&#160;  <span class="keywordtype">void</span> initialize( <span class="keyword">const</span> std::string&amp; clientName );</div><div class="line"><a name="l00728"></a><span class="lineno">  728</span>&#160;};</div><div class="line"><a name="l00729"></a><span class="lineno">  729</span>&#160;</div><div class="line"><a name="l00730"></a><span class="lineno">  730</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00731"></a><span class="lineno">  731</span>&#160;</div><div class="line"><a name="l00732"></a><span class="lineno">  732</span>&#160;<span class="preprocessor">#if defined(__WINDOWS_MM__)</span></div><div class="line"><a name="l00733"></a><span class="lineno">  733</span>&#160;</div><div class="line"><a name="l00734"></a><span class="lineno"><a class="line" href="classMidiInWinMM.html">  734</a></span>&#160;<span class="keyword">class </span><a class="code" href="classMidiInWinMM.html">MidiInWinMM</a>: <span class="keyword">public</span> <a class="code" href="classMidiInApi.html">MidiInApi</a></div><div class="line"><a name="l00735"></a><span class="lineno">  735</span>&#160;{</div><div class="line"><a name="l00736"></a><span class="lineno">  736</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l00737"></a><span class="lineno">  737</span>&#160;  <a class="code" href="classMidiInWinMM.html">MidiInWinMM</a>( <span class="keyword">const</span> std::string &amp;clientName, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> queueSizeLimit );</div><div class="line"><a name="l00738"></a><span class="lineno">  738</span>&#160;  ~<a class="code" href="classMidiInWinMM.html">MidiInWinMM</a>( <span class="keywordtype">void</span> );</div><div class="line"><a name="l00739"></a><span class="lineno">  739</span>&#160;  <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406">RtMidi::Api</a> getCurrentApi( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a647868cb4ed37f517bf185a7f41cb70f">RtMidi::WINDOWS_MM</a>; };</div><div class="line"><a name="l00740"></a><span class="lineno">  740</span>&#160;  <span class="keywordtype">void</span> openPort( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber, <span class="keyword">const</span> std::string &amp;portName );</div><div class="line"><a name="l00741"></a><span class="lineno">  741</span>&#160;  <span class="keywordtype">void</span> openVirtualPort( <span class="keyword">const</span> std::string &amp;portName );</div><div class="line"><a name="l00742"></a><span class="lineno">  742</span>&#160;  <span class="keywordtype">void</span> closePort( <span class="keywordtype">void</span> );</div><div class="line"><a name="l00743"></a><span class="lineno">  743</span>&#160;  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> getPortCount( <span class="keywordtype">void</span> );</div><div class="line"><a name="l00744"></a><span class="lineno">  744</span>&#160;  std::string getPortName( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber );</div><div class="line"><a name="l00745"></a><span class="lineno">  745</span>&#160;</div><div class="line"><a name="l00746"></a><span class="lineno">  746</span>&#160; <span class="keyword">protected</span>:</div><div class="line"><a name="l00747"></a><span class="lineno">  747</span>&#160;  <span class="keywordtype">void</span> initialize( <span class="keyword">const</span> std::string&amp; clientName );</div><div class="line"><a name="l00748"></a><span class="lineno">  748</span>&#160;};</div><div class="line"><a name="l00749"></a><span class="lineno">  749</span>&#160;</div><div class="line"><a name="l00750"></a><span class="lineno"><a class="line" href="classMidiOutWinMM.html">  750</a></span>&#160;<span class="keyword">class </span><a class="code" href="classMidiOutWinMM.html">MidiOutWinMM</a>: <span class="keyword">public</span> <a class="code" href="classMidiOutApi.html">MidiOutApi</a></div><div class="line"><a name="l00751"></a><span class="lineno">  751</span>&#160;{</div><div class="line"><a name="l00752"></a><span class="lineno">  752</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l00753"></a><span class="lineno">  753</span>&#160;  <a class="code" href="classMidiOutWinMM.html">MidiOutWinMM</a>( <span class="keyword">const</span> std::string &amp;clientName );</div><div class="line"><a name="l00754"></a><span class="lineno">  754</span>&#160;  ~<a class="code" href="classMidiOutWinMM.html">MidiOutWinMM</a>( <span class="keywordtype">void</span> );</div><div class="line"><a name="l00755"></a><span class="lineno">  755</span>&#160;  <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406">RtMidi::Api</a> getCurrentApi( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a647868cb4ed37f517bf185a7f41cb70f">RtMidi::WINDOWS_MM</a>; };</div><div class="line"><a name="l00756"></a><span class="lineno">  756</span>&#160;  <span class="keywordtype">void</span> openPort( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber, <span class="keyword">const</span> std::string &amp;portName );</div><div class="line"><a name="l00757"></a><span class="lineno">  757</span>&#160;  <span class="keywordtype">void</span> openVirtualPort( <span class="keyword">const</span> std::string &amp;portName );</div><div class="line"><a name="l00758"></a><span class="lineno">  758</span>&#160;  <span class="keywordtype">void</span> closePort( <span class="keywordtype">void</span> );</div><div class="line"><a name="l00759"></a><span class="lineno">  759</span>&#160;  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> getPortCount( <span class="keywordtype">void</span> );</div><div class="line"><a name="l00760"></a><span class="lineno">  760</span>&#160;  std::string getPortName( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber );</div><div class="line"><a name="l00761"></a><span class="lineno">  761</span>&#160;  <span class="keywordtype">void</span> sendMessage( <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *message, <span class="keywordtype">size_t</span> size );</div><div class="line"><a name="l00762"></a><span class="lineno">  762</span>&#160;</div><div class="line"><a name="l00763"></a><span class="lineno">  763</span>&#160; <span class="keyword">protected</span>:</div><div class="line"><a name="l00764"></a><span class="lineno">  764</span>&#160;  <span class="keywordtype">void</span> initialize( <span class="keyword">const</span> std::string&amp; clientName );</div><div class="line"><a name="l00765"></a><span class="lineno">  765</span>&#160;};</div><div class="line"><a name="l00766"></a><span class="lineno">  766</span>&#160;</div><div class="line"><a name="l00767"></a><span class="lineno">  767</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00768"></a><span class="lineno">  768</span>&#160;</div><div class="line"><a name="l00769"></a><span class="lineno">  769</span>&#160;<span class="preprocessor">#if defined(__RTMIDI_DUMMY__)</span></div><div class="line"><a name="l00770"></a><span class="lineno">  770</span>&#160;</div><div class="line"><a name="l00771"></a><span class="lineno">  771</span>&#160;<span class="keyword">class </span>MidiInDummy: <span class="keyword">public</span> <a class="code" href="classMidiInApi.html">MidiInApi</a></div><div class="line"><a name="l00772"></a><span class="lineno">  772</span>&#160;{</div><div class="line"><a name="l00773"></a><span class="lineno">  773</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l00774"></a><span class="lineno">  774</span>&#160; MidiInDummy( <span class="keyword">const</span> std::string &amp;<span class="comment">/*clientName*/</span>, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> queueSizeLimit ) : <a class="code" href="classMidiInApi.html">MidiInApi</a>( queueSizeLimit ) { errorString_ = <span class="stringliteral">&quot;MidiInDummy: This class provides no functionality.&quot;</span>; error( <a class="code" href="classRtMidiError.html#a741314057cec5fb8c743c12f284905eea778e66d730c9ff2aab7000aed36ca8df">RtMidiError::WARNING</a>, errorString_ ); }</div><div class="line"><a name="l00775"></a><span class="lineno">  775</span>&#160;  <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406">RtMidi::Api</a> getCurrentApi( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a54dba406ab358492005ce2b966a2d959">RtMidi::RTMIDI_DUMMY</a>; }</div><div class="line"><a name="l00776"></a><span class="lineno">  776</span>&#160;  <span class="keywordtype">void</span> openPort( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <span class="comment">/*portNumber*/</span>, <span class="keyword">const</span> std::string &amp;<span class="comment">/*portName*/</span> ) {}</div><div class="line"><a name="l00777"></a><span class="lineno">  777</span>&#160;  <span class="keywordtype">void</span> openVirtualPort( <span class="keyword">const</span> std::string &amp;<span class="comment">/*portName*/</span> ) {}</div><div class="line"><a name="l00778"></a><span class="lineno">  778</span>&#160;  <span class="keywordtype">void</span> closePort( <span class="keywordtype">void</span> ) {}</div><div class="line"><a name="l00779"></a><span class="lineno">  779</span>&#160;  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> getPortCount( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> 0; }</div><div class="line"><a name="l00780"></a><span class="lineno">  780</span>&#160;  std::string getPortName( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <span class="comment">/*portNumber*/</span> ) { <span class="keywordflow">return</span> <span class="stringliteral">&quot;&quot;</span>; }</div><div class="line"><a name="l00781"></a><span class="lineno">  781</span>&#160;</div><div class="line"><a name="l00782"></a><span class="lineno">  782</span>&#160; <span class="keyword">protected</span>:</div><div class="line"><a name="l00783"></a><span class="lineno">  783</span>&#160;  <span class="keywordtype">void</span> initialize( <span class="keyword">const</span> std::string&amp; <span class="comment">/*clientName*/</span> ) {}</div><div class="line"><a name="l00784"></a><span class="lineno">  784</span>&#160;};</div><div class="line"><a name="l00785"></a><span class="lineno">  785</span>&#160;</div><div class="line"><a name="l00786"></a><span class="lineno">  786</span>&#160;<span class="keyword">class </span>MidiOutDummy: <span class="keyword">public</span> <a class="code" href="classMidiOutApi.html">MidiOutApi</a></div><div class="line"><a name="l00787"></a><span class="lineno">  787</span>&#160;{</div><div class="line"><a name="l00788"></a><span class="lineno">  788</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l00789"></a><span class="lineno">  789</span>&#160;  MidiOutDummy( <span class="keyword">const</span> std::string &amp;<span class="comment">/*clientName*/</span> ) { errorString_ = <span class="stringliteral">&quot;MidiOutDummy: This class provides no functionality.&quot;</span>; error( <a class="code" href="classRtMidiError.html#a741314057cec5fb8c743c12f284905eea778e66d730c9ff2aab7000aed36ca8df">RtMidiError::WARNING</a>, errorString_ ); }</div><div class="line"><a name="l00790"></a><span class="lineno">  790</span>&#160;  <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406">RtMidi::Api</a> getCurrentApi( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> <a class="code" href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a54dba406ab358492005ce2b966a2d959">RtMidi::RTMIDI_DUMMY</a>; }</div><div class="line"><a name="l00791"></a><span class="lineno">  791</span>&#160;  <span class="keywordtype">void</span> openPort( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <span class="comment">/*portNumber*/</span>, <span class="keyword">const</span> std::string &amp;<span class="comment">/*portName*/</span> ) {}</div><div class="line"><a name="l00792"></a><span class="lineno">  792</span>&#160;  <span class="keywordtype">void</span> openVirtualPort( <span class="keyword">const</span> std::string &amp;<span class="comment">/*portName*/</span> ) {}</div><div class="line"><a name="l00793"></a><span class="lineno">  793</span>&#160;  <span class="keywordtype">void</span> closePort( <span class="keywordtype">void</span> ) {}</div><div class="line"><a name="l00794"></a><span class="lineno">  794</span>&#160;  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> getPortCount( <span class="keywordtype">void</span> ) { <span class="keywordflow">return</span> 0; }</div><div class="line"><a name="l00795"></a><span class="lineno">  795</span>&#160;  std::string getPortName( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <span class="comment">/*portNumber*/</span> ) { <span class="keywordflow">return</span> <span class="stringliteral">&quot;&quot;</span>; }</div><div class="line"><a name="l00796"></a><span class="lineno">  796</span>&#160;  <span class="keywordtype">void</span> sendMessage( <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> * <span class="comment">/*message*/</span>, <span class="keywordtype">size_t</span> <span class="comment">/*size*/</span> ) {}</div><div class="line"><a name="l00797"></a><span class="lineno">  797</span>&#160;</div><div class="line"><a name="l00798"></a><span class="lineno">  798</span>&#160; <span class="keyword">protected</span>:</div><div class="line"><a name="l00799"></a><span class="lineno">  799</span>&#160;  <span class="keywordtype">void</span> initialize( <span class="keyword">const</span> std::string&amp; <span class="comment">/*clientName*/</span> ) {}</div><div class="line"><a name="l00800"></a><span class="lineno">  800</span>&#160;};</div><div class="line"><a name="l00801"></a><span class="lineno">  801</span>&#160;</div><div class="line"><a name="l00802"></a><span class="lineno">  802</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00803"></a><span class="lineno">  803</span>&#160;</div><div class="line"><a name="l00804"></a><span class="lineno">  804</span>&#160;<span class="preprocessor">#endif</span></div><div class="ttc" id="classRtMidiOut_html_a91a4571214f7b033312cc6cb661d3253"><div class="ttname"><a href="classRtMidiOut.html#a91a4571214f7b033312cc6cb661d3253">RtMidiOut::setErrorCallback</a></div><div class="ttdeci">virtual void setErrorCallback(RtMidiErrorCallback errorCallback=NULL, void *userData=0)</div><div class="ttdoc">Set an error callback function to be invoked when an error has occured. </div><div class="ttdef"><b>Definition:</b> RtMidi.h:603</div></div>
<div class="ttc" id="classRtMidiIn_html_a6475a11eeb0c8bf22157c3887b100164"><div class="ttname"><a href="classRtMidiIn.html#a6475a11eeb0c8bf22157c3887b100164">RtMidiIn::getCurrentApi</a></div><div class="ttdeci">RtMidi::Api getCurrentApi(void)</div><div class="ttdoc">Returns the MIDI API specifier for the current instance of RtMidiIn. </div><div class="ttdef"><b>Definition:</b> RtMidi.h:581</div></div>
<div class="ttc" id="classRtMidi_html_aac66af04a85fe5c5f07c360574a19406a1f59daf3120f47c0ae3891773112ddfa"><div class="ttname"><a href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a1f59daf3120f47c0ae3891773112ddfa">RtMidi::UNIX_JACK</a></div><div class="ttdef"><b>Definition:</b> RtMidi.h:135</div></div>
<div class="ttc" id="classRtMidiOut_html_acc4ae0ab71a49ae7629075d5a9cd837c"><div class="ttname"><a href="classRtMidiOut.html#acc4ae0ab71a49ae7629075d5a9cd837c">RtMidiOut::getPortName</a></div><div class="ttdeci">std::string getPortName(unsigned int portNumber=0)</div><div class="ttdoc">Return a string identifier for the specified MIDI port type and number. </div><div class="ttdef"><b>Definition:</b> RtMidi.h:600</div></div>
<div class="ttc" id="classMidiOutWinMM_html"><div class="ttname"><a href="classMidiOutWinMM.html">MidiOutWinMM</a></div><div class="ttdef"><b>Definition:</b> RtMidi.h:750</div></div>
<div class="ttc" id="RtMidi_8h_html_a57641d3490f722c3efb9ee1c640e36bb"><div class="ttname"><a href="RtMidi_8h.html#a57641d3490f722c3efb9ee1c640e36bb">RtMidiErrorCallback</a></div><div class="ttdeci">void(* RtMidiErrorCallback)(RtMidiError::Type type, const std::string &amp;errorText, void *userData)</div><div class="ttdoc">RtMidi error callback function prototype. </div><div class="ttdef"><b>Definition:</b> RtMidi.h:122</div></div>
<div class="ttc" id="classRtMidiIn_html"><div class="ttname"><a href="classRtMidiIn.html">RtMidiIn</a></div><div class="ttdoc">A realtime MIDI input class. </div><div class="ttdef"><b>Definition:</b> RtMidi.h:220</div></div>
<div class="ttc" id="classRtMidiIn_html_a466c94692550aa109d9e7536bf5d9add"><div class="ttname"><a href="classRtMidiIn.html#a466c94692550aa109d9e7536bf5d9add">RtMidiIn::openPort</a></div><div class="ttdeci">void openPort(unsigned int portNumber=0, const std::string &amp;portName=std::string(&quot;RtMidi Input&quot;))</div><div class="ttdoc">Open a MIDI input connection given by enumeration number. </div><div class="ttdef"><b>Definition:</b> RtMidi.h:582</div></div>
<div class="ttc" id="classRtMidiError_html_af0952e4900c79dc0928a40fc62cb68d1"><div class="ttname"><a href="classRtMidiError.html#af0952e4900c79dc0928a40fc62cb68d1">RtMidiError::RtMidiError</a></div><div class="ttdeci">RtMidiError(const std::string &amp;message, Type type=RtMidiError::UNSPECIFIED)</div><div class="ttdoc">The constructor. </div><div class="ttdef"><b>Definition:</b> RtMidi.h:92</div></div>
<div class="ttc" id="classRtMidi_html_aac66af04a85fe5c5f07c360574a19406a647868cb4ed37f517bf185a7f41cb70f"><div class="ttname"><a href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a647868cb4ed37f517bf185a7f41cb70f">RtMidi::WINDOWS_MM</a></div><div class="ttdef"><b>Definition:</b> RtMidi.h:136</div></div>
<div class="ttc" id="classRtMidiOut_html_a79d6d672c18463d3759d1523e675f9d3"><div class="ttname"><a href="classRtMidiOut.html#a79d6d672c18463d3759d1523e675f9d3">RtMidiOut::openVirtualPort</a></div><div class="ttdeci">void openVirtualPort(const std::string &amp;portName=std::string(&quot;RtMidi Output&quot;))</div><div class="ttdoc">Create a virtual output port, with optional name, to allow software connections (OS X...</div><div class="ttdef"><b>Definition:</b> RtMidi.h:596</div></div>
<div class="ttc" id="classRtMidiError_html_a741314057cec5fb8c743c12f284905eead9dcf332975d9d0358f7db349d565c8a"><div class="ttname"><a href="classRtMidiError.html#a741314057cec5fb8c743c12f284905eead9dcf332975d9d0358f7db349d565c8a">RtMidiError::DEBUG_WARNING</a></div><div class="ttdef"><b>Definition:</b> RtMidi.h:79</div></div>
<div class="ttc" id="classRtMidi_html"><div class="ttname"><a href="classRtMidi.html">RtMidi</a></div><div class="ttdoc">An abstract base class for realtime MIDI input/output. </div><div class="ttdef"><b>Definition:</b> RtMidi.h:126</div></div>
<div class="ttc" id="classRtMidiError_html_a741314057cec5fb8c743c12f284905eeabd80a28d9fedd9a861c72d3fae096a79"><div class="ttname"><a href="classRtMidiError.html#a741314057cec5fb8c743c12f284905eeabd80a28d9fedd9a861c72d3fae096a79">RtMidiError::UNSPECIFIED</a></div><div class="ttdef"><b>Definition:</b> RtMidi.h:80</div></div>
<div class="ttc" id="classRtMidi_html_aac66af04a85fe5c5f07c360574a19406a3f41293f89467641484fbd54c4530908"><div class="ttname"><a href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a3f41293f89467641484fbd54c4530908">RtMidi::MACOSX_CORE</a></div><div class="ttdef"><b>Definition:</b> RtMidi.h:133</div></div>
<div class="ttc" id="classRtMidiIn_html_af9507125aaa42276ccc01df576fc3533"><div class="ttname"><a href="classRtMidiIn.html#af9507125aaa42276ccc01df576fc3533">RtMidiIn::ignoreTypes</a></div><div class="ttdeci">void ignoreTypes(bool midiSysex=true, bool midiTime=true, bool midiSense=true)</div><div class="ttdoc">Specify whether certain MIDI message types should be queued or ignored during input. </div><div class="ttdef"><b>Definition:</b> RtMidi.h:590</div></div>
<div class="ttc" id="classRtMidiIn_html_a55bacf0d228fd8e3be6a79d12fd1dc39"><div class="ttname"><a href="classRtMidiIn.html#a55bacf0d228fd8e3be6a79d12fd1dc39">RtMidiIn::closePort</a></div><div class="ttdeci">void closePort(void)</div><div class="ttdoc">Close an open MIDI connection (if one exists). </div><div class="ttdef"><b>Definition:</b> RtMidi.h:584</div></div>
<div class="ttc" id="classRtMidi_html_aac66af04a85fe5c5f07c360574a19406a4a4d9f7a38a082d6b0d5dd2b5de94ab9"><div class="ttname"><a href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a4a4d9f7a38a082d6b0d5dd2b5de94ab9">RtMidi::UNSPECIFIED</a></div><div class="ttdef"><b>Definition:</b> RtMidi.h:132</div></div>
<div class="ttc" id="classMidiInWinMM_html"><div class="ttname"><a href="classMidiInWinMM.html">MidiInWinMM</a></div><div class="ttdef"><b>Definition:</b> RtMidi.h:734</div></div>
<div class="ttc" id="classRtMidi_html_aac66af04a85fe5c5f07c360574a19406"><div class="ttname"><a href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406">RtMidi::Api</a></div><div class="ttdeci">Api</div><div class="ttdoc">MIDI API specifier arguments. </div><div class="ttdef"><b>Definition:</b> RtMidi.h:131</div></div>
<div class="ttc" id="classRtMidiError_html_a741314057cec5fb8c743c12f284905eea9928f70b060712c44f4f23432bc8b76c"><div class="ttname"><a href="classRtMidiError.html#a741314057cec5fb8c743c12f284905eea9928f70b060712c44f4f23432bc8b76c">RtMidiError::THREAD_ERROR</a></div><div class="ttdef"><b>Definition:</b> RtMidi.h:88</div></div>
<div class="ttc" id="classRtMidi_html_aac66af04a85fe5c5f07c360574a19406a20c691b24844d3ab5dbf882123235df2"><div class="ttname"><a href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a20c691b24844d3ab5dbf882123235df2">RtMidi::LINUX_ALSA</a></div><div class="ttdef"><b>Definition:</b> RtMidi.h:134</div></div>
<div class="ttc" id="classRtMidiIn_html_aac5c0da1ec6f97fe43d5189bad00caef"><div class="ttname"><a href="classRtMidiIn.html#aac5c0da1ec6f97fe43d5189bad00caef">RtMidiIn::RtMidiCallback</a></div><div class="ttdeci">void(* RtMidiCallback)(double timeStamp, std::vector&lt; unsigned char &gt; *message, void *userData)</div><div class="ttdoc">User callback function type definition. </div><div class="ttdef"><b>Definition:</b> RtMidi.h:225</div></div>
<div class="ttc" id="classRtMidiError_html_a741314057cec5fb8c743c12f284905eea25eb917874adfebc2029c41072aef05a"><div class="ttname"><a href="classRtMidiError.html#a741314057cec5fb8c743c12f284905eea25eb917874adfebc2029c41072aef05a">RtMidiError::INVALID_USE</a></div><div class="ttdef"><b>Definition:</b> RtMidi.h:85</div></div>
<div class="ttc" id="classRtMidiIn_html_a7590563461c7467608a4b3806406b32d"><div class="ttname"><a href="classRtMidiIn.html#a7590563461c7467608a4b3806406b32d">RtMidiIn::setCallback</a></div><div class="ttdeci">void setCallback(RtMidiCallback callback, void *userData=0)</div><div class="ttdoc">Set a callback function to be invoked for incoming MIDI messages. </div><div class="ttdef"><b>Definition:</b> RtMidi.h:586</div></div>
<div class="ttc" id="classMidiApi_html"><div class="ttname"><a href="classMidiApi.html">MidiApi</a></div><div class="ttdef"><b>Definition:</b> RtMidi.h:471</div></div>
<div class="ttc" id="classRtMidiError_html_a741314057cec5fb8c743c12f284905ee"><div class="ttname"><a href="classRtMidiError.html#a741314057cec5fb8c743c12f284905ee">RtMidiError::Type</a></div><div class="ttdeci">Type</div><div class="ttdoc">Defined RtMidiError types. </div><div class="ttdef"><b>Definition:</b> RtMidi.h:77</div></div>
<div class="ttc" id="classRtMidiError_html_a741314057cec5fb8c743c12f284905eeaf2708443eebfe5dcd0f656e22a73cfd8"><div class="ttname"><a href="classRtMidiError.html#a741314057cec5fb8c743c12f284905eeaf2708443eebfe5dcd0f656e22a73cfd8">RtMidiError::SYSTEM_ERROR</a></div><div class="ttdef"><b>Definition:</b> RtMidi.h:87</div></div>
<div class="ttc" id="classRtMidiError_html_a2053c81fa4756181e9ddcfad4a9bd020"><div class="ttname"><a href="classRtMidiError.html#a2053c81fa4756181e9ddcfad4a9bd020">RtMidiError::getMessage</a></div><div class="ttdeci">virtual const std::string &amp; getMessage(void) const</div><div class="ttdoc">Returns the thrown error message string. </div><div class="ttdef"><b>Definition:</b> RtMidi.h:104</div></div>
<div class="ttc" id="classMidiOutApi_html"><div class="ttname"><a href="classMidiOutApi.html">MidiOutApi</a></div><div class="ttdef"><b>Definition:</b> RtMidi.h:566</div></div>
<div class="ttc" id="classRtMidiIn_html_a9484f3af0c0d1c6f255af9b91f55b3e2"><div class="ttname"><a href="classRtMidiIn.html#a9484f3af0c0d1c6f255af9b91f55b3e2">RtMidiIn::openVirtualPort</a></div><div class="ttdeci">void openVirtualPort(const std::string &amp;portName=std::string(&quot;RtMidi Input&quot;))</div><div class="ttdoc">Create a virtual input port, with optional name, to allow software connections (OS X...</div><div class="ttdef"><b>Definition:</b> RtMidi.h:583</div></div>
<div class="ttc" id="classMidiInCore_html"><div class="ttname"><a href="classMidiInCore.html">MidiInCore</a></div><div class="ttdef"><b>Definition:</b> RtMidi.h:617</div></div>
<div class="ttc" id="classMidiOutAlsa_html"><div class="ttname"><a href="classMidiOutAlsa.html">MidiOutAlsa</a></div><div class="ttdef"><b>Definition:</b> RtMidi.h:713</div></div>
<div class="ttc" id="classRtMidiOut_html_a0c4d662e1c398ddf35a2dbaf66f50976"><div class="ttname"><a href="classRtMidiOut.html#a0c4d662e1c398ddf35a2dbaf66f50976">RtMidiOut::getPortCount</a></div><div class="ttdeci">unsigned int getPortCount(void)</div><div class="ttdoc">Return the number of available MIDI output ports. </div><div class="ttdef"><b>Definition:</b> RtMidi.h:599</div></div>
<div class="ttc" id="classRtMidiIn_html_aa91ef67e71a19010e16acd0be0eb3ce7"><div class="ttname"><a href="classRtMidiIn.html#aa91ef67e71a19010e16acd0be0eb3ce7">RtMidiIn::isPortOpen</a></div><div class="ttdeci">virtual bool isPortOpen() const</div><div class="ttdoc">Returns true if a port is open and false if not. </div><div class="ttdef"><b>Definition:</b> RtMidi.h:585</div></div>
<div class="ttc" id="classMidiOutJack_html"><div class="ttname"><a href="classMidiOutJack.html">MidiOutJack</a></div><div class="ttdef"><b>Definition:</b> RtMidi.h:673</div></div>
<div class="ttc" id="structMidiInApi_1_1RtMidiInData_html"><div class="ttname"><a href="structMidiInApi_1_1RtMidiInData.html">MidiInApi::RtMidiInData</a></div><div class="ttdef"><b>Definition:</b> RtMidi.h:543</div></div>
<div class="ttc" id="classMidiInJack_html"><div class="ttname"><a href="classMidiInJack.html">MidiInJack</a></div><div class="ttdef"><b>Definition:</b> RtMidi.h:654</div></div>
<div class="ttc" id="classRtMidiIn_html_a62b1b38aa8e5f11cd66f03d59228f4e4"><div class="ttname"><a href="classRtMidiIn.html#a62b1b38aa8e5f11cd66f03d59228f4e4">RtMidiIn::getPortCount</a></div><div class="ttdeci">unsigned int getPortCount()</div><div class="ttdoc">Return the number of available MIDI input ports. </div><div class="ttdef"><b>Definition:</b> RtMidi.h:588</div></div>
<div class="ttc" id="classRtMidiIn_html_ade23832a66c1ed56965c26325602543e"><div class="ttname"><a href="classRtMidiIn.html#ade23832a66c1ed56965c26325602543e">RtMidiIn::cancelCallback</a></div><div class="ttdeci">void cancelCallback()</div><div class="ttdoc">Cancel use of the current callback function (if one exists). </div><div class="ttdef"><b>Definition:</b> RtMidi.h:587</div></div>
<div class="ttc" id="classRtMidiOut_html_a5a28d1ba9e002fd07a317d3a257d87e8"><div class="ttname"><a href="classRtMidiOut.html#a5a28d1ba9e002fd07a317d3a257d87e8">RtMidiOut::closePort</a></div><div class="ttdeci">void closePort(void)</div><div class="ttdoc">Close an open MIDI connection (if one exists). </div><div class="ttdef"><b>Definition:</b> RtMidi.h:597</div></div>
<div class="ttc" id="classRtMidi_html_aac66af04a85fe5c5f07c360574a19406a54dba406ab358492005ce2b966a2d959"><div class="ttname"><a href="classRtMidi.html#aac66af04a85fe5c5f07c360574a19406a54dba406ab358492005ce2b966a2d959">RtMidi::RTMIDI_DUMMY</a></div><div class="ttdef"><b>Definition:</b> RtMidi.h:137</div></div>
<div class="ttc" id="classMidiInAlsa_html"><div class="ttname"><a href="classMidiInAlsa.html">MidiInAlsa</a></div><div class="ttdef"><b>Definition:</b> RtMidi.h:697</div></div>
<div class="ttc" id="classRtMidiIn_html_af2961fff09fa01a3d5bc0f0c5a042aaf"><div class="ttname"><a href="classRtMidiIn.html#af2961fff09fa01a3d5bc0f0c5a042aaf">RtMidiIn::getPortName</a></div><div class="ttdeci">std::string getPortName(unsigned int portNumber=0)</div><div class="ttdoc">Return a string identifier for the specified MIDI input port number. </div><div class="ttdef"><b>Definition:</b> RtMidi.h:589</div></div>
<div class="ttc" id="classRtMidiOut_html_a532b5712e305bd8afb65a3ad14138e0f"><div class="ttname"><a href="classRtMidiOut.html#a532b5712e305bd8afb65a3ad14138e0f">RtMidiOut::getCurrentApi</a></div><div class="ttdeci">RtMidi::Api getCurrentApi(void)</div><div class="ttdoc">Returns the MIDI API specifier for the current instance of RtMidiOut. </div><div class="ttdef"><b>Definition:</b> RtMidi.h:594</div></div>
<div class="ttc" id="structMidiInApi_1_1MidiQueue_html"><div class="ttname"><a href="structMidiInApi_1_1MidiQueue.html">MidiInApi::MidiQueue</a></div><div class="ttdef"><b>Definition:</b> RtMidi.h:526</div></div>
<div class="ttc" id="classRtMidiError_html_a678201ec055ab2dc9e285cbe41d61c0a"><div class="ttname"><a href="classRtMidiError.html#a678201ec055ab2dc9e285cbe41d61c0a">RtMidiError::printMessage</a></div><div class="ttdeci">virtual void printMessage(void) const</div><div class="ttdoc">Prints thrown error message to stderr. </div><div class="ttdef"><b>Definition:</b> RtMidi.h:98</div></div>
<div class="ttc" id="classRtMidiIn_html_ad70189a24427b3169d81fcc69f6441e0"><div class="ttname"><a href="classRtMidiIn.html#ad70189a24427b3169d81fcc69f6441e0">RtMidiIn::setErrorCallback</a></div><div class="ttdeci">virtual void setErrorCallback(RtMidiErrorCallback errorCallback=NULL, void *userData=0)</div><div class="ttdoc">Set an error callback function to be invoked when an error has occured. </div><div class="ttdef"><b>Definition:</b> RtMidi.h:592</div></div>
<div class="ttc" id="classRtMidiError_html_ac3223037a1c192d37fbd285e4a52878f"><div class="ttname"><a href="classRtMidiError.html#ac3223037a1c192d37fbd285e4a52878f">RtMidiError::~RtMidiError</a></div><div class="ttdeci">virtual ~RtMidiError(void)</div><div class="ttdoc">The destructor. </div><div class="ttdef"><b>Definition:</b> RtMidi.h:95</div></div>
<div class="ttc" id="classRtMidiOut_html_a90445e886e502f06aa0d3fce5cbc7721"><div class="ttname"><a href="classRtMidiOut.html#a90445e886e502f06aa0d3fce5cbc7721">RtMidiOut::isPortOpen</a></div><div class="ttdeci">virtual bool isPortOpen() const</div><div class="ttdoc">Returns true if a port is open and false if not. </div><div class="ttdef"><b>Definition:</b> RtMidi.h:598</div></div>
<div class="ttc" id="classMidiOutCore_html"><div class="ttname"><a href="classMidiOutCore.html">MidiOutCore</a></div><div class="ttdef"><b>Definition:</b> RtMidi.h:633</div></div>
<div class="ttc" id="structMidiInApi_1_1MidiMessage_html_a32dad612037ace7037af0d1779894c6e"><div class="ttname"><a href="structMidiInApi_1_1MidiMessage.html#a32dad612037ace7037af0d1779894c6e">MidiInApi::MidiMessage::timeStamp</a></div><div class="ttdeci">double timeStamp</div><div class="ttdoc">Time in seconds elapsed since the previous message. </div><div class="ttdef"><b>Definition:</b> RtMidi.h:519</div></div>
<div class="ttc" id="classRtMidiError_html"><div class="ttname"><a href="classRtMidiError.html">RtMidiError</a></div><div class="ttdoc">Exception handling class for RtMidi. </div><div class="ttdef"><b>Definition:</b> RtMidi.h:73</div></div>
<div class="ttc" id="classRtMidiError_html_ab973f38c6a27ed3388c69a62a17d4c08"><div class="ttname"><a href="classRtMidiError.html#ab973f38c6a27ed3388c69a62a17d4c08">RtMidiError::getType</a></div><div class="ttdeci">virtual const Type &amp; getType(void) const</div><div class="ttdoc">Returns the thrown error message type. </div><div class="ttdef"><b>Definition:</b> RtMidi.h:101</div></div>
<div class="ttc" id="classRtMidiError_html_a741314057cec5fb8c743c12f284905eea778e66d730c9ff2aab7000aed36ca8df"><div class="ttname"><a href="classRtMidiError.html#a741314057cec5fb8c743c12f284905eea778e66d730c9ff2aab7000aed36ca8df">RtMidiError::WARNING</a></div><div class="ttdef"><b>Definition:</b> RtMidi.h:78</div></div>
<div class="ttc" id="classRtMidiIn_html_a1ba10ecd276b30a8579c7d60a9c890eb"><div class="ttname"><a href="classRtMidiIn.html#a1ba10ecd276b30a8579c7d60a9c890eb">RtMidiIn::getMessage</a></div><div class="ttdeci">double getMessage(std::vector&lt; unsigned char &gt; *message)</div><div class="ttdoc">Fill the user-provided vector with the data bytes for the next available MIDI message in the input qu...</div><div class="ttdef"><b>Definition:</b> RtMidi.h:591</div></div>
<div class="ttc" id="classRtMidiOut_html_a19c7049a840a0181a0ddd4b14e99c651"><div class="ttname"><a href="classRtMidiOut.html#a19c7049a840a0181a0ddd4b14e99c651">RtMidiOut::sendMessage</a></div><div class="ttdeci">void sendMessage(const std::vector&lt; unsigned char &gt; *message)</div><div class="ttdoc">Immediately send a single message out an open MIDI output port. </div><div class="ttdef"><b>Definition:</b> RtMidi.h:601</div></div>
<div class="ttc" id="classRtMidiError_html_a43c2daa59d632c7fae3454c5c7726d99"><div class="ttname"><a href="classRtMidiError.html#a43c2daa59d632c7fae3454c5c7726d99">RtMidiError::what</a></div><div class="ttdeci">virtual const char * what(void) const</div><div class="ttdoc">Returns the thrown error message as a c-style string. </div><div class="ttdef"><b>Definition:</b> RtMidi.h:107</div></div>
<div class="ttc" id="classRtMidiError_html_a741314057cec5fb8c743c12f284905eea707297abd1e7f447f0823a9de2ee1d8f"><div class="ttname"><a href="classRtMidiError.html#a741314057cec5fb8c743c12f284905eea707297abd1e7f447f0823a9de2ee1d8f">RtMidiError::INVALID_PARAMETER</a></div><div class="ttdef"><b>Definition:</b> RtMidi.h:84</div></div>
<div class="ttc" id="classRtMidiOut_html"><div class="ttname"><a href="classRtMidiOut.html">RtMidiOut</a></div><div class="ttdoc">A realtime MIDI output class. </div><div class="ttdef"><b>Definition:</b> RtMidi.h:367</div></div>
<div class="ttc" id="classMidiInApi_html"><div class="ttname"><a href="classMidiInApi.html">MidiInApi</a></div><div class="ttdef"><b>Definition:</b> RtMidi.h:502</div></div>
<div class="ttc" id="classRtMidiError_html_a741314057cec5fb8c743c12f284905eea8c87118f56675ecd8fd859e01a61338a"><div class="ttname"><a href="classRtMidiError.html#a741314057cec5fb8c743c12f284905eea8c87118f56675ecd8fd859e01a61338a">RtMidiError::INVALID_DEVICE</a></div><div class="ttdef"><b>Definition:</b> RtMidi.h:82</div></div>
<div class="ttc" id="classRtMidiError_html_a741314057cec5fb8c743c12f284905eeaacbd6476ea9704d758d03b7175f5c4c9"><div class="ttname"><a href="classRtMidiError.html#a741314057cec5fb8c743c12f284905eeaacbd6476ea9704d758d03b7175f5c4c9">RtMidiError::DRIVER_ERROR</a></div><div class="ttdef"><b>Definition:</b> RtMidi.h:86</div></div>
<div class="ttc" id="classRtMidiError_html_a741314057cec5fb8c743c12f284905eea4a3fe6c709b50a4c85c470406ea4fddf"><div class="ttname"><a href="classRtMidiError.html#a741314057cec5fb8c743c12f284905eea4a3fe6c709b50a4c85c470406ea4fddf">RtMidiError::MEMORY_ERROR</a></div><div class="ttdef"><b>Definition:</b> RtMidi.h:83</div></div>
<div class="ttc" id="classRtMidiOut_html_a4c29a5e7c0f5c088953ef02f3c38d4f3"><div class="ttname"><a href="classRtMidiOut.html#a4c29a5e7c0f5c088953ef02f3c38d4f3">RtMidiOut::openPort</a></div><div class="ttdeci">void openPort(unsigned int portNumber=0, const std::string &amp;portName=std::string(&quot;RtMidi Output&quot;))</div><div class="ttdoc">Open a MIDI output connection. </div><div class="ttdef"><b>Definition:</b> RtMidi.h:595</div></div>
<div class="ttc" id="classRtMidiError_html_a741314057cec5fb8c743c12f284905eea2edbf3e6f6b2383bc3e352b4417326d7"><div class="ttname"><a href="classRtMidiError.html#a741314057cec5fb8c743c12f284905eea2edbf3e6f6b2383bc3e352b4417326d7">RtMidiError::NO_DEVICES_FOUND</a></div><div class="ttdef"><b>Definition:</b> RtMidi.h:81</div></div>
<div class="ttc" id="structMidiInApi_1_1MidiMessage_html"><div class="ttname"><a href="structMidiInApi_1_1MidiMessage.html">MidiInApi::MidiMessage</a></div><div class="ttdef"><b>Definition:</b> RtMidi.h:515</div></div>
</div><!-- fragment --></div><!-- contents -->
<HR>
<table><tr><td><img src="../images/mcgill.gif" width=165></td>
  <td>&copy;2003-2017 Gary P. Scavone, McGill University. All Rights Reserved.<br>
  Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
</table>
</BODY>
</HTML>