|
|
@@ -8,7 +8,7 @@ |
|
|
|
RtMidi WWW site: http://music.mcgill.ca/~gary/rtmidi/ |
|
|
|
|
|
|
|
RtMidi: realtime MIDI i/o C++ classes |
|
|
|
Copyright (c) 2003-2014 Gary P. Scavone |
|
|
|
Copyright (c) 2003-2017 Gary P. Scavone |
|
|
|
|
|
|
|
Permission is hereby granted, free of charge, to any person |
|
|
|
obtaining a copy of this software and associated documentation files |
|
|
@@ -43,7 +43,8 @@ |
|
|
|
#ifndef RTMIDI_H |
|
|
|
#define RTMIDI_H |
|
|
|
|
|
|
|
#define RTMIDI_VERSION "2.1.0" |
|
|
|
#define RTMIDI_DLL_PUBLIC |
|
|
|
#define RTMIDI_VERSION "3.0.0" |
|
|
|
|
|
|
|
#include <exception> |
|
|
|
#include <iostream> |
|
|
@@ -60,7 +61,7 @@ |
|
|
|
*/ |
|
|
|
/************************************************************************/ |
|
|
|
|
|
|
|
class RtMidiError : public std::exception |
|
|
|
class RTMIDI_DLL_PUBLIC RtMidiError : public std::exception |
|
|
|
{ |
|
|
|
public: |
|
|
|
//! Defined RtMidiError types. |
|
|
@@ -109,11 +110,11 @@ class RtMidiError : public std::exception |
|
|
|
Note that class behaviour is undefined after a critical error (not |
|
|
|
a warning) is reported. |
|
|
|
*/ |
|
|
|
typedef void (*RtMidiErrorCallback)( RtMidiError::Type type, const std::string &errorText ); |
|
|
|
typedef void (*RtMidiErrorCallback)( RtMidiError::Type type, const std::string &errorText, void *userData ); |
|
|
|
|
|
|
|
class MidiApi; |
|
|
|
|
|
|
|
class RtMidi |
|
|
|
class RTMIDI_DLL_PUBLIC RtMidi |
|
|
|
{ |
|
|
|
public: |
|
|
|
|
|
|
@@ -139,10 +140,10 @@ class RtMidi |
|
|
|
static void getCompiledApi( std::vector<RtMidi::Api> &apis ) throw(); |
|
|
|
|
|
|
|
//! Pure virtual openPort() function. |
|
|
|
virtual void openPort( unsigned int portNumber = 0, const std::string portName = std::string( "RtMidi" ) ) = 0; |
|
|
|
virtual void openPort( unsigned int portNumber = 0, const std::string &portName = std::string( "RtMidi" ) ) = 0; |
|
|
|
|
|
|
|
//! Pure virtual openVirtualPort() function. |
|
|
|
virtual void openVirtualPort( const std::string portName = std::string( "RtMidi" ) ) = 0; |
|
|
|
virtual void openVirtualPort( const std::string &portName = std::string( "RtMidi" ) ) = 0; |
|
|
|
|
|
|
|
//! Pure virtual getPortCount() function. |
|
|
|
virtual unsigned int getPortCount() = 0; |
|
|
@@ -154,6 +155,10 @@ class RtMidi |
|
|
|
virtual void closePort( void ) = 0; |
|
|
|
|
|
|
|
//! Returns true if a port is open and false if not. |
|
|
|
/*! |
|
|
|
Note that this only applies to connections made with the openPort() |
|
|
|
function, not to virtual ports. |
|
|
|
*/ |
|
|
|
virtual bool isPortOpen( void ) const = 0; |
|
|
|
|
|
|
|
//! Set an error callback function to be invoked when an error has occured. |
|
|
@@ -161,7 +166,7 @@ class RtMidi |
|
|
|
The callback function will be called whenever an error has occured. It is best |
|
|
|
to set the error callback function before opening a port. |
|
|
|
*/ |
|
|
|
virtual void setErrorCallback( RtMidiErrorCallback errorCallback = NULL ) = 0; |
|
|
|
virtual void setErrorCallback( RtMidiErrorCallback errorCallback = NULL, void *userData = 0 ) = 0; |
|
|
|
|
|
|
|
protected: |
|
|
|
|
|
|
@@ -185,7 +190,7 @@ class RtMidi |
|
|
|
possible to open a virtual input port to which other MIDI software |
|
|
|
clients can connect. |
|
|
|
|
|
|
|
by Gary P. Scavone, 2003-2014. |
|
|
|
by Gary P. Scavone, 2003-2017. |
|
|
|
*/ |
|
|
|
/**********************************************************************/ |
|
|
|
|
|
|
@@ -203,7 +208,7 @@ class RtMidi |
|
|
|
// |
|
|
|
// **************************************************************** // |
|
|
|
|
|
|
|
class RtMidiIn : public RtMidi |
|
|
|
class RTMIDI_DLL_PUBLIC RtMidiIn : public RtMidi |
|
|
|
{ |
|
|
|
public: |
|
|
|
|
|
|
@@ -229,7 +234,7 @@ class RtMidiIn : public RtMidi |
|
|
|
\param queueSizeLimit An optional size of the MIDI input queue can be specified. |
|
|
|
*/ |
|
|
|
RtMidiIn( RtMidi::Api api=UNSPECIFIED, |
|
|
|
const std::string clientName = std::string( "RtMidi Input Client"), |
|
|
|
const std::string& clientName = "RtMidi Input Client", |
|
|
|
unsigned int queueSizeLimit = 100 ); |
|
|
|
|
|
|
|
//! If a MIDI connection is still open, it will be closed by the destructor. |
|
|
@@ -244,7 +249,7 @@ class RtMidiIn : public RtMidi |
|
|
|
Otherwise, the default or first port found is opened. |
|
|
|
\param portName An optional name for the application port that is used to connect to portId can be specified. |
|
|
|
*/ |
|
|
|
void openPort( unsigned int portNumber = 0, const std::string portName = std::string( "RtMidi Input" ) ); |
|
|
|
void openPort( unsigned int portNumber = 0, const std::string &portName = std::string( "RtMidi Input" ) ); |
|
|
|
|
|
|
|
//! Create a virtual input port, with optional name, to allow software connections (OS X, JACK and ALSA only). |
|
|
|
/*! |
|
|
@@ -256,7 +261,7 @@ class RtMidiIn : public RtMidi |
|
|
|
\param portName An optional name for the application port that is |
|
|
|
used to connect to portId can be specified. |
|
|
|
*/ |
|
|
|
void openVirtualPort( const std::string portName = std::string( "RtMidi Input" ) ); |
|
|
|
void openVirtualPort( const std::string &portName = std::string( "RtMidi Input" ) ); |
|
|
|
|
|
|
|
//! Set a callback function to be invoked for incoming MIDI messages. |
|
|
|
/*! |
|
|
@@ -282,6 +287,10 @@ class RtMidiIn : public RtMidi |
|
|
|
void closePort( void ); |
|
|
|
|
|
|
|
//! Returns true if a port is open and false if not. |
|
|
|
/*! |
|
|
|
Note that this only applies to connections made with the openPort() |
|
|
|
function, not to virtual ports. |
|
|
|
*/ |
|
|
|
virtual bool isPortOpen() const; |
|
|
|
|
|
|
|
//! Return the number of available MIDI input ports. |
|
|
@@ -293,7 +302,8 @@ class RtMidiIn : public RtMidi |
|
|
|
//! Return a string identifier for the specified MIDI input port number. |
|
|
|
/*! |
|
|
|
\return The name of the port with the given Id is returned. |
|
|
|
\retval An empty string is returned if an invalid port specifier is provided. |
|
|
|
\retval An empty string is returned if an invalid port specifier |
|
|
|
is provided. User code should assume a UTF-8 encoding. |
|
|
|
*/ |
|
|
|
std::string getPortName( unsigned int portNumber = 0 ); |
|
|
|
|
|
|
@@ -322,10 +332,10 @@ class RtMidiIn : public RtMidi |
|
|
|
The callback function will be called whenever an error has occured. It is best |
|
|
|
to set the error callback function before opening a port. |
|
|
|
*/ |
|
|
|
virtual void setErrorCallback( RtMidiErrorCallback errorCallback = NULL ); |
|
|
|
virtual void setErrorCallback( RtMidiErrorCallback errorCallback = NULL, void *userData = 0 ); |
|
|
|
|
|
|
|
protected: |
|
|
|
void openMidiApi( RtMidi::Api api, const std::string clientName, unsigned int queueSizeLimit ); |
|
|
|
void openMidiApi( RtMidi::Api api, const std::string &clientName, unsigned int queueSizeLimit ); |
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
@@ -341,11 +351,11 @@ class RtMidiIn : public RtMidi |
|
|
|
OS-X, Linux ALSA and JACK MIDI APIs, it is also possible to open a |
|
|
|
virtual port to which other MIDI software clients can connect. |
|
|
|
|
|
|
|
by Gary P. Scavone, 2003-2014. |
|
|
|
by Gary P. Scavone, 2003-2017. |
|
|
|
*/ |
|
|
|
/**********************************************************************/ |
|
|
|
|
|
|
|
class RtMidiOut : public RtMidi |
|
|
|
class RTMIDI_DLL_PUBLIC RtMidiOut : public RtMidi |
|
|
|
{ |
|
|
|
public: |
|
|
|
|
|
|
@@ -358,7 +368,7 @@ class RtMidiOut : public RtMidi |
|
|
|
JACK (OS-X). |
|
|
|
*/ |
|
|
|
RtMidiOut( RtMidi::Api api=UNSPECIFIED, |
|
|
|
const std::string clientName = std::string( "RtMidi Output Client") ); |
|
|
|
const std::string& clientName = "RtMidi Output Client" ); |
|
|
|
|
|
|
|
//! The destructor closes any open MIDI connections. |
|
|
|
~RtMidiOut( void ) throw(); |
|
|
@@ -373,12 +383,16 @@ class RtMidiOut : public RtMidi |
|
|
|
exception is thrown if an error occurs while attempting to make |
|
|
|
the port connection. |
|
|
|
*/ |
|
|
|
void openPort( unsigned int portNumber = 0, const std::string portName = std::string( "RtMidi Output" ) ); |
|
|
|
void openPort( unsigned int portNumber = 0, const std::string &portName = std::string( "RtMidi Output" ) ); |
|
|
|
|
|
|
|
//! Close an open MIDI connection (if one exists). |
|
|
|
void closePort( void ); |
|
|
|
|
|
|
|
//! Returns true if a port is open and false if not. |
|
|
|
/*! |
|
|
|
Note that this only applies to connections made with the openPort() |
|
|
|
function, not to virtual ports. |
|
|
|
*/ |
|
|
|
virtual bool isPortOpen() const; |
|
|
|
|
|
|
|
//! Create a virtual output port, with optional name, to allow software connections (OS X, JACK and ALSA only). |
|
|
@@ -390,14 +404,16 @@ class RtMidiOut : public RtMidi |
|
|
|
An exception is thrown if an error occurs while attempting to |
|
|
|
create the virtual port. |
|
|
|
*/ |
|
|
|
void openVirtualPort( const std::string portName = std::string( "RtMidi Output" ) ); |
|
|
|
void openVirtualPort( const std::string &portName = std::string( "RtMidi Output" ) ); |
|
|
|
|
|
|
|
//! Return the number of available MIDI output ports. |
|
|
|
unsigned int getPortCount( void ); |
|
|
|
|
|
|
|
//! Return a string identifier for the specified MIDI port type and number. |
|
|
|
/*! |
|
|
|
An empty string is returned if an invalid port specifier is provided. |
|
|
|
\return The name of the port with the given Id is returned. |
|
|
|
\retval An empty string is returned if an invalid port specifier |
|
|
|
is provided. User code should assume a UTF-8 encoding. |
|
|
|
*/ |
|
|
|
std::string getPortName( unsigned int portNumber = 0 ); |
|
|
|
|
|
|
@@ -406,17 +422,27 @@ class RtMidiOut : public RtMidi |
|
|
|
An exception is thrown if an error occurs during output or an |
|
|
|
output connection was not previously established. |
|
|
|
*/ |
|
|
|
void sendMessage( std::vector<unsigned char> *message ); |
|
|
|
void sendMessage( const std::vector<unsigned char> *message ); |
|
|
|
|
|
|
|
//! Immediately send a single message out an open MIDI output port. |
|
|
|
/*! |
|
|
|
An exception is thrown if an error occurs during output or an |
|
|
|
output connection was not previously established. |
|
|
|
|
|
|
|
\param message A pointer to the MIDI message as raw bytes |
|
|
|
\param size Length of the MIDI message in bytes |
|
|
|
*/ |
|
|
|
void sendMessage( const unsigned char *message, size_t size ); |
|
|
|
|
|
|
|
//! Set an error callback function to be invoked when an error has occured. |
|
|
|
/*! |
|
|
|
The callback function will be called whenever an error has occured. It is best |
|
|
|
to set the error callback function before opening a port. |
|
|
|
*/ |
|
|
|
virtual void setErrorCallback( RtMidiErrorCallback errorCallback = NULL ); |
|
|
|
virtual void setErrorCallback( RtMidiErrorCallback errorCallback = NULL, void *userData = 0 ); |
|
|
|
|
|
|
|
protected: |
|
|
|
void openMidiApi( RtMidi::Api api, const std::string clientName ); |
|
|
|
void openMidiApi( RtMidi::Api api, const std::string &clientName ); |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
@@ -433,22 +459,22 @@ class RtMidiOut : public RtMidi |
|
|
|
// |
|
|
|
// **************************************************************** // |
|
|
|
|
|
|
|
class MidiApi |
|
|
|
class RTMIDI_DLL_PUBLIC MidiApi |
|
|
|
{ |
|
|
|
public: |
|
|
|
|
|
|
|
MidiApi(); |
|
|
|
virtual ~MidiApi(); |
|
|
|
virtual RtMidi::Api getCurrentApi( void ) = 0; |
|
|
|
virtual void openPort( unsigned int portNumber, const std::string portName ) = 0; |
|
|
|
virtual void openVirtualPort( const std::string portName ) = 0; |
|
|
|
virtual void openPort( unsigned int portNumber, const std::string &portName ) = 0; |
|
|
|
virtual void openVirtualPort( const std::string &portName ) = 0; |
|
|
|
virtual void closePort( void ) = 0; |
|
|
|
|
|
|
|
virtual unsigned int getPortCount( void ) = 0; |
|
|
|
virtual std::string getPortName( unsigned int portNumber ) = 0; |
|
|
|
|
|
|
|
inline bool isPortOpen() const { return connected_; } |
|
|
|
void setErrorCallback( RtMidiErrorCallback errorCallback ); |
|
|
|
void setErrorCallback( RtMidiErrorCallback errorCallback, void *userData ); |
|
|
|
|
|
|
|
//! A basic error reporting function for RtMidi classes. |
|
|
|
void error( RtMidiError::Type type, std::string errorString ); |
|
|
@@ -460,9 +486,11 @@ protected: |
|
|
|
bool connected_; |
|
|
|
std::string errorString_; |
|
|
|
RtMidiErrorCallback errorCallback_; |
|
|
|
bool firstErrorOccurred_; |
|
|
|
void *errorCallbackUserData_; |
|
|
|
}; |
|
|
|
|
|
|
|
class MidiInApi : public MidiApi |
|
|
|
class RTMIDI_DLL_PUBLIC MidiInApi : public MidiApi |
|
|
|
{ |
|
|
|
public: |
|
|
|
|
|
|
@@ -477,6 +505,8 @@ class MidiInApi : public MidiApi |
|
|
|
// messages. Each message represents one and only one MIDI message. |
|
|
|
struct MidiMessage { |
|
|
|
std::vector<unsigned char> bytes; |
|
|
|
|
|
|
|
//! Time in seconds elapsed since the previous message |
|
|
|
double timeStamp; |
|
|
|
|
|
|
|
// Default constructor. |
|
|
@@ -487,13 +517,16 @@ class MidiInApi : public MidiApi |
|
|
|
struct MidiQueue { |
|
|
|
unsigned int front; |
|
|
|
unsigned int back; |
|
|
|
unsigned int size; |
|
|
|
unsigned int ringSize; |
|
|
|
MidiMessage *ring; |
|
|
|
|
|
|
|
// Default constructor. |
|
|
|
MidiQueue() |
|
|
|
:front(0), back(0), size(0), ringSize(0) {} |
|
|
|
:front(0), back(0), ringSize(0), ring(0) {} |
|
|
|
bool push(const MidiMessage&); |
|
|
|
bool pop(std::vector<unsigned char>*, double*); |
|
|
|
unsigned int size(unsigned int *back=0, |
|
|
|
unsigned int *front=0); |
|
|
|
}; |
|
|
|
|
|
|
|
// The RtMidiInData structure is used to pass private class data to |
|
|
@@ -521,13 +554,13 @@ class MidiInApi : public MidiApi |
|
|
|
RtMidiInData inputData_; |
|
|
|
}; |
|
|
|
|
|
|
|
class MidiOutApi : public MidiApi |
|
|
|
class RTMIDI_DLL_PUBLIC MidiOutApi : public MidiApi |
|
|
|
{ |
|
|
|
public: |
|
|
|
|
|
|
|
MidiOutApi( void ); |
|
|
|
virtual ~MidiOutApi( void ); |
|
|
|
virtual void sendMessage( std::vector<unsigned char> *message ) = 0; |
|
|
|
virtual void sendMessage( const unsigned char *message, size_t size ) = 0; |
|
|
|
}; |
|
|
|
|
|
|
|
// **************************************************************** // |
|
|
@@ -537,8 +570,8 @@ class MidiOutApi : public MidiApi |
|
|
|
// **************************************************************** // |
|
|
|
|
|
|
|
inline RtMidi::Api RtMidiIn :: getCurrentApi( void ) throw() { return rtapi_->getCurrentApi(); } |
|
|
|
inline void RtMidiIn :: openPort( unsigned int portNumber, const std::string portName ) { rtapi_->openPort( portNumber, portName ); } |
|
|
|
inline void RtMidiIn :: openVirtualPort( const std::string portName ) { rtapi_->openVirtualPort( portName ); } |
|
|
|
inline void RtMidiIn :: openPort( unsigned int portNumber, const std::string &portName ) { rtapi_->openPort( portNumber, portName ); } |
|
|
|
inline void RtMidiIn :: openVirtualPort( const std::string &portName ) { rtapi_->openVirtualPort( portName ); } |
|
|
|
inline void RtMidiIn :: closePort( void ) { rtapi_->closePort(); } |
|
|
|
inline bool RtMidiIn :: isPortOpen() const { return rtapi_->isPortOpen(); } |
|
|
|
inline void RtMidiIn :: setCallback( RtMidiCallback callback, void *userData ) { ((MidiInApi *)rtapi_)->setCallback( callback, userData ); } |
|
|
@@ -547,17 +580,18 @@ inline unsigned int RtMidiIn :: getPortCount( void ) { return rtapi_->getPortCou |
|
|
|
inline std::string RtMidiIn :: getPortName( unsigned int portNumber ) { return rtapi_->getPortName( portNumber ); } |
|
|
|
inline void RtMidiIn :: ignoreTypes( bool midiSysex, bool midiTime, bool midiSense ) { ((MidiInApi *)rtapi_)->ignoreTypes( midiSysex, midiTime, midiSense ); } |
|
|
|
inline double RtMidiIn :: getMessage( std::vector<unsigned char> *message ) { return ((MidiInApi *)rtapi_)->getMessage( message ); } |
|
|
|
inline void RtMidiIn :: setErrorCallback( RtMidiErrorCallback errorCallback ) { rtapi_->setErrorCallback(errorCallback); } |
|
|
|
inline void RtMidiIn :: setErrorCallback( RtMidiErrorCallback errorCallback, void *userData ) { rtapi_->setErrorCallback(errorCallback, userData); } |
|
|
|
|
|
|
|
inline RtMidi::Api RtMidiOut :: getCurrentApi( void ) throw() { return rtapi_->getCurrentApi(); } |
|
|
|
inline void RtMidiOut :: openPort( unsigned int portNumber, const std::string portName ) { rtapi_->openPort( portNumber, portName ); } |
|
|
|
inline void RtMidiOut :: openVirtualPort( const std::string portName ) { rtapi_->openVirtualPort( portName ); } |
|
|
|
inline void RtMidiOut :: openPort( unsigned int portNumber, const std::string &portName ) { rtapi_->openPort( portNumber, portName ); } |
|
|
|
inline void RtMidiOut :: openVirtualPort( const std::string &portName ) { rtapi_->openVirtualPort( portName ); } |
|
|
|
inline void RtMidiOut :: closePort( void ) { rtapi_->closePort(); } |
|
|
|
inline bool RtMidiOut :: isPortOpen() const { return rtapi_->isPortOpen(); } |
|
|
|
inline unsigned int RtMidiOut :: getPortCount( void ) { return rtapi_->getPortCount(); } |
|
|
|
inline std::string RtMidiOut :: getPortName( unsigned int portNumber ) { return rtapi_->getPortName( portNumber ); } |
|
|
|
inline void RtMidiOut :: sendMessage( std::vector<unsigned char> *message ) { ((MidiOutApi *)rtapi_)->sendMessage( message ); } |
|
|
|
inline void RtMidiOut :: setErrorCallback( RtMidiErrorCallback errorCallback ) { rtapi_->setErrorCallback(errorCallback); } |
|
|
|
inline void RtMidiOut :: sendMessage( const std::vector<unsigned char> *message ) { ((MidiOutApi *)rtapi_)->sendMessage( &message->at(0), message->size() ); } |
|
|
|
inline void RtMidiOut :: sendMessage( const unsigned char *message, size_t size ) { ((MidiOutApi *)rtapi_)->sendMessage( message, size ); } |
|
|
|
inline void RtMidiOut :: setErrorCallback( RtMidiErrorCallback errorCallback, void *userData ) { rtapi_->setErrorCallback(errorCallback, userData); } |
|
|
|
|
|
|
|
// **************************************************************** // |
|
|
|
// |
|
|
@@ -574,11 +608,11 @@ inline void RtMidiOut :: setErrorCallback( RtMidiErrorCallback errorCallback ) { |
|
|
|
class MidiInCore: public MidiInApi |
|
|
|
{ |
|
|
|
public: |
|
|
|
MidiInCore( const std::string clientName, unsigned int queueSizeLimit ); |
|
|
|
MidiInCore( const std::string &clientName, unsigned int queueSizeLimit ); |
|
|
|
~MidiInCore( void ); |
|
|
|
RtMidi::Api getCurrentApi( void ) { return RtMidi::MACOSX_CORE; }; |
|
|
|
void openPort( unsigned int portNumber, const std::string portName ); |
|
|
|
void openVirtualPort( const std::string portName ); |
|
|
|
void openPort( unsigned int portNumber, const std::string &portName ); |
|
|
|
void openVirtualPort( const std::string &portName ); |
|
|
|
void closePort( void ); |
|
|
|
unsigned int getPortCount( void ); |
|
|
|
std::string getPortName( unsigned int portNumber ); |
|
|
@@ -590,15 +624,15 @@ class MidiInCore: public MidiInApi |
|
|
|
class MidiOutCore: public MidiOutApi |
|
|
|
{ |
|
|
|
public: |
|
|
|
MidiOutCore( const std::string clientName ); |
|
|
|
MidiOutCore( const std::string &clientName ); |
|
|
|
~MidiOutCore( void ); |
|
|
|
RtMidi::Api getCurrentApi( void ) { return RtMidi::MACOSX_CORE; }; |
|
|
|
void openPort( unsigned int portNumber, const std::string portName ); |
|
|
|
void openVirtualPort( const std::string portName ); |
|
|
|
void openPort( unsigned int portNumber, const std::string &portName ); |
|
|
|
void openVirtualPort( const std::string &portName ); |
|
|
|
void closePort( void ); |
|
|
|
unsigned int getPortCount( void ); |
|
|
|
std::string getPortName( unsigned int portNumber ); |
|
|
|
void sendMessage( std::vector<unsigned char> *message ); |
|
|
|
void sendMessage( const unsigned char *message, size_t size ); |
|
|
|
|
|
|
|
protected: |
|
|
|
void initialize( const std::string& clientName ); |
|
|
@@ -611,11 +645,11 @@ class MidiOutCore: public MidiOutApi |
|
|
|
class MidiInJack: public MidiInApi |
|
|
|
{ |
|
|
|
public: |
|
|
|
MidiInJack( const std::string clientName, unsigned int queueSizeLimit ); |
|
|
|
MidiInJack( const std::string &clientName, unsigned int queueSizeLimit ); |
|
|
|
~MidiInJack( void ); |
|
|
|
RtMidi::Api getCurrentApi( void ) { return RtMidi::UNIX_JACK; }; |
|
|
|
void openPort( unsigned int portNumber, const std::string portName ); |
|
|
|
void openVirtualPort( const std::string portName ); |
|
|
|
void openPort( unsigned int portNumber, const std::string &portName ); |
|
|
|
void openVirtualPort( const std::string &portName ); |
|
|
|
void closePort( void ); |
|
|
|
unsigned int getPortCount( void ); |
|
|
|
std::string getPortName( unsigned int portNumber ); |
|
|
@@ -630,15 +664,15 @@ class MidiInJack: public MidiInApi |
|
|
|
class MidiOutJack: public MidiOutApi |
|
|
|
{ |
|
|
|
public: |
|
|
|
MidiOutJack( const std::string clientName ); |
|
|
|
MidiOutJack( const std::string &clientName ); |
|
|
|
~MidiOutJack( void ); |
|
|
|
RtMidi::Api getCurrentApi( void ) { return RtMidi::UNIX_JACK; }; |
|
|
|
void openPort( unsigned int portNumber, const std::string portName ); |
|
|
|
void openVirtualPort( const std::string portName ); |
|
|
|
void openPort( unsigned int portNumber, const std::string &portName ); |
|
|
|
void openVirtualPort( const std::string &portName ); |
|
|
|
void closePort( void ); |
|
|
|
unsigned int getPortCount( void ); |
|
|
|
std::string getPortName( unsigned int portNumber ); |
|
|
|
void sendMessage( std::vector<unsigned char> *message ); |
|
|
|
void sendMessage( const unsigned char *message, size_t size ); |
|
|
|
|
|
|
|
protected: |
|
|
|
std::string clientName; |
|
|
@@ -654,11 +688,11 @@ class MidiOutJack: public MidiOutApi |
|
|
|
class MidiInAlsa: public MidiInApi |
|
|
|
{ |
|
|
|
public: |
|
|
|
MidiInAlsa( const std::string clientName, unsigned int queueSizeLimit ); |
|
|
|
MidiInAlsa( const std::string &clientName, unsigned int queueSizeLimit ); |
|
|
|
~MidiInAlsa( void ); |
|
|
|
RtMidi::Api getCurrentApi( void ) { return RtMidi::LINUX_ALSA; }; |
|
|
|
void openPort( unsigned int portNumber, const std::string portName ); |
|
|
|
void openVirtualPort( const std::string portName ); |
|
|
|
void openPort( unsigned int portNumber, const std::string &portName ); |
|
|
|
void openVirtualPort( const std::string &portName ); |
|
|
|
void closePort( void ); |
|
|
|
unsigned int getPortCount( void ); |
|
|
|
std::string getPortName( unsigned int portNumber ); |
|
|
@@ -670,15 +704,15 @@ class MidiInAlsa: public MidiInApi |
|
|
|
class MidiOutAlsa: public MidiOutApi |
|
|
|
{ |
|
|
|
public: |
|
|
|
MidiOutAlsa( const std::string clientName ); |
|
|
|
MidiOutAlsa( const std::string &clientName ); |
|
|
|
~MidiOutAlsa( void ); |
|
|
|
RtMidi::Api getCurrentApi( void ) { return RtMidi::LINUX_ALSA; }; |
|
|
|
void openPort( unsigned int portNumber, const std::string portName ); |
|
|
|
void openVirtualPort( const std::string portName ); |
|
|
|
void openPort( unsigned int portNumber, const std::string &portName ); |
|
|
|
void openVirtualPort( const std::string &portName ); |
|
|
|
void closePort( void ); |
|
|
|
unsigned int getPortCount( void ); |
|
|
|
std::string getPortName( unsigned int portNumber ); |
|
|
|
void sendMessage( std::vector<unsigned char> *message ); |
|
|
|
void sendMessage( const unsigned char *message, size_t size ); |
|
|
|
|
|
|
|
protected: |
|
|
|
void initialize( const std::string& clientName ); |
|
|
@@ -691,11 +725,11 @@ class MidiOutAlsa: public MidiOutApi |
|
|
|
class MidiInWinMM: public MidiInApi |
|
|
|
{ |
|
|
|
public: |
|
|
|
MidiInWinMM( const std::string clientName, unsigned int queueSizeLimit ); |
|
|
|
MidiInWinMM( const std::string &clientName, unsigned int queueSizeLimit ); |
|
|
|
~MidiInWinMM( void ); |
|
|
|
RtMidi::Api getCurrentApi( void ) { return RtMidi::WINDOWS_MM; }; |
|
|
|
void openPort( unsigned int portNumber, const std::string portName ); |
|
|
|
void openVirtualPort( const std::string portName ); |
|
|
|
void openPort( unsigned int portNumber, const std::string &portName ); |
|
|
|
void openVirtualPort( const std::string &portName ); |
|
|
|
void closePort( void ); |
|
|
|
unsigned int getPortCount( void ); |
|
|
|
std::string getPortName( unsigned int portNumber ); |
|
|
@@ -707,15 +741,15 @@ class MidiInWinMM: public MidiInApi |
|
|
|
class MidiOutWinMM: public MidiOutApi |
|
|
|
{ |
|
|
|
public: |
|
|
|
MidiOutWinMM( const std::string clientName ); |
|
|
|
MidiOutWinMM( const std::string &clientName ); |
|
|
|
~MidiOutWinMM( void ); |
|
|
|
RtMidi::Api getCurrentApi( void ) { return RtMidi::WINDOWS_MM; }; |
|
|
|
void openPort( unsigned int portNumber, const std::string portName ); |
|
|
|
void openVirtualPort( const std::string portName ); |
|
|
|
void openPort( unsigned int portNumber, const std::string &portName ); |
|
|
|
void openVirtualPort( const std::string &portName ); |
|
|
|
void closePort( void ); |
|
|
|
unsigned int getPortCount( void ); |
|
|
|
std::string getPortName( unsigned int portNumber ); |
|
|
|
void sendMessage( std::vector<unsigned char> *message ); |
|
|
|
void sendMessage( const unsigned char *message, size_t size ); |
|
|
|
|
|
|
|
protected: |
|
|
|
void initialize( const std::string& clientName ); |
|
|
@@ -728,13 +762,13 @@ class MidiOutWinMM: public MidiOutApi |
|
|
|
class MidiInDummy: public MidiInApi |
|
|
|
{ |
|
|
|
public: |
|
|
|
MidiInDummy( const std::string /*clientName*/, unsigned int queueSizeLimit ) : MidiInApi( queueSizeLimit ) { errorString_ = "MidiInDummy: This class provides no functionality."; error( RtMidiError::WARNING, errorString_ ); } |
|
|
|
MidiInDummy( const std::string &/*clientName*/, unsigned int queueSizeLimit ) : MidiInApi( queueSizeLimit ) { errorString_ = "MidiInDummy: This class provides no functionality."; error( RtMidiError::WARNING, errorString_ ); } |
|
|
|
RtMidi::Api getCurrentApi( void ) { return RtMidi::RTMIDI_DUMMY; } |
|
|
|
void openPort( unsigned int /*portNumber*/, const std::string /*portName*/ ) {} |
|
|
|
void openVirtualPort( const std::string /*portName*/ ) {} |
|
|
|
void openPort( unsigned int /*portNumber*/, const std::string &/*portName*/ ) {} |
|
|
|
void openVirtualPort( const std::string &/*portName*/ ) {} |
|
|
|
void closePort( void ) {} |
|
|
|
unsigned int getPortCount( void ) { return 0; } |
|
|
|
std::string getPortName( unsigned int portNumber ) { return ""; } |
|
|
|
std::string getPortName( unsigned int /*portNumber*/ ) { return ""; } |
|
|
|
|
|
|
|
protected: |
|
|
|
void initialize( const std::string& /*clientName*/ ) {} |
|
|
@@ -743,14 +777,14 @@ class MidiInDummy: public MidiInApi |
|
|
|
class MidiOutDummy: public MidiOutApi |
|
|
|
{ |
|
|
|
public: |
|
|
|
MidiOutDummy( const std::string /*clientName*/ ) { errorString_ = "MidiOutDummy: This class provides no functionality."; error( RtMidiError::WARNING, errorString_ ); } |
|
|
|
MidiOutDummy( const std::string &/*clientName*/ ) { errorString_ = "MidiOutDummy: This class provides no functionality."; error( RtMidiError::WARNING, errorString_ ); } |
|
|
|
RtMidi::Api getCurrentApi( void ) { return RtMidi::RTMIDI_DUMMY; } |
|
|
|
void openPort( unsigned int /*portNumber*/, const std::string /*portName*/ ) {} |
|
|
|
void openVirtualPort( const std::string /*portName*/ ) {} |
|
|
|
void openPort( unsigned int /*portNumber*/, const std::string &/*portName*/ ) {} |
|
|
|
void openVirtualPort( const std::string &/*portName*/ ) {} |
|
|
|
void closePort( void ) {} |
|
|
|
unsigned int getPortCount( void ) { return 0; } |
|
|
|
std::string getPortName( unsigned int /*portNumber*/ ) { return ""; } |
|
|
|
void sendMessage( std::vector<unsigned char> * /*message*/ ) {} |
|
|
|
void sendMessage( const unsigned char * /*message*/, size_t /*size*/ ) {} |
|
|
|
|
|
|
|
protected: |
|
|
|
void initialize( const std::string& /*clientName*/ ) {} |
|
|
|