LMMS
Loading...
Searching...
No Matches
RtMidi.h
Go to the documentation of this file.
1/**********************************************************************/
37/**********************************************************************/
38
42
43#ifndef RTMIDI_H
44#define RTMIDI_H
45
46#define RTMIDI_DLL_PUBLIC
47#define RTMIDI_VERSION "3.0.0"
48
49#include <exception>
50#include <iostream>
51#include <string>
52#include <vector>
53
54/************************************************************************/
62/************************************************************************/
63
64class RTMIDI_DLL_PUBLIC RtMidiError : public std::exception
65{
66 public:
81
84
86 virtual ~RtMidiError( void ) throw() {}
87
89 virtual void printMessage( void ) const throw() { std::cerr << '\n' << message_ << "\n\n"; }
90
92 virtual const Type& getType(void) const throw() { return type_; }
93
95 virtual const std::string& getMessage(void) const throw() { return message_; }
96
98 virtual const char* what( void ) const throw() { return message_.c_str(); }
99
100 protected:
101 std::string message_;
103};
104
106
113typedef void (*RtMidiErrorCallback)( RtMidiError::Type type, const std::string &errorText, void *userData );
114
115class MidiApi;
116
118{
119 public:
120
130
132 static std::string getVersion( void ) throw();
133
135
140 static void getCompiledApi( std::vector<RtMidi::Api> &apis ) throw();
141
143 virtual void openPort( unsigned int portNumber = 0, const std::string &portName = std::string( "RtMidi" ) ) = 0;
144
146 virtual void openVirtualPort( const std::string &portName = std::string( "RtMidi" ) ) = 0;
147
149 virtual unsigned int getPortCount() = 0;
150
152 virtual std::string getPortName( unsigned int portNumber = 0 ) = 0;
153
155 virtual void closePort( void ) = 0;
156
158
162 virtual bool isPortOpen( void ) const = 0;
163
165
169 virtual void setErrorCallback( RtMidiErrorCallback errorCallback = NULL, void *userData = 0 ) = 0;
170
171 protected:
172
173 RtMidi();
174 virtual ~RtMidi();
175
177};
178
179/**********************************************************************/
195/**********************************************************************/
196
197// **************************************************************** //
198//
199// RtMidiIn and RtMidiOut class declarations.
200//
201// RtMidiIn / RtMidiOut are "controllers" used to select an available
202// MIDI input or output interface. They present common APIs for the
203// user to call but all functionality is implemented by the classes
204// MidiInApi, MidiOutApi and their subclasses. RtMidiIn and RtMidiOut
205// each create an instance of a MidiInApi or MidiOutApi subclass based
206// on the user's API choice. If no choice is made, they attempt to
207// make a "logical" API selection.
208//
209// **************************************************************** //
210
212{
213 public:
214
216 typedef void (*RtMidiCallback)( double timeStamp, std::vector<unsigned char> *message, void *userData);
217
219
237 const std::string& clientName = "RtMidi Input Client",
238 unsigned int queueSizeLimit = 100 );
239
241 ~RtMidiIn ( void ) throw();
242
244 RtMidi::Api getCurrentApi( void ) throw();
245
247
252 void openPort( unsigned int portNumber = 0, const std::string &portName = std::string( "RtMidi Input" ) );
253
255
264 void openVirtualPort( const std::string &portName = std::string( "RtMidi Input" ) );
265
267
277 void setCallback( RtMidiCallback callback, void *userData = 0 );
278
280
284 void cancelCallback();
285
287 void closePort( void );
288
290
294 virtual bool isPortOpen() const;
295
297
300 unsigned int getPortCount();
301
303
308 std::string getPortName( unsigned int portNumber = 0 );
309
311
318 void ignoreTypes( bool midiSysex = true, bool midiTime = true, bool midiSense = true );
319
321
328 double getMessage( std::vector<unsigned char> *message );
329
331
335 virtual void setErrorCallback( RtMidiErrorCallback errorCallback = NULL, void *userData = 0 );
336
337 protected:
338 void openMidiApi( RtMidi::Api api, const std::string &clientName, unsigned int queueSizeLimit );
339
340};
341
342/**********************************************************************/
356/**********************************************************************/
357
359{
360 public:
361
363
371 const std::string& clientName = "RtMidi Output Client" );
372
374 ~RtMidiOut( void ) throw();
375
377 RtMidi::Api getCurrentApi( void ) throw();
378
380
386 void openPort( unsigned int portNumber = 0, const std::string &portName = std::string( "RtMidi Output" ) );
387
389 void closePort( void );
390
392
396 virtual bool isPortOpen() const;
397
399
407 void openVirtualPort( const std::string &portName = std::string( "RtMidi Output" ) );
408
410 unsigned int getPortCount( void );
411
413
418 std::string getPortName( unsigned int portNumber = 0 );
419
421
425 void sendMessage( const std::vector<unsigned char> *message );
426
428
435 void sendMessage( const unsigned char *message, size_t size );
436
438
442 virtual void setErrorCallback( RtMidiErrorCallback errorCallback = NULL, void *userData = 0 );
443
444 protected:
445 void openMidiApi( RtMidi::Api api, const std::string &clientName );
446};
447
448
449// **************************************************************** //
450//
451// MidiInApi / MidiOutApi class declarations.
452//
453// Subclasses of MidiInApi and MidiOutApi contain all API- and
454// OS-specific code necessary to fully implement the RtMidi API.
455//
456// Note that MidiInApi and MidiOutApi are abstract base classes and
457// cannot be explicitly instantiated. RtMidiIn and RtMidiOut will
458// create instances of a MidiInApi or MidiOutApi subclass.
459//
460// **************************************************************** //
461
463{
464 public:
465
466 MidiApi();
467 virtual ~MidiApi();
468 virtual RtMidi::Api getCurrentApi( void ) = 0;
469 virtual void openPort( unsigned int portNumber, const std::string &portName ) = 0;
470 virtual void openVirtualPort( const std::string &portName ) = 0;
471 virtual void closePort( void ) = 0;
472
473 virtual unsigned int getPortCount( void ) = 0;
474 virtual std::string getPortName( unsigned int portNumber ) = 0;
475
476 inline bool isPortOpen() const { return connected_; }
477 void setErrorCallback( RtMidiErrorCallback errorCallback, void *userData );
478
480 void error( RtMidiError::Type type, std::string errorString );
481
482protected:
483 virtual void initialize( const std::string& clientName ) = 0;
484
485 void *apiData_;
487 std::string errorString_;
491};
492
494{
495 public:
496
497 MidiInApi( unsigned int queueSizeLimit );
498 virtual ~MidiInApi( void );
499 void setCallback( RtMidiIn::RtMidiCallback callback, void *userData );
500 void cancelCallback( void );
501 virtual void ignoreTypes( bool midiSysex, bool midiTime, bool midiSense );
502 double getMessage( std::vector<unsigned char> *message );
503
504 // A MIDI structure used internally by the class to store incoming
505 // messages. Each message represents one and only one MIDI message.
506 struct MidiMessage {
507 std::vector<unsigned char> bytes;
508
510 double timeStamp;
511
512 // Default constructor.
514 :bytes(0), timeStamp(0.0) {}
515 };
516
517 struct MidiQueue {
518 unsigned int front;
519 unsigned int back;
520 unsigned int ringSize;
522
523 // Default constructor.
525 :front(0), back(0), ringSize(0), ring(0) {}
526 bool push(const MidiMessage&);
527 bool pop(std::vector<unsigned char>*, double*);
528 unsigned int size(unsigned int *back=0,
529 unsigned int *front=0);
530 };
531
532 // The RtMidiInData structure is used to pass private class data to
533 // the MIDI input handling function or thread.
552
553 protected:
555};
556
558{
559 public:
560
561 MidiOutApi( void );
562 virtual ~MidiOutApi( void );
563 virtual void sendMessage( const unsigned char *message, size_t size ) = 0;
564};
565
566// **************************************************************** //
567//
568// Inline RtMidiIn and RtMidiOut definitions.
569//
570// **************************************************************** //
571
572inline RtMidi::Api RtMidiIn :: getCurrentApi( void ) throw() { return rtapi_->getCurrentApi(); }
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(); }
577inline void RtMidiIn :: setCallback( RtMidiCallback callback, void *userData ) { ((MidiInApi *)rtapi_)->setCallback( callback, userData ); }
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 ); }
582inline double RtMidiIn :: getMessage( std::vector<unsigned char> *message ) { return ((MidiInApi *)rtapi_)->getMessage( message ); }
583inline void RtMidiIn :: setErrorCallback( RtMidiErrorCallback errorCallback, void *userData ) { rtapi_->setErrorCallback(errorCallback, userData); }
584
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 ); }
592inline void RtMidiOut :: sendMessage( const std::vector<unsigned char> *message ) { ((MidiOutApi *)rtapi_)->sendMessage( &message->at(0), message->size() ); }
593inline void RtMidiOut :: sendMessage( const unsigned char *message, size_t size ) { ((MidiOutApi *)rtapi_)->sendMessage( message, size ); }
594inline void RtMidiOut :: setErrorCallback( RtMidiErrorCallback errorCallback, void *userData ) { rtapi_->setErrorCallback(errorCallback, userData); }
595
596// **************************************************************** //
597//
598// MidiInApi and MidiOutApi subclass prototypes.
599//
600// **************************************************************** //
601
602#if !defined(__LINUX_ALSA__) && !defined(__UNIX_JACK__) && !defined(__MACOSX_CORE__) && !defined(__WINDOWS_MM__)
603 #define __RTMIDI_DUMMY__
604#endif
605
606#if defined(__MACOSX_CORE__)
607
608class MidiInCore: public MidiInApi
609{
610 public:
611 MidiInCore( const std::string &clientName, unsigned int queueSizeLimit );
612 ~MidiInCore( void );
614 void openPort( unsigned int portNumber, const std::string &portName );
615 void openVirtualPort( const std::string &portName );
616 void closePort( void );
617 unsigned int getPortCount( void );
618 std::string getPortName( unsigned int portNumber );
619
620 protected:
621 void initialize( const std::string& clientName );
622};
623
624class MidiOutCore: public MidiOutApi
625{
626 public:
627 MidiOutCore( const std::string &clientName );
628 ~MidiOutCore( void );
630 void openPort( unsigned int portNumber, const std::string &portName );
631 void openVirtualPort( const std::string &portName );
632 void closePort( void );
633 unsigned int getPortCount( void );
634 std::string getPortName( unsigned int portNumber );
635 void sendMessage( const unsigned char *message, size_t size );
636
637 protected:
638 void initialize( const std::string& clientName );
639};
640
641#endif
642
643#if defined(__UNIX_JACK__)
644
645class MidiInJack: public MidiInApi
646{
647 public:
648 MidiInJack( const std::string &clientName, unsigned int queueSizeLimit );
649 ~MidiInJack( void );
650 RtMidi::Api getCurrentApi( void ) { return RtMidi::UNIX_JACK; };
651 void openPort( unsigned int portNumber, const std::string &portName );
652 void openVirtualPort( const std::string &portName );
653 void closePort( void );
654 unsigned int getPortCount( void );
655 std::string getPortName( unsigned int portNumber );
656
657 protected:
658 std::string clientName;
659
660 void connect( void );
661 void initialize( const std::string& clientName );
662};
663
664class MidiOutJack: public MidiOutApi
665{
666 public:
667 MidiOutJack( const std::string &clientName );
668 ~MidiOutJack( void );
669 RtMidi::Api getCurrentApi( void ) { return RtMidi::UNIX_JACK; };
670 void openPort( unsigned int portNumber, const std::string &portName );
671 void openVirtualPort( const std::string &portName );
672 void closePort( void );
673 unsigned int getPortCount( void );
674 std::string getPortName( unsigned int portNumber );
675 void sendMessage( const unsigned char *message, size_t size );
676
677 protected:
678 std::string clientName;
679
680 void connect( void );
681 void initialize( const std::string& clientName );
682};
683
684#endif
685
686#if defined(__LINUX_ALSA__)
687
688class MidiInAlsa: public MidiInApi
689{
690 public:
691 MidiInAlsa( const std::string &clientName, unsigned int queueSizeLimit );
692 ~MidiInAlsa( void );
693 RtMidi::Api getCurrentApi( void ) { return RtMidi::LINUX_ALSA; };
694 void openPort( unsigned int portNumber, const std::string &portName );
695 void openVirtualPort( const std::string &portName );
696 void closePort( void );
697 unsigned int getPortCount( void );
698 std::string getPortName( unsigned int portNumber );
699
700 protected:
701 void initialize( const std::string& clientName );
702};
703
704class MidiOutAlsa: public MidiOutApi
705{
706 public:
707 MidiOutAlsa( const std::string &clientName );
708 ~MidiOutAlsa( void );
709 RtMidi::Api getCurrentApi( void ) { return RtMidi::LINUX_ALSA; };
710 void openPort( unsigned int portNumber, const std::string &portName );
711 void openVirtualPort( const std::string &portName );
712 void closePort( void );
713 unsigned int getPortCount( void );
714 std::string getPortName( unsigned int portNumber );
715 void sendMessage( const unsigned char *message, size_t size );
716
717 protected:
718 void initialize( const std::string& clientName );
719};
720
721#endif
722
723#if defined(__WINDOWS_MM__)
724
725class MidiInWinMM: public MidiInApi
726{
727 public:
728 MidiInWinMM( const std::string &clientName, unsigned int queueSizeLimit );
729 ~MidiInWinMM( void );
730 RtMidi::Api getCurrentApi( void ) { return RtMidi::WINDOWS_MM; };
731 void openPort( unsigned int portNumber, const std::string &portName );
732 void openVirtualPort( const std::string &portName );
733 void closePort( void );
734 unsigned int getPortCount( void );
735 std::string getPortName( unsigned int portNumber );
736
737 protected:
738 void initialize( const std::string& clientName );
739};
740
741class MidiOutWinMM: public MidiOutApi
742{
743 public:
744 MidiOutWinMM( const std::string &clientName );
745 ~MidiOutWinMM( void );
746 RtMidi::Api getCurrentApi( void ) { return RtMidi::WINDOWS_MM; };
747 void openPort( unsigned int portNumber, const std::string &portName );
748 void openVirtualPort( const std::string &portName );
749 void closePort( void );
750 unsigned int getPortCount( void );
751 std::string getPortName( unsigned int portNumber );
752 void sendMessage( const unsigned char *message, size_t size );
753
754 protected:
755 void initialize( const std::string& clientName );
756};
757
758#endif
759
760#if defined(__RTMIDI_DUMMY__)
761
763{
764 public:
765 MidiInDummy( const std::string &/*clientName*/, unsigned int queueSizeLimit ) : MidiInApi( queueSizeLimit ) {}
767 void openPort( unsigned int /*portNumber*/, const std::string &/*portName*/ ) {}
768 void openVirtualPort( const std::string &/*portName*/ ) {}
769 void closePort( void ) {}
770 unsigned int getPortCount( void ) { return 0; }
771 std::string getPortName( unsigned int /*portNumber*/ ) { return ""; }
772
773 protected:
774 void initialize( const std::string& /*clientName*/ ) {}
775};
776
778{
779 public:
780 MidiOutDummy( const std::string &/*clientName*/ ) {}
782 void openPort( unsigned int /*portNumber*/, const std::string &/*portName*/ ) {}
783 void openVirtualPort( const std::string &/*portName*/ ) {}
784 void closePort( void ) {}
785 unsigned int getPortCount( void ) { return 0; }
786 std::string getPortName( unsigned int /*portNumber*/ ) { return ""; }
787 void sendMessage( const unsigned char * /*message*/, size_t /*size*/ ) {}
788
789 protected:
790 void initialize( const std::string& /*clientName*/ ) {}
791};
792
793#endif
794
795#endif
#define NULL
Definition CarlaBridgeFormat.cpp:30
#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
Definition RtMidi.h:463
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
Definition RtMidi.h:494
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
Definition RtMidi.h:558
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
Definition RtMidi.h:506
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
Definition RtMidi.h:517
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
Definition RtMidi.h:534
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
int error
Definition extract.c:1038
ulg size
Definition extract.c:2350
#define void
Definition unzip.h:396