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