 
    
   
Home   Information   Classes   Download   Usage   Mail List   Requirements   Links   FAQ   Tutorial
Go to the documentation of this file.
   47 #if defined _WIN32 || defined __CYGWIN__ 
   48   #if defined(RTMIDI_EXPORT) 
   49     #define RTMIDI_DLL_PUBLIC __declspec(dllexport) 
   51     #define RTMIDI_DLL_PUBLIC 
   55     #define RTMIDI_DLL_PUBLIC __attribute__( (visibility( "default" )) ) 
   57     #define RTMIDI_DLL_PUBLIC 
   61 #define RTMIDI_VERSION "4.0.0" 
   98     : message_(message), type_(type) {}
 
  104   virtual void printMessage( 
void ) 
const throw() { std::cerr << 
'\n' << message_ << 
"\n\n"; }
 
  107   virtual const Type& 
getType( 
void ) 
const throw() { 
return type_; }
 
  110   virtual const std::string& 
getMessage( 
void ) 
const throw() { 
return message_; }
 
  113   virtual const char* 
what( 
void ) 
const throw() { 
return message_.c_str(); }
 
  116   std::string message_;
 
  181   virtual void openPort( 
unsigned int portNumber = 0, 
const std::string &portName = std::string( 
"RtMidi" ) ) = 0;
 
  184   virtual void openVirtualPort( 
const std::string &portName = std::string( 
"RtMidi" ) ) = 0;
 
  190   virtual std::string 
getPortName( 
unsigned int portNumber = 0 ) = 0;
 
  195   void setClientName( 
const std::string &clientName );
 
  196   void setPortName( 
const std::string &portName );
 
  253   typedef void (*RtMidiCallback)( 
double timeStamp, std::vector<unsigned char> *message, 
void *userData );
 
  274             const std::string& clientName = 
"RtMidi Input Client",
 
  275             unsigned int queueSizeLimit = 100 );
 
  289   void openPort( 
unsigned int portNumber = 0, 
const std::string &portName = std::string( 
"RtMidi Input" ) );
 
  301   void openVirtualPort( 
const std::string &portName = std::string( 
"RtMidi Input" ) );
 
  314   void setCallback( RtMidiCallback callback, 
void *userData = 0 );
 
  321   void cancelCallback();
 
  345   std::string 
getPortName( 
unsigned int portNumber = 0 );
 
  355   void ignoreTypes( 
bool midiSysex = 
true, 
bool midiTime = 
true, 
bool midiSense = 
true );
 
  365   double getMessage( std::vector<unsigned char> *message );
 
  375   void openMidiApi( 
RtMidi::Api api, 
const std::string &clientName, 
unsigned int queueSizeLimit );
 
  404              const std::string& clientName = 
"RtMidi Output Client" );
 
  419   void openPort( 
unsigned int portNumber = 0, 
const std::string &portName = std::string( 
"RtMidi Output" ) );
 
  440   void openVirtualPort( 
const std::string &portName = std::string( 
"RtMidi Output" ) );
 
  451   std::string 
getPortName( 
unsigned int portNumber = 0 );
 
  458   void sendMessage( 
const std::vector<unsigned char> *message );
 
  468   void sendMessage( 
const unsigned char *message, 
size_t size );
 
  478   void openMidiApi( 
RtMidi::Api api, 
const std::string &clientName );
 
  495 class RTMIDI_DLL_PUBLIC MidiApi
 
  502   virtual void openPort( 
unsigned int portNumber, 
const std::string &portName ) = 0;
 
  503   virtual void openVirtualPort( 
const std::string &portName ) = 0;
 
  504   virtual void closePort( 
void ) = 0;
 
  505   virtual void setClientName( 
const std::string &clientName ) = 0;
 
  506   virtual void setPortName( 
const std::string &portName ) = 0;
 
  508   virtual unsigned int getPortCount( 
void ) = 0;
 
  509   virtual std::string getPortName( 
unsigned int portNumber ) = 0;
 
  511   inline bool isPortOpen()
 const { 
return connected_; }
 
  518   virtual void initialize( 
const std::string& clientName ) = 0;
 
  522   std::string errorString_;
 
  524   bool firstErrorOccurred_;
 
  525   void *errorCallbackUserData_;
 
  528 class RTMIDI_DLL_PUBLIC MidiInApi : 
