46#define RTMIDI_DLL_PUBLIC
47#define RTMIDI_VERSION "3.0.0"
98 virtual const char*
what(
void )
const throw() {
return message_.c_str(); }
132 static std::string getVersion(
void )
throw();
140 static void getCompiledApi( std::vector<RtMidi::Api> &apis )
throw();
143 virtual void openPort(
unsigned int portNumber = 0,
const std::string &portName = std::string(
"RtMidi" ) ) = 0;
146 virtual void openVirtualPort(
const std::string &portName = std::string(
"RtMidi" ) ) = 0;
152 virtual std::string
getPortName(
unsigned int portNumber = 0 ) = 0;
237 const std::string& clientName =
"RtMidi Input Client",
238 unsigned int queueSizeLimit = 100 );
252 void openPort(
unsigned int portNumber = 0,
const std::string &portName = std::string(
"RtMidi Input" ) );
264 void openVirtualPort(
const std::string &portName = std::string(
"RtMidi Input" ) );
308 std::string
getPortName(
unsigned int portNumber = 0 );
318 void ignoreTypes(
bool midiSysex =
true,
bool midiTime =
true,
bool midiSense =
true );
371 const std::string& clientName =
"RtMidi Output Client" );
386 void openPort(
unsigned int portNumber = 0,
const std::string &portName = std::string(
"RtMidi Output" ) );
407 void openVirtualPort(
const std::string &portName = std::string(
"RtMidi Output" ) );
418 std::string
getPortName(
unsigned int portNumber = 0 );
469 virtual void openPort(
unsigned int portNumber,
const std::string &portName ) = 0;
483 virtual void initialize(
const std::string& clientName ) = 0;
497 MidiInApi(
unsigned int queueSizeLimit );
501 virtual void ignoreTypes(
bool midiSysex,
bool midiTime,
bool midiSense );
527 bool pop(std::vector<unsigned char>*,
double*);
528 unsigned int size(
unsigned int *back=0,
529 unsigned int *front=0);
573inline void RtMidiIn :: openPort(
unsigned int portNumber,
const std::string &portName ) {
rtapi_->openPort( portNumber, portName ); }
574inline void RtMidiIn :: openVirtualPort(
const std::string &portName ) {
rtapi_->openVirtualPort( portName ); }
575inline void RtMidiIn :: closePort(
void ) {
rtapi_->closePort(); }
576inline bool RtMidiIn :: isPortOpen()
const {
return rtapi_->isPortOpen(); }
578inline void RtMidiIn :: cancelCallback(
void ) { ((
MidiInApi *)
rtapi_)->cancelCallback(); }
579inline unsigned int RtMidiIn :: getPortCount(
void ) {
return rtapi_->getPortCount(); }
580inline std::string RtMidiIn :: getPortName(
unsigned int portNumber ) {
return rtapi_->getPortName( portNumber ); }
581inline void RtMidiIn :: ignoreTypes(
bool midiSysex,
bool midiTime,
bool midiSense ) { ((
MidiInApi *)
rtapi_)->ignoreTypes( midiSysex, midiTime, midiSense ); }
583inline void RtMidiIn :: setErrorCallback(
RtMidiErrorCallback errorCallback,
void *userData ) {
rtapi_->setErrorCallback(errorCallback, userData); }
585inline RtMidi::Api RtMidiOut :: getCurrentApi(
void )
throw() {
return rtapi_->getCurrentApi(); }
586inline void RtMidiOut :: openPort(
unsigned int portNumber,
const std::string &portName ) {
rtapi_->openPort( portNumber, portName ); }
587inline void RtMidiOut :: openVirtualPort(
const std::string &portName ) {
rtapi_->openVirtualPort( portName ); }
588inline void RtMidiOut :: closePort(
void ) {
rtapi_->closePort(); }
589inline bool RtMidiOut :: isPortOpen()
const {
return rtapi_->isPortOpen(); }
590inline unsigned int RtMidiOut :: getPortCount(
void ) {
return rtapi_->getPortCount(); }
591inline std::string RtMidiOut :: getPortName(
unsigned int portNumber ) {
return rtapi_->getPortName( portNumber ); }
594inline void RtMidiOut :: setErrorCallback(
RtMidiErrorCallback errorCallback,
void *userData ) {
rtapi_->setErrorCallback(errorCallback, userData); }
602#if !defined(__LINUX_ALSA__) && !defined(__UNIX_JACK__) && !defined(__MACOSX_CORE__) && !defined(__WINDOWS_MM__)
603 #define __RTMIDI_DUMMY__
606#if defined(__MACOSX_CORE__)
611 MidiInCore(
const std::string &clientName,
unsigned int queueSizeLimit );
614 void openPort(
unsigned int portNumber,
const std::string &portName );
618 std::string
getPortName(
unsigned int portNumber );
621 void initialize(
const std::string& clientName );
627 MidiOutCore(
const std::string &clientName );
628 ~MidiOutCore(
void );
630 void openPort(
unsigned int portNumber,
const std::string &portName );
634 std::string
getPortName(
unsigned int portNumber );
638 void initialize(
const std::string& clientName );
643#if defined(__UNIX_JACK__)
648 MidiInJack(
const std::string &clientName,
unsigned int queueSizeLimit );
651 void openPort(
unsigned int portNumber,
const std::string &portName );
655 std::string
getPortName(
unsigned int portNumber );
658 std::string clientName;
660 void connect(
void );
661 void initialize(
const std::string& clientName );
667 MidiOutJack(
const std::string &clientName );
668 ~MidiOutJack(
void );
670 void openPort(
unsigned int portNumber,
const std::string &portName );
674 std::string
getPortName(
unsigned int portNumber );
678 std::string clientName;
680 void connect(
void );
681 void initialize(
const std::string& clientName );
686#if defined(__LINUX_ALSA__)
691 MidiInAlsa(
const std::string &clientName,
unsigned int queueSizeLimit );
694 void openPort(
unsigned int portNumber,
const std::string &portName );
698 std::string
getPortName(
unsigned int portNumber );
701 void initialize(
const std::string& clientName );
707 MidiOutAlsa(
const std::string &clientName );
708 ~MidiOutAlsa(
void );
710 void openPort(
unsigned int portNumber,
const std::string &portName );
714 std::string
getPortName(
unsigned int portNumber );
718 void initialize(
const std::string& clientName );
723#if defined(__WINDOWS_MM__)
728 MidiInWinMM(
const std::string &clientName,
unsigned int queueSizeLimit );
729 ~MidiInWinMM(
void );
731 void openPort(
unsigned int portNumber,
const std::string &portName );
735 std::string
getPortName(
unsigned int portNumber );
738 void initialize(
const std::string& clientName );
744 MidiOutWinMM(
const std::string &clientName );
745 ~MidiOutWinMM(
void );
747 void openPort(
unsigned int portNumber,
const std::string &portName );
751 std::string
getPortName(
unsigned int portNumber );
755 void initialize(
const std::string& clientName );
760#if defined(__RTMIDI_DUMMY__)
767 void openPort(
unsigned int ,
const std::string & ) {}
782 void openPort(
unsigned int ,
const std::string & ) {}
#define RTMIDI_DLL_PUBLIC
Definition RtMidi.h:46
void(* RtMidiErrorCallback)(RtMidiError::Type type, const std::string &errorText, void *userData)
RtMidi error callback function prototype.
Definition RtMidi.h:113
CAdPlugDatabase::CRecord::RecordType type
Definition adplugdb.cpp:93
static void message(int level, const char *fmt,...)
Definition adplugdb.cpp:120
event_queue * push(event_queue *queue, event_queue *event)
Definition allegrosmfwr.cpp:114
virtual void openPort(unsigned int portNumber, const std::string &portName)=0
virtual void closePort(void)=0
void * errorCallbackUserData_
Definition RtMidi.h:490
bool connected_
Definition RtMidi.h:486
virtual std::string getPortName(unsigned int portNumber)=0
virtual void openVirtualPort(const std::string &portName)=0
bool firstErrorOccurred_
Definition RtMidi.h:489
RtMidiErrorCallback errorCallback_
Definition RtMidi.h:488
void * apiData_
Definition RtMidi.h:485
std::string errorString_
Definition RtMidi.h:487
bool isPortOpen() const
Definition RtMidi.h:476
MidiApi()
Definition RtMidi.cpp:234
virtual unsigned int getPortCount(void)=0
virtual RtMidi::Api getCurrentApi(void)=0
virtual void initialize(const std::string &clientName)=0
void setCallback(RtMidiIn::RtMidiCallback callback, void *userData)
Definition RtMidi.cpp:297
MidiInApi(unsigned int queueSizeLimit)
Definition RtMidi.cpp:282
double getMessage(std::vector< unsigned char > *message)
Definition RtMidi.cpp:337
RtMidiInData inputData_
Definition RtMidi.h:554
void cancelCallback(void)
Definition RtMidi.cpp:316
virtual void ignoreTypes(bool midiSysex, bool midiTime, bool midiSense)
Definition RtMidi.cpp:329
void openPort(unsigned int, const std::string &)
Definition RtMidi.h:767
void initialize(const std::string &)
Definition RtMidi.h:774
RtMidi::Api getCurrentApi(void)
Definition RtMidi.h:766
unsigned int getPortCount(void)
Definition RtMidi.h:770
std::string getPortName(unsigned int)
Definition RtMidi.h:771
MidiInDummy(const std::string &, unsigned int queueSizeLimit)
Definition RtMidi.h:765
void closePort(void)
Definition RtMidi.h:769
void openVirtualPort(const std::string &)
Definition RtMidi.h:768
virtual void sendMessage(const unsigned char *message, size_t size)=0
MidiOutApi(void)
Definition RtMidi.cpp:415
RtMidi::Api getCurrentApi(void)
Definition RtMidi.h:781
void openPort(unsigned int, const std::string &)
Definition RtMidi.h:782
void closePort(void)
Definition RtMidi.h:784
unsigned int getPortCount(void)
Definition RtMidi.h:785
void openVirtualPort(const std::string &)
Definition RtMidi.h:783
MidiOutDummy(const std::string &)
Definition RtMidi.h:780
std::string getPortName(unsigned int)
Definition RtMidi.h:786
void sendMessage(const unsigned char *, size_t)
Definition RtMidi.h:787
void initialize(const std::string &)
Definition RtMidi.h:790
virtual const std::string & getMessage(void) const
Returns the thrown error message string.
Definition RtMidi.h:95
virtual const Type & getType(void) const
Returns the thrown error message type.
Definition RtMidi.h:92
virtual void printMessage(void) const
Prints thrown error message to stderr.
Definition RtMidi.h:89
Type
Defined RtMidiError types.
Definition RtMidi.h:68
@ INVALID_USE
Definition RtMidi.h:76
@ NO_DEVICES_FOUND
Definition RtMidi.h:72
@ MEMORY_ERROR
Definition RtMidi.h:74
@ INVALID_PARAMETER
Definition RtMidi.h:75
@ WARNING
Definition RtMidi.h:69
@ INVALID_DEVICE
Definition RtMidi.h:73
@ THREAD_ERROR
Definition RtMidi.h:79
@ DRIVER_ERROR
Definition RtMidi.h:77
@ UNSPECIFIED
Definition RtMidi.h:71
@ DEBUG_WARNING
Definition RtMidi.h:70
@ SYSTEM_ERROR
Definition RtMidi.h:78
virtual ~RtMidiError(void)
The destructor.
Definition RtMidi.h:86
Type type_
Definition RtMidi.h:102
virtual const char * what(void) const
Returns the thrown error message as a c-style string.
Definition RtMidi.h:98
std::string message_
Definition RtMidi.h:101
RtMidiError(const std::string &message, Type type=RtMidiError::UNSPECIFIED)
The constructor.
Definition RtMidi.h:83
virtual void openVirtualPort(const std::string &portName=std::string("RtMidi"))=0
Pure virtual openVirtualPort() function.
virtual void closePort(void)=0
Pure virtual closePort() function.
virtual void openPort(unsigned int portNumber=0, const std::string &portName=std::string("RtMidi"))=0
Pure virtual openPort() function.
virtual bool isPortOpen(void) const =0
Returns true if a port is open and false if not.
virtual std::string getPortName(unsigned int portNumber=0)=0
Pure virtual getPortName() function.
virtual unsigned int getPortCount()=0
Pure virtual getPortCount() function.
virtual void setErrorCallback(RtMidiErrorCallback errorCallback=NULL, void *userData=0)=0
Set an error callback function to be invoked when an error has occured.
RtMidi()
Definition RtMidi.cpp:57
Api
MIDI API specifier arguments.
Definition RtMidi.h:122
@ UNIX_JACK
Definition RtMidi.h:126
@ LINUX_ALSA
Definition RtMidi.h:125
@ MACOSX_CORE
Definition RtMidi.h:124
@ UNSPECIFIED
Definition RtMidi.h:123
@ RTMIDI_DUMMY
Definition RtMidi.h:128
@ WINDOWS_MM
Definition RtMidi.h:127
MidiApi * rtapi_
Definition RtMidi.h:176
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.
Definition RtMidi.cpp:127
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:582
void openMidiApi(RtMidi::Api api, const std::string &clientName, unsigned int queueSizeLimit)
Definition RtMidi.cpp:100
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:573
void closePort(void)
Close an open MIDI connection (if one exists).
Definition RtMidi.h:575
unsigned int getPortCount()
Return the number of available MIDI input ports.
Definition RtMidi.h:579
RtMidi::Api getCurrentApi(void)
Returns the MIDI API specifier for the current instance of RtMidiIn.
Definition RtMidi.h:572
void setCallback(RtMidiCallback callback, void *userData=0)
Set a callback function to be invoked for incoming MIDI messages.
Definition RtMidi.h:577
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:574
virtual bool isPortOpen() const
Returns true if a port is open and false if not.
Definition RtMidi.h:576
void(* RtMidiCallback)(double timeStamp, std::vector< unsigned char > *message, void *userData)
User callback function type definition.
Definition RtMidi.h:216
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:583
void cancelCallback()
Cancel use of the current callback function (if one exists).
Definition RtMidi.h:578
std::string getPortName(unsigned int portNumber=0)
Return a string identifier for the specified MIDI input port number.
Definition RtMidi.h:580
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:581
unsigned int getPortCount(void)
Return the number of available MIDI output ports.
Definition RtMidi.h:590
void sendMessage(const std::vector< unsigned char > *message)
Immediately send a single message out an open MIDI output port.
Definition RtMidi.h:592
void openPort(unsigned int portNumber=0, const std::string &portName=std::string("RtMidi Output"))
Open a MIDI output connection.
Definition RtMidi.h:586
RtMidi::Api getCurrentApi(void)
Returns the MIDI API specifier for the current instance of RtMidiOut.
Definition RtMidi.h:585
void closePort(void)
Close an open MIDI connection (if one exists).
Definition RtMidi.h:588
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:587
RtMidiOut(RtMidi::Api api=UNSPECIFIED, const std::string &clientName="RtMidi Output Client")
Default constructor that allows an optional client name.
Definition RtMidi.cpp:195
virtual bool isPortOpen() const
Returns true if a port is open and false if not.
Definition RtMidi.h:589
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:594
std::string getPortName(unsigned int portNumber=0)
Return a string identifier for the specified MIDI port type and number.
Definition RtMidi.h:591
void openMidiApi(RtMidi::Api api, const std::string &clientName)
Definition RtMidi.cpp:168
#define true
Definition ordinals.h:82
#define false
Definition ordinals.h:83
std::vector< unsigned char > bytes
Definition RtMidi.h:507
double timeStamp
Time in seconds elapsed since the previous message.
Definition RtMidi.h:510
MidiMessage()
Definition RtMidi.h:513
MidiMessage * ring
Definition RtMidi.h:521
unsigned int ringSize
Definition RtMidi.h:520
unsigned int back
Definition RtMidi.h:519
MidiQueue()
Definition RtMidi.h:524
unsigned int front
Definition RtMidi.h:518
void * apiData
Definition RtMidi.h:540
unsigned char ignoreFlags
Definition RtMidi.h:537
void * userData
Definition RtMidi.h:543
bool doInput
Definition RtMidi.h:538
bool continueSysex
Definition RtMidi.h:544
MidiMessage message
Definition RtMidi.h:536
bool firstMessage
Definition RtMidi.h:539
MidiQueue queue
Definition RtMidi.h:535
RtMidiIn::RtMidiCallback userCallback
Definition RtMidi.h:542
RtMidiInData()
Definition RtMidi.h:547
bool usingCallback
Definition RtMidi.h:541
RECT const char void(* callback)(const char *droppath))) SWELL_API_DEFINE(BOOL
Definition swell-functions.h:1004
#define void
Definition unzip.h:396