Canorus  0.0
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 "score/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  static QStringList gmInstrumentList() { return CAMidiDevice::GM_INSTRUMENTS; }
65 
66  static QString instrumentName( int midiProgram );
67  static QStringList instrumentNames();
68 
69  static unsigned char freeMidiChannel( CASheet* );
70 
71  virtual ~CAMidiDevice() {};
72 
74 
75  bool isRealTime() { return _realTime; }
76  virtual QMap<int, QString> getOutputPorts() = 0;
77  virtual QMap<int, QString> getInputPorts() = 0;
78 
79  virtual bool openOutputPort(int port) = 0; // return true on success, false otherwise
80  virtual bool openInputPort(int port) = 0; // return true on success, false otherwise
81  virtual void closeOutputPort() = 0;
82  virtual void closeInputPort() = 0;
83  virtual void send(QVector<unsigned char> message, int time) = 0; // message and absolute canorus time (independent of tempo)
84  virtual void sendMetaEvent(int time, int event, int a, int b, int c ) = 0; // absolute time of the meta event which is meant only for midi file export
85 
86 #ifndef SWIG
87 signals:
88  void midiInEvent( QVector< unsigned char > message );
89 #endif
90 
91 protected:
92  void setRealTime( bool r ) { _realTime = r; }
95  bool _realTime; // is the device
96 
97 private:
98  static QStringList GM_INSTRUMENTS;
99 };
100 
101 #endif /* MIDIDEVICE_H_ */
Represents a single sheet of paper in the document.
Definition: sheet.h:22
void setRealTime(bool r)
Definition: mididevice.h:92
static unsigned char freeMidiChannel(CASheet *)
Definition: mididevice.cpp:199
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:165
Definition: mididevice.h:50
static QString instrumentName(int midiProgram)
Definition: mididevice.cpp:175
Canorus<->Midi bridge.
Definition: mididevice.h:22
Definition: mididevice.h:45
Definition: mididevice.h:37
static QStringList GM_INSTRUMENTS
Definition: mididevice.h:98
Definition: mididevice.h:59
CAMidiDeviceType midiDeviceType()
Definition: mididevice.h:73
CAMidiDeviceType
Definition: mididevice.h:29
Definition: mididevice.h:53
Definition: mididevice.h:40
virtual void sendMetaEvent(int time, int event, int a, int b, int c)=0
virtual ~CAMidiDevice()
Definition: mididevice.h:71
virtual void send(QVector< unsigned char > message, int time)=0
static QStringList gmInstrumentList()
Definition: mididevice.h:64
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
static QStringList instrumentNames()
Definition: mididevice.cpp:184
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:75
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:100
Definition: mididevice.h:43
virtual void closeOutputPort()=0