Tutorial Class/Enum List File List Compound Members
Go to the documentation of this file.
46 #if defined _WIN32 || defined __CYGWIN__
47 #define RTMIDI_DLL_PUBLIC
50 #define RTMIDI_DLL_PUBLIC __attribute__( (visibility( "default" )) )
52 #define RTMIDI_DLL_PUBLIC
56 #define RTMIDI_VERSION "3.0.0"
98 virtual void printMessage(
void )
const throw() { std::cerr <<
'\n' << message_ <<
"\n\n"; }
104 virtual const std::string&
getMessage(
void)
const throw() {
return message_; }
107 virtual const char*
what(
void )
const throw() {
return message_.c_str(); }
110 std::string message_;
141 static std::string
getVersion(
void )
throw();
149 static void getCompiledApi( std::vector<RtMidi::Api> &apis )
throw();
152 virtual void openPort(
unsigned int portNumber = 0,
const std::string &portName = std::string(
"RtMidi" ) ) = 0;
155 virtual void openVirtualPort(
const std::string &portName = std::string(
"RtMidi" ) ) = 0;
161 virtual std::string
getPortName(
unsigned int portNumber = 0 ) = 0;
225 typedef void (*RtMidiCallback)(
double timeStamp, std::vector<unsigned char> *message,
void *userData);
246 const std::string& clientName =
"RtMidi Input Client",
247 unsigned int queueSizeLimit = 100 );
261 void openPort(
unsigned int portNumber = 0,
const std::string &portName = std::string(
"RtMidi Input" ) );
273 void openVirtualPort(
const std::string &portName = std::string(
"RtMidi Input" ) );
286 void setCallback( RtMidiCallback callback,
void *userData = 0 );
293 void cancelCallback();
317 std::string
getPortName(
unsigned int portNumber = 0 );
327 void ignoreTypes(
bool midiSysex =
true,
bool midiTime =
true,
bool midiSense =
true );
337 double getMessage( std::vector<unsigned char> *message );
347 void openMidiApi(
RtMidi::Api api,
const std::string &clientName,
unsigned int queueSizeLimit );
380 const std::string& clientName =
"RtMidi Output Client" );
395 void openPort(
unsigned int portNumber = 0,
const std::string &portName = std::string(
"RtMidi Output" ) );
416 void openVirtualPort(
const std::string &portName = std::string(
"RtMidi Output" ) );
427 std::string
getPortName(
unsigned int portNumber = 0 );
434 void sendMessage(
const std::vector<unsigned char> *message );
444 void sendMessage(
const unsigned char *message,
size_t size );
454 void openMidiApi(
RtMidi::Api api,
const std::string &clientName );
478 virtual void openPort(
unsigned int portNumber,
const std::string &portName ) = 0;
479 virtual void openVirtualPort(
const std::string &portName ) = 0;
480 virtual void closePort(
void ) = 0;
482 virtual unsigned int getPortCount(
void ) = 0;
483 virtual std::string getPortName(
unsigned int portNumber ) = 0;
485 inline bool isPortOpen()
const {
return connected_; }
492 virtual void initialize(
const std::string& clientName ) = 0;
496 std::string errorString_;
498 bool firstErrorOccurred_;
499 void *errorCallbackUserData_;
506 MidiInApi(
unsigned int queueSizeLimit );
509 void cancelCallback(
void );
510 virtual void ignoreTypes(
bool midiSysex,
bool midiTime,
bool midiSense );
511 double getMessage( std::vector<unsigned char> *message );
516 std::vector<unsigned char> bytes;
529 unsigned int ringSize;
534 :front(0), back(0), ringSize(0), ring(0) {}
536 bool pop(std::vector<unsigned char>*,
double*);
537 unsigned int size(
unsigned int *back=0,
538 unsigned int *front=0);
546 unsigned char ignoreFlags;
557 : ignoreFlags(7), doInput(
false), firstMessage(
true),
558 apiData(0), usingCallback(
false), userCallback(0), userData(0),
559 continueSysex(
false) {}
572 virtual void sendMessage(
const unsigned char *message,
size_t size ) = 0;
582 inline void RtMidiIn :: openPort(
unsigned int portNumber,
const std::string &portName ) { rtapi_->openPort( portNumber, portName ); }
595 inline void RtMidiOut :: openPort(
unsigned int portNumber,
const std::string &portName ) { rtapi_->openPort( portNumber, portName ); }
611 #if !defined(__LINUX_ALSA__) && !defined(__UNIX_JACK__) && !defined(__MACOSX_CORE__) && !defined(__WINDOWS_MM__)
612 #define __RTMIDI_DUMMY__
615 #if defined(__MACOSX_CORE__)
620 MidiInCore(
const std::string &clientName,
unsigned int queueSizeLimit );
623 void openPort(
unsigned int portNumber,
const std::string &portName );
624 void openVirtualPort(
const std::string &portName );
625 void closePort(
void );
626 unsigned int getPortCount(
void );
627 std::string getPortName(
unsigned int portNumber );
630 void initialize(
const std::string& clientName );
639 void openPort(
unsigned int portNumber,
const std::string &portName );
640 void openVirtualPort(
const std::string &portName );
641 void closePort(
void );
642 unsigned int getPortCount(
void );
643 std::string getPortName(
unsigned int portNumber );
644 void sendMessage(
const unsigned char *message,
size_t size );
647 void initialize(
const std::string& clientName );
652 #if defined(__UNIX_JACK__)
657 MidiInJack(
const std::string &clientName,
unsigned int queueSizeLimit );
660 void openPort(
unsigned int portNumber,
const std::string &portName );
661 void openVirtualPort(
const std::string &portName );
662 void closePort(
void );
663 unsigned int getPortCount(
void );
664 std::string getPortName(
unsigned int portNumber );
667 std::string clientName;
669 void connect(
void );
670 void initialize(
const std::string& clientName );
679 void openPort(
unsigned int portNumber,
const std::string &portName );
680 void openVirtualPort(
const std::string &portName );
681 void closePort(
void );
682 unsigned int getPortCount(
void );
683 std::string getPortName(
unsigned int portNumber );
684 void sendMessage(
const unsigned char *message,
size_t size );
687 std::string clientName;
689 void connect(
void );
690 void initialize(
const std::string& clientName );
695 #if defined(__LINUX_ALSA__)
700 MidiInAlsa(
const std::string &clientName,
unsigned int queueSizeLimit );
703 void openPort(
unsigned int portNumber,
const std::string &portName );
704 void openVirtualPort(
const std::string &portName );
705 void closePort(
void );
706 unsigned int getPortCount(
void );
707 std::string getPortName(
unsigned int portNumber );
710 void initialize(
const std::string& clientName );
719 void openPort(
unsigned int portNumber,
const std::string &portName );
720 void openVirtualPort(
const std::string &portName );
721 void closePort(
void );
722 unsigned int getPortCount(
void );
723 std::string getPortName(
unsigned int portNumber );
724 void sendMessage(
const unsigned char *message,
size_t size );
727 void initialize(
const std::string& clientName );
732 #if defined(__WINDOWS_MM__)
737 MidiInWinMM(
const std::string &clientName,
unsigned int queueSizeLimit );
740 void openPort(
unsigned int portNumber,
const std::string &portName );
741 void openVirtualPort(
const std::string &portName );
742 void closePort(
void );
743 unsigned int getPortCount(
void );
744 std::string getPortName(
unsigned int portNumber );
747 void initialize(
const std::string& clientName );
756 void openPort(
unsigned int portNumber,
const std::string &portName );
757 void openVirtualPort(
const std::string &portName );
758 void closePort(
void );
759 unsigned int getPortCount(
void );
760 std::string getPortName(
unsigned int portNumber );
761 void sendMessage(
const unsigned char *message,
size_t size );
764 void initialize(
const std::string& clientName );
769 #if defined(__RTMIDI_DUMMY__)
774 MidiInDummy(
const std::string &,
unsigned int queueSizeLimit ) :
MidiInApi( queueSizeLimit ) { errorString_ =
"MidiInDummy: This class provides no functionality.";
error(
RtMidiError::WARNING, errorString_ ); }
776 void openPort(
unsigned int ,
const std::string & ) {}
777 void openVirtualPort(
const std::string & ) {}
778 void closePort(
void ) {}
779 unsigned int getPortCount(
void ) {
return 0; }
780 std::string getPortName(
unsigned int ) {
return ""; }
783 void initialize(
const std::string& ) {}
789 MidiOutDummy(
const std::string & ) { errorString_ =
"MidiOutDummy: This class provides no functionality.";
error(
RtMidiError::WARNING, errorString_ ); }
791 void openPort(
unsigned int ,
const std::string & ) {}
792 void openVirtualPort(
const std::string & ) {}
793 void closePort(
void ) {}
794 unsigned int getPortCount(
void ) {
return 0; }
795 std::string getPortName(
unsigned int ) {
return ""; }
796 void sendMessage(
const unsigned char * ,
size_t ) {}
799 void initialize(
const std::string& ) {}
virtual const char * what(void) const
Returns the thrown error message as a c-style string.
Definition: RtMidi.h:107
void setCallback(RtMidiCallback callback, void *userData=0)
Set a callback function to be invoked for incoming MIDI messages.
Definition: RtMidi.h:586
virtual bool isPortOpen() const
Returns true if a port is open and false if not.
Definition: RtMidi.h:598
@ THREAD_ERROR
Definition: RtMidi.h:88
An abstract base class for realtime MIDI input/output.
Definition: RtMidi.h:126
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:596
void(* RtMidiCallback)(double timeStamp, std::vector< unsigned char > *message, void *userData)
User callback function type definition.
Definition: RtMidi.h:225
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:599
std::string getPortName(unsigned int portNumber=0)
Return a string identifier for the specified MIDI input port number.
Definition: RtMidi.h:589
@ DRIVER_ERROR
Definition: RtMidi.h:86
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:588
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:590
virtual bool isPortOpen(void) const =0
Returns true if a port is open and false if not.
@ WINDOWS_MM
Definition: RtMidi.h:136
@ SYSTEM_ERROR
Definition: RtMidi.h:87
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:591
void openPort(unsigned int portNumber=0, const std::string &portName=std::string("RtMidi Output"))
Open a MIDI output connection.
Definition: RtMidi.h:595
RtMidiError(const std::string &message, Type type=RtMidiError::UNSPECIFIED)
The constructor.
Definition: RtMidi.h:92
void closePort(void)
Close an open MIDI connection (if one exists).
Definition: RtMidi.h:584
@ INVALID_USE
Definition: RtMidi.h:85
Type
Defined RtMidiError types.
Definition: RtMidi.h:77
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:603
@ DEBUG_WARNING
Definition: RtMidi.h:79
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:582
virtual void setErrorCallback(RtMidiErrorCallback errorCallback=NULL, void *userData=0)=0
Set an error callback function to be invoked when an error has occured.
virtual const std::string & getMessage(void) const
Returns the thrown error message string.
Definition: RtMidi.h:104
void cancelCallback()
Cancel use of the current callback function (if one exists).
Definition: RtMidi.h:587
RtMidi::Api getCurrentApi(void)
Returns the MIDI API specifier for the current instance of RtMidiOut.
Definition: RtMidi.h:594
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:583
Exception handling class for RtMidi.
Definition: RtMidi.h:73
void(* RtMidiErrorCallback)(RtMidiError::Type type, const std::string &errorText, void *userData)
RtMidi error callback function prototype.
Definition: RtMidi.h:122
@ MACOSX_CORE
Definition: RtMidi.h:133
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:592
virtual bool isPortOpen() const
Returns true if a port is open and false if not.
Definition: RtMidi.h:585
virtual ~RtMidiError(void)
The destructor.
Definition: RtMidi.h:95
void error(RtMidiError::Type type, std::string errorString)
A basic error reporting function for RtMidi classes.
A realtime MIDI input class.
Definition: RtMidi.h:220
double timeStamp
Time in seconds elapsed since the previous message.
Definition: RtMidi.h:519
std::string getPortName(unsigned int portNumber=0)
Return a string identifier for the specified MIDI port type and number.
Definition: RtMidi.h:600
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:581
@ UNIX_JACK
Definition: RtMidi.h:135
@ INVALID_DEVICE
Definition: RtMidi.h:82
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:101
virtual void printMessage(void) const
Prints thrown error message to stderr.
Definition: RtMidi.h:98
@ RTMIDI_DUMMY
Definition: RtMidi.h:137
Api
MIDI API specifier arguments.
Definition: RtMidi.h:131
@ UNSPECIFIED
Definition: RtMidi.h:132
void closePort(void)
Close an open MIDI connection (if one exists).
Definition: RtMidi.h:597
@ WARNING
Definition: RtMidi.h:78
@ INVALID_PARAMETER
Definition: RtMidi.h:84
@ NO_DEVICES_FOUND
Definition: RtMidi.h:81
A realtime MIDI output class.
Definition: RtMidi.h:367
@ MEMORY_ERROR
Definition: RtMidi.h:83
virtual unsigned int getPortCount()=0
Pure virtual getPortCount() function.
@ UNSPECIFIED
Definition: RtMidi.h:80
@ LINUX_ALSA
Definition: RtMidi.h:134
void sendMessage(const std::vector< unsigned char > *message)
Immediately send a single message out an open MIDI output port.
Definition: RtMidi.h:601
 |
©2003-2017 Gary P. Scavone, McGill University. All Rights Reserved.
Maintained by Gary P. Scavone, gary at music.mcgill.ca |