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
19class CASheet;
20class CADiatonicKey;
21
22class 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 );
28public:
32 };
33
35
37 Meta_Text = 0x01,
41 Meta_Lyric = 0x05,
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
49
56 // Events with midi channel on the low nibble:
57 Midi_Note_Off = 0x80, // 3 byte
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
87signals:
88 void midiInEvent( QVector< unsigned char > message );
89#endif
90
91protected:
92 void setRealTime( bool r ) { _realTime = r; }
95 bool _realTime; // is the device
96
97private:
98 static QStringList GM_INSTRUMENTS;
99};
100
101#endif /* MIDIDEVICE_H_ */
Musical key.
Definition: diatonickey.h:15
Canorus<->Midi bridge.
Definition: mididevice.h:22
midiCommands
Definition: mididevice.h:36
@ Midi_Note_On
Definition: mididevice.h:58
@ Midi_Note_Off
Definition: mididevice.h:57
@ Meta_Copyright
Definition: mididevice.h:38
@ Meta_Timesig
Definition: mididevice.h:46
@ Midi_Control_Chg
Definition: mididevice.h:60
@ Meta_Keysig
Definition: mididevice.h:47
@ Midi_Ctl_Reverb
Definition: mididevice.h:50
@ Midi_Prog_Change
Definition: mididevice.h:59
@ Meta_SMPTEOffs
Definition: mididevice.h:45
@ Midi_Ctl_Sustain
Definition: mididevice.h:54
@ Meta_Tempo
Definition: mididevice.h:44
@ Meta_Lyric
Definition: mididevice.h:41
@ Midi_Ctl_Pan
Definition: mididevice.h:52
@ Midi_Ctl_Event
Definition: mididevice.h:55
@ Meta_CuePoint
Definition: mididevice.h:43
@ Midi_Ctl_Chorus
Definition: mididevice.h:51
@ Midi_Ctl_Volume
Definition: mididevice.h:53
@ Meta_SeqTrkName
Definition: mididevice.h:39
@ Meta_Marker
Definition: mididevice.h:42
@ Meta_Text
Definition: mididevice.h:37
@ Meta_InstrName
Definition: mididevice.h:40
@ Meta_Track_End
Definition: mididevice.h:48
virtual QMap< int, QString > getOutputPorts()=0
CAMidiDeviceType midiDeviceType()
Definition: mididevice.h:73
virtual QMap< int, QString > getInputPorts()=0
virtual void closeInputPort()=0
bool _realTime
Definition: mididevice.h:95
virtual bool openOutputPort(int port)=0
CAMidiDeviceType
Definition: mididevice.h:29
@ MidiExportDevice
Definition: mididevice.h:31
@ RtMidiDevice
Definition: mididevice.h:30
virtual void send(QVector< unsigned char > message, int time)=0
virtual bool openInputPort(int port)=0
void midiInEvent(QVector< unsigned char > message)
virtual ~CAMidiDevice()
Definition: mididevice.h:71
void setMidiDeviceType(CAMidiDeviceType t)
Definition: mididevice.h:93
virtual void sendMetaEvent(int time, int event, int a, int b, int c)=0
CAMidiDeviceType _midiDeviceType
Definition: mididevice.h:94
CAMidiDevice()
Definition: mididevice.cpp:165
static QStringList gmInstrumentList()
Definition: mididevice.h:64
static QString instrumentName(int midiProgram)
Definition: mididevice.cpp:175
friend void rtMidiInCallback(double deltatime, std::vector< unsigned char > *message, void *userData)
Definition: rtmididevice.cpp:100
static QStringList instrumentNames()
Definition: mididevice.cpp:184
static QStringList GM_INSTRUMENTS
Definition: mididevice.h:98
void setRealTime(bool r)
Definition: mididevice.h:92
virtual void closeOutputPort()=0
static unsigned char freeMidiChannel(CASheet *)
Definition: mididevice.cpp:199
bool isRealTime()
Definition: mididevice.h:75
Represents a single sheet of paper in the document.
Definition: sheet.h:22