Canorus  0.0
midiexport.h
Go to the documentation of this file.
1 
8 #ifndef MIDIEXPORT_H_
9 #define MIDIEXPORT_H_
10 
11 #include <QTextStream>
12 #include <QString>
13 #include <QList>
14 #include <QVector>
15 #include <QByteArray>
16 
17 #include "score/keysignature.h"
18 #include "score/timesignature.h"
19 #include "score/clef.h"
20 #include "score/barline.h"
21 #include "score/note.h"
22 #include "score/rest.h"
23 #include "score/document.h"
24 #include "score/lyricscontext.h"
25 #include "score/syllable.h"
26 
27 #include "export/export.h"
28 #include "interface/mididevice.h"
29 #include "interface/playback.h"
30 
31 
32 class CAMidiExport : public CAExport, public CAMidiDevice {
33 public:
34  CAMidiExport( QTextStream *out=0 );
35 
36 /*
38  // Interface to file export //
40 */
41  QMap<int, QString> getOutputPorts() { return m_InputPorts; }
42  QMap<int, QString> getInputPorts() { return m_OutputPorts; }
43 
44  bool openOutputPort(int port) { return true; } // return true on success, false otherwise
45  bool openInputPort(int port) { return true; } // return true on success, false otherwise
46  void closeOutputPort() { }
47  void closeInputPort() { }
48  void send(QVector<unsigned char> message, int time);
49  void sendMetaEvent(int timeLength, int event, int a, int b, int c);
50  void writeFile(); // direct access to the writing
51 
52 /*
54  // Polling export status //
56  // Setter methods are private!
57 */
58 
59 private:
60  QByteArray writeTime(int time);
61  void exportDocumentImpl(CADocument *doc);
62  void exportSheetImpl(CASheet *sheet);
64  QByteArray trackChunk; // for the time beeing we build one big track
65  int timeIncrement(int time);
66  int _trackTime; // which this is the time line for
67  QVector<QByteArray> trackChunks; // for the future
68  QVector<int> trackTimes;
69  void streamQByteArray( QByteArray x ); // streaming binary data to midi file, possibly with print for debugging
70  QByteArray variableLengthValue(int value);
71  QByteArray word16(int x);
72  QByteArray textEvent(int time, QString s);
73  QByteArray trackEnd(void);
74  QByteArray timeSignature(void);
75  QByteArray keySignature(void);
76  void setChunkLength( QByteArray *x );
77 
78 /*
79 
81  // Helper methods //
83 
85  // Getter/Setter methods //
87 */
88  inline void setCurVoice(CAVoice *voice) { _curVoice = voice; }
89  inline void setCurSheet(CASheet *sheet) { _curSheet = sheet; }
90 /*
92  // Members //
94  QTextStream *_out;
95 */
98 
99  // Dummy members for getOutputPorts/getInputPorts
100  QMap<int, QString> m_InputPorts;
101  QMap<int, QString> m_OutputPorts;
102 
103 /*
104  CAContext *_curContext;
105  int _curContextIndex;
106  int _curIndentLevel;
107 */
108 };
109 
110 #endif /* MIDIEXPORT_H_*/
rest.h
CAMidiExport::setCurVoice
void setCurVoice(CAVoice *voice)
Definition: midiexport.h:88
CAMidiExport::_curVoice
CAVoice * _curVoice
Definition: midiexport.h:96
CAStaff::voiceList
const QList< CAVoice * > & voiceList()
Definition: staff.h:35
CAMidiExport::openInputPort
bool openInputPort(int port)
Definition: midiexport.h:45
CAContext::Staff
@ Staff
Definition: context.h:23
CAPlayback
Audio playback of the score. This class creates playback events (usually MIDI events) for the music e...
Definition: playback.h:21
note.h
CAMidiExport
Midi file export filter This class is used to export the document or parts of the document to a midi ...
Definition: midiexport.h:32
CAMidiExport::streamQByteArray
void streamQByteArray(QByteArray x)
Definition: midiexport.cpp:354
CAMidiExport::m_InputPorts
QMap< int, QString > m_InputPorts
Definition: midiexport.h:100
META_TRACK_END
#define META_TRACK_END
Definition: midiexport.cpp:129
CAMidiExport::trackTimes
QVector< int > trackTimes
Definition: midiexport.h:68
CADocument
Class which represents the current document.
Definition: document.h:19
CAMidiDevice::Meta_Timesig
@ Meta_Timesig
Definition: mididevice.h:46
CAVoice
Class which represents a voice in the staff.
Definition: voice.h:23
document.h
CAMidiDevice::MidiExportDevice
@ MidiExportDevice
Definition: mididevice.h:31
CAMidiExport::writeFile
void writeFile()
Definition: midiexport.cpp:318
CAMidiExport::trackEnd
QByteArray trackEnd(void)
Definition: midiexport.cpp:201
CAMidiExport::word16
QByteArray word16(int x)
Definition: midiexport.cpp:139
midiexport.h
CAMidiDevice::_midiDeviceType
CAMidiDeviceType _midiDeviceType
Definition: mididevice.h:94
CAMidiExport::trackChunks
QVector< QByteArray > trackChunks
Definition: midiexport.h:67
CAMidiExport::midiTrackCount
int midiTrackCount
Definition: midiexport.h:63
CAMidiDevice::Meta_Tempo
@ Meta_Tempo
Definition: mididevice.h:44
CAMidiExport::writeTime
QByteArray writeTime(int time)
Definition: midiexport.cpp:175
CAMidiExport::timeSignature
QByteArray timeSignature(void)
CAMidiExport::getOutputPorts
QMap< int, QString > getOutputPorts()
Definition: midiexport.h:41
CAMidiExport::sendMetaEvent
void sendMetaEvent(int timeLength, int event, int a, int b, int c)
Definition: midiexport.cpp:77
CAMidiExport::textEvent
QByteArray textEvent(int time, QString s)
Definition: midiexport.cpp:211
playback.h
CAMidiExport::variableLengthValue
QByteArray variableLengthValue(int value)
Definition: midiexport.cpp:148
CAMidiExport::_curSheet
CASheet * _curSheet
Definition: midiexport.h:97
keysignature.h
CAMidiDevice::Meta_Keysig
@ Meta_Keysig
Definition: mididevice.h:47
CAPlayableLength::Quarter
@ Quarter
Definition: playablelength.h:23
syllable.h
CAMidiExport::openOutputPort
bool openOutputPort(int port)
Definition: midiexport.h:44
CAMidiDevice
Canorus<->Midi bridge.
Definition: mididevice.h:22
CADocument::sheetList
const QList< CASheet * > & sheetList()
Definition: document.h:26
CAContext::FunctionMarkContext
@ FunctionMarkContext
Definition: context.h:25
CAStaff
Represents a staff in the sheet.
Definition: staff.h:25
CAMidiExport::m_OutputPorts
QMap< int, QString > m_OutputPorts
Definition: midiexport.h:101
CAPlayableLength::playableLengthToTimeLength
static const int playableLengthToTimeLength(CAPlayableLength length)
Definition: playablelength.cpp:107
CACanorus
Definition: canorus.h:30
CAMidiExport::timeIncrement
int timeIncrement(int time)
Definition: midiexport.cpp:54
CAMidiExport::exportSheetImpl
void exportSheetImpl(CASheet *sheet)
Definition: midiexport.cpp:272
CASheet::contextList
const QList< CAContext * > & contextList()
Definition: sheet.h:29
CAMidiExport::send
void send(QVector< unsigned char > message, int time)
Definition: midiexport.cpp:64
CAMidiExport::closeInputPort
void closeInputPort()
Definition: midiexport.h:47
META_TEXT
#define META_TEXT
Definition: midiexport.cpp:125
sheet.h
CAMidiExport::_trackTime
int _trackTime
Definition: midiexport.h:66
CAMidiExport::getInputPorts
QMap< int, QString > getInputPorts()
Definition: midiexport.h:42
CAMidiExport::setChunkLength
void setChunkLength(QByteArray *x)
Definition: midiexport.cpp:346
timesignature.h
barline.h
CAMidiDevice::setRealTime
void setRealTime(bool r)
Definition: mididevice.h:92
CAContext::FiguredBassContext
@ FiguredBassContext
Definition: context.h:26
mididevice.h
CAContext::LyricsContext
@ LyricsContext
Definition: context.h:24
CAMidiExport::closeOutputPort
void closeOutputPort()
Definition: midiexport.h:46
CAMidiExport::CAMidiExport
CAMidiExport(QTextStream *out=0)
Definition: midiexport.cpp:44
voice.h
clef.h
CAPlayback::run
void run()
Definition: playback.cpp:120
CASheet
Represents a single sheet of paper in the document.
Definition: sheet.h:22
CAMidiExport::keySignature
QByteArray keySignature(void)
CAMidiExport::setCurSheet
void setCurSheet(CASheet *sheet)
Definition: midiexport.h:89
CAMidiExport::exportDocumentImpl
void exportDocumentImpl(CADocument *doc)
Definition: midiexport.cpp:224
MIDI_CTL_EVENT
#define MIDI_CTL_EVENT
Definition: midiexport.cpp:131
staff.h
CAExport::out
QTextStream & out()
Definition: export.h:71
lyricscontext.h
CAExport
Base class for export filters.
Definition: export.h:22
CAMidiExport::trackChunk
QByteArray trackChunk
Definition: midiexport.h:64
CAMidiDevice::Midi_Ctl_Event
@ Midi_Ctl_Event
Definition: mididevice.h:55
export.h