Canorus 0.0
RtMidi.h
Go to the documentation of this file.
1/**********************************************************************/
36/**********************************************************************/
37
38// RtMidi: Version 1.0.9
39
40#ifndef RTMIDI_H
41#define RTMIDI_H
42
43#include "RtError.h"
44#include <string>
45
46class RtMidi
47{
48 public:
49
51 virtual void openPort( unsigned int portNumber = 0, const std::string portName = std::string( "RtMidi" ) ) = 0;
52
54 virtual void openVirtualPort( const std::string portName = std::string( "RtMidi" ) ) = 0;
55
57 virtual unsigned int getPortCount() = 0;
58
60 virtual std::string getPortName( unsigned int portNumber = 0 ) = 0;
61
63 virtual void closePort( void ) = 0;
64
65 protected:
66
67 RtMidi();
68 virtual ~RtMidi() {};
69
70 // A basic error reporting function for internal use in the RtMidi
71 // subclasses. The behavior of this function can be modified to
72 // suit specific needs.
73 void error( RtError::Type type );
74
75 void *apiData_;
77 std::string errorString_;
78};
79
80/**********************************************************************/
96/**********************************************************************/
97
98#include <vector>
99#include <queue>
100
101class RtMidiIn : public RtMidi
102{
103 public:
104
106 typedef void (*RtMidiCallback)( double timeStamp, std::vector<unsigned char> *message, void *userData);
107
109
112 RtMidiIn( const std::string clientName = std::string( "RtMidi Input Client") );
113
116
118
122 void openPort( unsigned int portNumber = 0, const std::string Portname = std::string( "RtMidi Input" ) );
123
125
131 void openVirtualPort( const std::string portName = std::string( "RtMidi Input" ) );
132
134
140 void setCallback( RtMidiCallback callback, void *userData = 0 );
141
143
147 void cancelCallback();
148
150 void closePort( void );
151
153 unsigned int getPortCount();
154
156
159 std::string getPortName( unsigned int portNumber = 0 );
160
162
166 void setQueueSizeLimit( unsigned int queueSize );
167
169
176 void ignoreTypes( bool midiSysex = true, bool midiTime = true, bool midiSense = true );
177
179
186 double getMessage( std::vector<unsigned char> *message );
187
188 // A MIDI structure used internally by the class to store incoming
189 // messages. Each message represents one and only one MIDI message.
190 struct MidiMessage {
191 std::vector<unsigned char> bytes;
192 double timeStamp;
193
194 // Default constructor.
196 :bytes(3), timeStamp(0.0) {}
197 };
198
199 // The RtMidiInData structure is used to pass private class data to
200 // the MIDI input handling function or thread.
202 std::queue<MidiMessage> queue;
204 unsigned int queueLimit;
205 unsigned char ignoreFlags;
208 void *apiData;
211 void *userData;
213
214 // Default constructor.
216 : queueLimit(1024), ignoreFlags(7), doInput(false), firstMessage(true),
217 apiData(0), usingCallback(false), userCallback(0), userData(0),
218 continueSysex(false) {}
219 };
220
221 private:
222
223 void initialize( const std::string& clientName );
225
226};
227
228/**********************************************************************/
240/**********************************************************************/
241
242class RtMidiOut : public RtMidi
243{
244 public:
245
247
250 RtMidiOut( const std::string clientName = std::string( "RtMidi Output Client" ) );
251
254
256
262 void openPort( unsigned int portNumber = 0, const std::string portName = std::string( "RtMidi Output" ) );
263
265 void closePort();
266
268
276 void openVirtualPort( const std::string portName = std::string( "RtMidi Output" ) );
277
279 unsigned int getPortCount();
280
282
285 std::string getPortName( unsigned int portNumber = 0 );
286
288
292 void sendMessage( std::vector<unsigned char> *message );
293
294 private:
295
296 void initialize( const std::string& clientName );
297};
298
299#endif
Type
Defined RtError types.
Definition: RtError.h:22
A realtime MIDI input class.
Definition: RtMidi.h:102
double getMessage(std::vector< unsigned char > *message)
Fill the user-provided vector with the data bytes for the next available MIDI message in the input qu...
Definition: RtMidi.cpp:122
void openVirtualPort(const std::string portName=std::string("RtMidi Input"))
Create a virtual input port, with optional name, to allow software connections (OS X and ALSA only).
void setQueueSizeLimit(unsigned int queueSize)
Set the maximum number of MIDI messages to be saved in the queue.
Definition: RtMidi.cpp:109
RtMidiIn(const std::string clientName=std::string("RtMidi Input Client"))
Default constructor that allows an optional client name.
Definition: RtMidi.cpp:72
void closePort(void)
Close an open MIDI connection (if one exists).
unsigned int getPortCount()
Return the number of available MIDI input ports.
void initialize(const std::string &clientName)
void setCallback(RtMidiCallback callback, void *userData=0)
Set a callback function to be invoked for incoming MIDI messages.
Definition: RtMidi.cpp:77
void openPort(unsigned int portNumber=0, const std::string Portname=std::string("RtMidi Input"))
Open a MIDI input connection.
RtMidiInData inputData_
Definition: RtMidi.h:224
void(* RtMidiCallback)(double timeStamp, std::vector< unsigned char > *message, void *userData)
User callback function type definition.
Definition: RtMidi.h:106
void cancelCallback()
Cancel use of the current callback function (if one exists).
Definition: RtMidi.cpp:96
std::string getPortName(unsigned int portNumber=0)
Return a string identifier for the specified MIDI input port number.
~RtMidiIn()
If a MIDI connection is still open, it will be closed by the destructor.
void ignoreTypes(bool midiSysex=true, bool midiTime=true, bool midiSense=true)
Specify whether certain MIDI message types should be queued or ignored during input.
Definition: RtMidi.cpp:114
A realtime MIDI output class.
Definition: RtMidi.h:243
void sendMessage(std::vector< unsigned char > *message)
Immediately send a single message out an open MIDI output port.
void openPort(unsigned int portNumber=0, const std::string portName=std::string("RtMidi Output"))
Open a MIDI output connection.
void initialize(const std::string &clientName)
void closePort()
Close an open MIDI connection (if one exists).
void openVirtualPort(const std::string portName=std::string("RtMidi Output"))
Create a virtual output port, with optional name, to allow software connections (OS X and ALSA only).
RtMidiOut(const std::string clientName=std::string("RtMidi Output Client"))
Default constructor that allows an optional client name.
Definition: RtMidi.cpp:147
~RtMidiOut()
The destructor closes any open MIDI connections.
std::string getPortName(unsigned int portNumber=0)
Return a string identifier for the specified MIDI port type and number.
unsigned int getPortCount()
Return the number of available MIDI output ports.
An abstract base class for realtime MIDI input/output.
Definition: RtMidi.h:47
virtual void closePort(void)=0
Pure virtual closePort() function.
bool connected_
Definition: RtMidi.h:76
virtual ~RtMidi()
Definition: RtMidi.h:68
virtual std::string getPortName(unsigned int portNumber=0)=0
Pure virtual getPortName() function.
void * apiData_
Definition: RtMidi.h:75
virtual void openVirtualPort(const std::string portName=std::string("RtMidi"))=0
Pure virtual openVirtualPort() function.
virtual unsigned int getPortCount()=0
Pure virtual getPortCount() function.
RtMidi()
Definition: RtMidi.cpp:47
virtual void openPort(unsigned int portNumber=0, const std::string portName=std::string("RtMidi"))=0
Pure virtual openPort() function.
void error(RtError::Type type)
Definition: RtMidi.cpp:52
std::string errorString_
Definition: RtMidi.h:77
Definition: RtMidi.h:190
std::vector< unsigned char > bytes
Definition: RtMidi.h:191
MidiMessage()
Definition: RtMidi.h:195
double timeStamp
Definition: RtMidi.h:192
Definition: RtMidi.h:201
bool continueSysex
Definition: RtMidi.h:212
void * userData
Definition: RtMidi.h:211
bool firstMessage
Definition: RtMidi.h:207
std::queue< MidiMessage > queue
Definition: RtMidi.h:202
RtMidiInData()
Definition: RtMidi.h:215
MidiMessage message
Definition: RtMidi.h:203
void * apiData
Definition: RtMidi.h:208
bool usingCallback
Definition: RtMidi.h:209
void * userCallback
Definition: RtMidi.h:210
bool doInput
Definition: RtMidi.h:206
unsigned char ignoreFlags
Definition: RtMidi.h:205
unsigned int queueLimit
Definition: RtMidi.h:204