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_*/
Represents a single sheet of paper in the document.
Definition: sheet.h:22
QVector< QByteArray > trackChunks
Definition: midiexport.h:67
int midiTrackCount
Definition: midiexport.h:63
QByteArray trackChunk
Definition: midiexport.h:64
QByteArray trackEnd(void)
Definition: midiexport.cpp:201
void setCurSheet(CASheet *sheet)
Definition: midiexport.h:89
QByteArray keySignature(void)
void exportDocumentImpl(CADocument *doc)
Definition: midiexport.cpp:224
Midi file export filter This class is used to export the document or parts of the document to a midi ...
Definition: midiexport.h:32
CAVoice * _curVoice
Definition: midiexport.h:96
void setCurVoice(CAVoice *voice)
Definition: midiexport.h:88
Class which represents a voice in the staff.
Definition: voice.h:23
CASheet * _curSheet
Definition: midiexport.h:97
void sendMetaEvent(int timeLength, int event, int a, int b, int c)
Definition: midiexport.cpp:77
Class which represents the current document.
Definition: document.h:19
Canorus<->Midi bridge.
Definition: mididevice.h:22
QByteArray textEvent(int time, QString s)
Definition: midiexport.cpp:211
QByteArray word16(int x)
Definition: midiexport.cpp:139
void streamQByteArray(QByteArray x)
Definition: midiexport.cpp:354
Base class for export filters.
Definition: export.h:22
int timeIncrement(int time)
Definition: midiexport.cpp:54
void writeFile()
Definition: midiexport.cpp:318
QMap< int, QString > m_OutputPorts
Definition: midiexport.h:101
QByteArray timeSignature(void)
QMap< int, QString > getOutputPorts()
Definition: midiexport.h:41
void send(QVector< unsigned char > message, int time)
Definition: midiexport.cpp:64
QMap< int, QString > getInputPorts()
Definition: midiexport.h:42
QByteArray variableLengthValue(int value)
Definition: midiexport.cpp:148
QByteArray writeTime(int time)
Definition: midiexport.cpp:175
int _trackTime
Definition: midiexport.h:66
void setChunkLength(QByteArray *x)
Definition: midiexport.cpp:346
void exportSheetImpl(CASheet *sheet)
Definition: midiexport.cpp:272
void closeOutputPort()
Definition: midiexport.h:46
CAMidiExport(QTextStream *out=0)
Definition: midiexport.cpp:44
bool openOutputPort(int port)
Definition: midiexport.h:44
QTextStream & out()
Definition: export.h:71
QMap< int, QString > m_InputPorts
Definition: midiexport.h:100
bool openInputPort(int port)
Definition: midiexport.h:45
QVector< int > trackTimes
Definition: midiexport.h:68
void closeInputPort()
Definition: midiexport.h:47