public MidiApi
 
  532   MidiInApi( 
unsigned int queueSizeLimit );
 
  533   virtual ~MidiInApi( 
void );
 
  535   void cancelCallback( 
void );
 
  536   virtual void ignoreTypes( 
bool midiSysex, 
bool midiTime, 
bool midiSense );
 
  537   double getMessage( std::vector<unsigned char> *message );
 
  542     std::vector<unsigned char> bytes;
 
  549       : bytes(0), timeStamp(0.0) {}
 
  555     unsigned int ringSize;
 
  560       : front(0), back(0), ringSize(0), ring(0) {}
 
  561     bool push( 
const MidiMessage& );
 
  562     bool pop( std::vector<unsigned char>*, 
double* );
 
  563     unsigned int size( 
unsigned int *back=0, 
unsigned int *front=0 );
 
  568   struct RtMidiInData {
 
  571     unsigned char ignoreFlags;
 
  582       : ignoreFlags(7), doInput(false), firstMessage(true), apiData(0), usingCallback(false),
 
  583         userCallback(0), userData(0), continueSysex(false) {}
 
  587   RtMidiInData inputData_;
 
  590 class RTMIDI_DLL_PUBLIC MidiOutApi : 
public MidiApi
 
  595   virtual ~MidiOutApi( 
void );
 
  596   virtual void sendMessage( 
const unsigned char *message, 
size_t size ) = 0;
 
  606 inline void RtMidiIn :: openPort( 
unsigned int portNumber, 
const std::string &portName ) { rtapi_->openPort( portNumber, portName ); }
 
  619 inline void RtMidiOut :: openPort( 
unsigned int portNumber, 
const std::string &portName ) { rtapi_->openPort( portNumber, portName ); }
 
  
virtual const char * what(void) const
Returns the thrown error message as a c-style string.
Definition: RtMidi.h:113
void setCallback(RtMidiCallback callback, void *userData=0)
Set a callback function to be invoked for incoming MIDI messages.
Definition: RtMidi.h:610
virtual bool isPortOpen() const
Returns true if a port is open and false if not.
Definition: RtMidi.h:622
static std::string getApiDisplayName(RtMidi::Api api)
Return the display name of a specified compiled MIDI API.
An abstract base class for realtime MIDI input/output.
Definition: RtMidi.h:133
virtual std::string getPortName(unsigned int portNumber=0)=0
Pure virtual getPortName() function.
void openVirtualPort(const std::string &portName=std::string("RtMidi Output"))
Create a virtual output port, with optional name, to allow software connections (OS X,...
Definition: RtMidi.h:620
void(* RtMidiCallback)(double timeStamp, std::vector< unsigned char > *message, void *userData)
User callback function type definition.
Definition: RtMidi.h:253
static std::string getVersion(void)
A static function to determine the current RtMidi version.
unsigned int getPortCount(void)
Return the number of available MIDI output ports.
Definition: RtMidi.h:623
RtMidiIn(RtMidi::Api api=UNSPECIFIED, const std::string &clientName="RtMidi Input Client", unsigned int queueSizeLimit=100)
Default constructor that allows an optional api, client name and queue size.
std::string getPortName(unsigned int portNumber=0)
Return a string identifier for the specified MIDI input port number.
Definition: RtMidi.h:613
@ DRIVER_ERROR
Definition: RtMidi.h:91
virtual void openPort(unsigned int portNumber=0, const std::string &portName=std::string("RtMidi"))=0
Pure virtual openPort() function.
unsigned int getPortCount()
Return the number of available MIDI input ports.
Definition: RtMidi.h:612
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.h:614
virtual bool isPortOpen(void) const =0
Returns true if a port is open and false if not.
@ WINDOWS_MM
Definition: RtMidi.h:141
@ SYSTEM_ERROR
Definition: RtMidi.h:92
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.h:615
void openPort(unsigned int portNumber=0, const std::string &portName=std::string("RtMidi Output"))
Open a MIDI output connection.
Definition: RtMidi.h:619
RtMidiError(const std::string &message, Type type=RtMidiError::UNSPECIFIED)
The constructor.
Definition: RtMidi.h:97
void closePort(void)
Close an open MIDI connection (if one exists).
Definition: RtMidi.h:608
@ INVALID_USE
Definition: RtMidi.h:90
Type
Defined RtMidiError types.
Definition: RtMidi.h:82
virtual void setErrorCallback(RtMidiErrorCallback errorCallback=NULL, void *userData=0)
Set an error callback function to be invoked when an error has occured.
Definition: RtMidi.h:627
@ DEBUG_WARNING
Definition: RtMidi.h:84
void openPort(unsigned int portNumber=0, const std::string &portName=std::string("RtMidi Input"))
Open a MIDI input connection given by enumeration number.
Definition: RtMidi.h:606
virtual void setErrorCallback(RtMidiErrorCallback errorCallback=NULL, void *userData=0)=0
Set an error callback function to be invoked when an error has occured.
static RtMidi::Api getCompiledApiByName(const std::string &name)
Return the compiled MIDI API having the given name.
virtual const std::string & getMessage(void) const
Returns the thrown error message string.
Definition: RtMidi.h:110
void cancelCallback()
Cancel use of the current callback function (if one exists).
Definition: RtMidi.h:611
RtMidiOut(RtMidi::Api api=UNSPECIFIED, const std::string &clientName="RtMidi Output Client")
Default constructor that allows an optional client name.
RtMidi::Api getCurrentApi(void)
Returns the MIDI API specifier for the current instance of RtMidiOut.
Definition: RtMidi.h:618
~RtMidiOut(void)
The destructor closes any open MIDI connections.
virtual void closePort(void)=0
Pure virtual closePort() function.
void openVirtualPort(const std::string &portName=std::string("RtMidi Input"))
Create a virtual input port, with optional name, to allow software connections (OS X,...
Definition: RtMidi.h:607
Exception handling class for RtMidi.
Definition: RtMidi.h:79
void(* RtMidiErrorCallback)(RtMidiError::Type type, const std::string &errorText, void *userData)
RtMidi error callback function prototype.
Definition: RtMidi.h:128
@ MACOSX_CORE
Definition: RtMidi.h:138
virtual void setErrorCallback(RtMidiErrorCallback errorCallback=NULL, void *userData=0)
Set an error callback function to be invoked when an error has occured.
Definition: RtMidi.h:616
virtual bool isPortOpen() const
Returns true if a port is open and false if not.
Definition: RtMidi.h:609
virtual ~RtMidiError(void)
The destructor.
Definition: RtMidi.h:101
A realtime MIDI input class.
Definition: RtMidi.h:249
std::string getPortName(unsigned int portNumber=0)
Return a string identifier for the specified MIDI port type and number.
Definition: RtMidi.h:624
static void getCompiledApi(std::vector< RtMidi::Api > &apis)
A static function to determine the available compiled MIDI APIs.
RtMidi::Api getCurrentApi(void)
Returns the MIDI API specifier for the current instance of RtMidiIn.
Definition: RtMidi.h:605
@ UNIX_JACK
Definition: RtMidi.h:140
@ INVALID_DEVICE
Definition: RtMidi.h:87
virtual void openVirtualPort(const std::string &portName=std::string("RtMidi"))=0
Pure virtual openVirtualPort() function.
virtual const Type & getType(void) const
Returns the thrown error message type.
Definition: RtMidi.h:107
virtual void printMessage(void) const
Prints thrown error message to stderr.
Definition: RtMidi.h:104
@ RTMIDI_DUMMY
Definition: RtMidi.h:142
Api
MIDI API specifier arguments.
Definition: RtMidi.h:136
@ UNSPECIFIED
Definition: RtMidi.h:137
void closePort(void)
Close an open MIDI connection (if one exists).
Definition: RtMidi.h:621
~RtMidiIn(void)
If a MIDI connection is still open, it will be closed by the destructor.
@ WARNING
Definition: RtMidi.h:83
@ INVALID_PARAMETER
Definition: RtMidi.h:89
@ NO_DEVICES_FOUND
Definition: RtMidi.h:86
static std::string getApiName(RtMidi::Api api)
Return the name of a specified compiled MIDI API.
A realtime MIDI output class.
Definition: RtMidi.h:393
@ MEMORY_ERROR
Definition: RtMidi.h:88
virtual unsigned int getPortCount()=0
Pure virtual getPortCount() function.
@ UNSPECIFIED
Definition: RtMidi.h:85
@ LINUX_ALSA
Definition: RtMidi.h:139
void sendMessage(const std::vector< unsigned char > *message)
Immediately send a single message out an open MIDI output port.
Definition: RtMidi.h:625