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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
|
<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> <a class="qindex" href="annotated.html">Class/Enum List</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="functions.html">Compound Members</a> </CENTER>
<HR>
<!-- Generated by Doxygen 1.3-rc3 -->
<h1>RtMidi.h</h1><div class="fragment"><pre>00001 <span class="comment">/**********************************************************************/</span>
00036 <span class="comment">/**********************************************************************/</span>
00037
00038 <span class="comment">// RtMidi: Version 1.0.3, ??</span>
00039
00040 <span class="preprocessor">#ifndef RTMIDI_H</span>
00041 <span class="preprocessor"></span><span class="preprocessor">#define RTMIDI_H</span>
00042 <span class="preprocessor"></span>
00043 <span class="preprocessor">#include "RtError.h"</span>
00044 <span class="preprocessor">#include <string></span>
00045
<a name="l00046"></a><a class="code" href="classRtMidi.html">00046</a> <span class="keyword">class </span><a class="code" href="classRtMidi.html">RtMidi</a>
00047 {
00048 <span class="keyword">public</span>:
00049
00051 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#a0">openPort</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber = 0 ) = 0;
00052
00054 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#a1">openVirtualPort</a>() = 0;
00055
00057 <span class="keyword">virtual</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtMidi.html#a2">getPortCount</a>() = 0;
00058
00060 <span class="keyword">virtual</span> std::string <a class="code" href="classRtMidi.html#a3">getPortName</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber = 0 ) = 0;
00061
00063 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classRtMidi.html#a4">closePort</a>( <span class="keywordtype">void</span> ) = 0;
00064
00065 <span class="keyword">protected</span>:
00066
00067 <a class="code" href="classRtMidi.html">RtMidi</a>();
00068 <span class="keyword">virtual</span> ~<a class="code" href="classRtMidi.html">RtMidi</a>() {};
00069
00070 <span class="comment">// A basic error reporting function for internal use in the RtMidi</span>
00071 <span class="comment">// subclasses. The behavior of this function can be modified to</span>
00072 <span class="comment">// suit specific needs.</span>
00073 <span class="keywordtype">void</span> error( RtError::Type type );
00074
00075 <span class="keywordtype">void</span> *apiData_;
00076 <span class="keywordtype">bool</span> connected_;
00077 std::string errorString_;
00078 };
00079
00080 <span class="comment">/**********************************************************************/</span>
00096 <span class="comment">/**********************************************************************/</span>
00097
00098 <span class="preprocessor">#include <vector></span>
00099 <span class="preprocessor">#include <queue></span>
00100
<a name="l00101"></a><a class="code" href="classRtMidiIn.html">00101</a> <span class="keyword">class </span><a class="code" href="classRtMidiIn.html">RtMidiIn</a> : <span class="keyword">public</span> <a class="code" href="classRtMidi.html">RtMidi</a>
00102 {
00103 <span class="keyword">public</span>:
00104
<a name="l00106"></a><a class="code" href="classRtMidiIn.html#s0">00106</a> <span class="keyword">typedef</span> void (*RtMidiCallback)( <span class="keywordtype">double</span> timeStamp, std::vector<unsigned char> *message, <span class="keywordtype">void</span> *userData);
00107
00109
00112 <a class="code" href="classRtMidiIn.html#a0">RtMidiIn</a>();
00113
00115 <a class="code" href="classRtMidiIn.html#a1">~RtMidiIn</a>();
00116
00118
00122 <span class="keywordtype">void</span> <a class="code" href="classRtMidiIn.html#a2">openPort</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber = 0 );
00123
00125
00131 <span class="keywordtype">void</span> <a class="code" href="classRtMidiIn.html#a3">openVirtualPort</a>();
00132
00134
00140 <span class="keywordtype">void</span> <a class="code" href="classRtMidiIn.html#a4">setCallback</a>( RtMidiCallback callback, <span class="keywordtype">void</span> *userData = 0 );
00141
00143
00147 <span class="keywordtype">void</span> <a class="code" href="classRtMidiIn.html#a5">cancelCallback</a>();
00148
00150 <span class="keywordtype">void</span> <a class="code" href="classRtMidiIn.html#a6">closePort</a>( <span class="keywordtype">void</span> );
00151
00153 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtMidiIn.html#a7">getPortCount</a>();
00154
00156
00159 std::string <a class="code" href="classRtMidiIn.html#a8">getPortName</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber = 0 );
00160
00162
00166 <span class="keywordtype">void</span> <a class="code" href="classRtMidiIn.html#a9">setQueueSizeLimit</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> queueSize );
00167
00169
00176 <span class="keywordtype">void</span> <a class="code" href="classRtMidiIn.html#a10">ignoreTypes</a>( <span class="keywordtype">bool</span> midiSysex = <span class="keyword">true</span>, <span class="keywordtype">bool</span> midiTime = <span class="keyword">true</span>, <span class="keywordtype">bool</span> midiSense = <span class="keyword">true</span> );
00177
00179
00186 <span class="keywordtype">double</span> <a class="code" href="classRtMidiIn.html#a11">getMessage</a>( std::vector<unsigned char> *message );
00187
00188 <span class="comment">// A MIDI structure used internally by the class to store incoming</span>
00189 <span class="comment">// messages. Each message represents one and only one MIDI message.</span>
00190 <span class="keyword">struct </span>MidiMessage {
00191 std::vector<unsigned char> bytes;
00192 <span class="keywordtype">double</span> timeStamp;
00193
00194 <span class="comment">// Default constructor.</span>
00195 MidiMessage()
00196 :bytes(3), timeStamp(0.0) {}
00197 };
00198
00199 <span class="comment">// The RtMidiInData structure is used to pass private class data to</span>
00200 <span class="comment">// the MIDI input handling function or thread.</span>
00201 <span class="keyword">struct </span>RtMidiInData {
00202 std::queue<MidiMessage> queue;
00203 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> queueLimit;
00204 <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> ignoreFlags;
00205 <span class="keywordtype">bool</span> doInput;
00206 <span class="keywordtype">bool</span> firstMessage;
00207 <span class="keywordtype">void</span> *apiData;
00208 <span class="keywordtype">bool</span> usingCallback;
00209 <span class="keywordtype">void</span> *userCallback;
00210 <span class="keywordtype">void</span> *userData;
00211
00212 <span class="comment">// Default constructor.</span>
00213 RtMidiInData()
00214 : queueLimit(1024), ignoreFlags(7), doInput(false), firstMessage(true),
00215 apiData(0), usingCallback(false), userCallback(0), userData(0) {}
00216 };
00217
00218 <span class="keyword">private</span>:
00219
00220 <span class="keywordtype">void</span> initialize( <span class="keywordtype">void</span> );
00221 RtMidiInData inputData_;
00222
00223 };
00224
00225 <span class="comment">/**********************************************************************/</span>
00237 <span class="comment">/**********************************************************************/</span>
00238
<a name="l00239"></a><a class="code" href="classRtMidiOut.html">00239</a> <span class="keyword">class </span><a class="code" href="classRtMidiOut.html">RtMidiOut</a> : <span class="keyword">public</span> <a class="code" href="classRtMidi.html">RtMidi</a>
00240 {
00241 <span class="keyword">public</span>:
00242
00244
00247 <a class="code" href="classRtMidiOut.html#a0">RtMidiOut</a>();
00248
00250 <a class="code" href="classRtMidiOut.html#a1">~RtMidiOut</a>();
00251
00253
00259 <span class="keywordtype">void</span> <a class="code" href="classRtMidiOut.html#a2">openPort</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber = 0 );
00260
00262 <span class="keywordtype">void</span> <a class="code" href="classRtMidiOut.html#a3">closePort</a>();
00263
00265
00273 <span class="keywordtype">void</span> <a class="code" href="classRtMidiOut.html#a4">openVirtualPort</a>();
00274
00276 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classRtMidiOut.html#a5">getPortCount</a>();
00277
00279
00282 std::string <a class="code" href="classRtMidiOut.html#a6">getPortName</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> portNumber );
00283
00285
00289 <span class="keywordtype">void</span> <a class="code" href="classRtMidiOut.html#a7">sendMessage</a>( std::vector<unsigned char> *message );
00290
00291 <span class="keyword">private</span>:
00292
00293 <span class="keywordtype">void</span> initialize( <span class="keywordtype">void</span> );
00294 };
00295
00296 <span class="preprocessor">#endif</span>
</pre></div><HR>
<table><tr><td><img src="../images/mcgill.gif" width=165></td>
<td>©2003-2004 Gary P. Scavone, McGill University. All Rights Reserved.<br>
Maintained by Gary P. Scavone, gary at music.mcgill.ca</td></tr>
</table>
</BODY>
</HTML>
|