Canorus  0.7
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
mididevice.h
Go to the documentation of this file.
1 
8 #ifndef MIDIDEVICE_H_
9 #define MIDIDEVICE_H_
10 
11 #include <QStringList>
12 #include <QVector>
13 #include <QMap>
14 #include <QString>
15 #include <QObject>
16 
17 #include "core/diatonicpitch.h"
18 
19 class CASheet;
20 class CADiatonicKey;
21 
22 class CAMidiDevice : public QObject {
23 #ifndef SWIG
24  Q_OBJECT
25 #endif
26 
27  friend void rtMidiInCallback( double deltatime, std::vector< unsigned char > *message, void *userData );
28 public:
32  };
33 
34  CAMidiDevice();
35 
36  enum midiCommands {
37  Meta_Text = 0x01,
41  Meta_Lyric = 0x05,
42  Meta_Marker = 0x06,
43  Meta_CuePoint = 0x07,
44  Meta_Tempo = 0x51, // len=03 tt tt tt microseconds per midi quarter note
45  Meta_SMPTEOffs = 0x54, // len=05 hr mn se fr ff SMPTE Offset
46  Meta_Timesig = 0x58,
47  Meta_Keysig = 0x59,
49 
52  Midi_Ctl_Pan = 0x0a,
56  // Events with midi channel on the low nibble:
57  Midi_Note_Off = 0x80, // 3 byte
58  Midi_Note_On = 0x90,
59  Midi_Prog_Change = 0xc0, // 2 byte
60  Midi_Control_Chg = 0xb0 // 3 byte
61  };
62 
63 
64  QStringList GM_INSTRUMENTS;
65  static unsigned char freeMidiChannel( CASheet* );
66 
67  virtual ~CAMidiDevice() {};
68 
70 
71  bool isRealTime() { return _realTime; }
72  virtual QMap<int, QString> getOutputPorts() = 0;
73  virtual QMap<int, QString> getInputPorts() = 0;
74 
75  virtual bool openOutputPort(int port) = 0; // return true on success, false otherwise
76  virtual bool openInputPort(int port) = 0; // return true on success, false otherwise
77  virtual void closeOutputPort() = 0;
78  virtual void closeInputPort() = 0;
79  virtual void send(QVector<unsigned char> message, int mSeconds=0) = 0; // message and absolute time of the message in miliseconds
80 
81 #ifndef SWIG
82 signals:
83  void midiInEvent( QVector< unsigned char > message );
84 #endif
85 
86 public:
90 
91 protected:
92  void setRealTime( bool r ) { _realTime = r; }
95  bool _realTime; // is the device
96 };
97 
98 #endif /* MIDIDEVICE_H_ */
Represents a single sheet of paper in the document.
Definition: sheet.h:20
void setRealTime(bool r)
Definition: mididevice.h:92
static CADiatonicPitch midiPitchToDiatonicPitch(int)
Definition: mididevice.cpp:209
static unsigned char freeMidiChannel(CASheet *)
Definition: mididevice.cpp:172
void setMidiDeviceType(CAMidiDeviceType t)
Definition: mididevice.h:93
Definition: mididevice.h:47
virtual bool openInputPort(int port)=0
Definition: mididevice.h:39
Definition: mididevice.h:44
CAMidiDevice()
Definition: mididevice.cpp:14
Definition: mididevice.h:50
virtual void send(QVector< unsigned char > message, int mSeconds=0)=0
Canorus<->Midi bridge.
Definition: mididevice.h:22
Definition: mididevice.h:45
Definition: mididevice.h:37
QStringList GM_INSTRUMENTS
Definition: mididevice.h:64
Definition: mididevice.h:59
CAMidiDeviceType midiDeviceType()
Definition: mididevice.h:69
CAMidiDeviceType
Definition: mididevice.h:29
Definition: mididevice.h:53
static int diatonicPitchToMidiPitch(CADiatonicPitch)
Definition: mididevice.cpp:194
Definition: mididevice.h:40
virtual ~CAMidiDevice()
Definition: mididevice.h:67
Musical note pitch.
Definition: diatonicpitch.h:14
Definition: mididevice.h:46
Definition: mididevice.h:58
Definition: mididevice.h:60
Definition: mididevice.h:55
Definition: mididevice.h:54
virtual void closeInputPort()=0
bool _realTime
Definition: mididevice.h:95
Definition: mididevice.h:48
Definition: mididevice.h:30
void midiInEvent(QVector< unsigned char > message)
Definition: mididevice.h:31
Definition: mididevice.h:38
CAMidiDeviceType _midiDeviceType
Definition: mididevice.h:94
Musical key.
Definition: diatonickey.h:15
virtual QMap< int, QString > getOutputPorts()=0
virtual bool openOutputPort(int port)=0
virtual QMap< int, QString > getInputPorts()=0
Definition: mididevice.h:52
bool isRealTime()
Definition: mididevice.h:71
Definition: mididevice.h:51
midiCommands
Definition: mididevice.h:36
Definition: mididevice.h:42
Definition: mididevice.h:41
Definition: mididevice.h:57
friend void rtMidiInCallback(double deltatime, std::vector< unsigned char > *message, void *userData)
Definition: rtmididevice.cpp:93
Definition: mididevice.h:43
virtual void closeOutputPort()=0