Canorus 0.0
musicxmlimport.h
Go to the documentation of this file.
1
8#ifndef MUSICXMLIMPORT_H_
9#define MUSICXMLIMPORT_H_
10
11#include <QXmlStreamReader>
12#include <QString>
13#include <QStack>
14#include <QHash>
15#include <QMultiHash>
16
18#include "score/diatonicpitch.h"
19#include "import/import.h"
20
21class CADocument;
22class CASheet;
23class CAStaff;
24class CAClef;
25class CAKeySignature;
26class CATimeSignature;
27class CATempo;
28
30public:
31 CAMusicXmlImport( QTextStream *stream=0 );
32 CAMusicXmlImport( const QString stream );
33 virtual ~CAMusicXmlImport();
34
35 const QString readableStatus();
36
37protected:
39
40private:
41 void initMusicXmlImport();
42
43 void readHeader();
44 void readScorePartwise();
45 void readScoreTimewise();
46 void readWork();
47 void readIdentification();
48 void readDefaults();
49 void readPartList();
50 void readPart();
51 void readMeasure( QString partId );
52 void readAttributes( QString partId );
53 void readNote( QString partId, int );
54 void readForward( QString partId, int );
55 void readSound( QString partId );
56 CAVoice *addVoiceIfNeeded( QString partId, int staff, int voice );
57 void addStavesIfNeeded( QString partId, int staves );
58
60
62 QHash<QString, QHash<int, CAVoice*> > _partMapVoice; // part name -> map of voice number : voice
63 QHash<QString, QList<CAStaff*> > _partMapStaff; // part name -> list of staffs
64 QHash<QString, QHash<int, CAClef*> > _partMapClef; // part name -> map of staff number : last clef
65 QHash<QString, QHash<int, CAKeySignature*> > _partMapKeySig; // part name -> map of staff number : last keysig
66 QHash<QString, QHash<int, CATimeSignature*> > _partMapTimeSig; // part name -> map of staff number : last timesig
67 QHash<QString, int> _midiChannel; // 1-16
68 QHash<QString, int> _midiProgram; // 1-128
69 QHash<QString, QString> _partName;
70 QHash<QString, int> _divisions; // part name -> divisions
71 int _tempoBpm; // current tempo buffer, append to first found note, set to -1 then
72};
73
74#endif /* MUSICXMLIMPORT_H_ */
Definition: clef.h:18
Class which represents the current document.
Definition: document.h:19
QTextStream * stream()
Definition: file.h:36
Base class for import filters.
Definition: import.h:20
Represents a key signature sign in the staff.
Definition: keysignature.h:19
Definition: musicxmlimport.h:29
void addStavesIfNeeded(QString partId, int staves)
Definition: musicxmlimport.cpp:568
void readScorePartwise()
Definition: musicxmlimport.cpp:129
QHash< QString, QHash< int, CATimeSignature * > > _partMapTimeSig
Definition: musicxmlimport.h:66
QHash< QString, int > _divisions
Definition: musicxmlimport.h:70
CADocument * importDocumentImpl()
Definition: musicxmlimport.cpp:70
void readNote(QString partId, int)
Definition: musicxmlimport.cpp:404
void readScoreTimewise()
Definition: musicxmlimport.cpp:168
QHash< QString, QList< CAStaff * > > _partMapStaff
Definition: musicxmlimport.h:63
void readForward(QString partId, int)
Definition: musicxmlimport.cpp:629
QHash< QString, QHash< int, CAClef * > > _partMapClef
Definition: musicxmlimport.h:64
CADocument * _document
Definition: musicxmlimport.h:61
int _tempoBpm
Definition: musicxmlimport.h:71
void readMeasure(QString partId)
Definition: musicxmlimport.cpp:269
void readIdentification()
Definition: musicxmlimport.cpp:199
CAVoice * addVoiceIfNeeded(QString partId, int staff, int voice)
Definition: musicxmlimport.cpp:591
virtual ~CAMusicXmlImport()
Definition: musicxmlimport.cpp:58
void readAttributes(QString partId)
Definition: musicxmlimport.cpp:307
const QString readableStatus()
Definition: musicxmlimport.cpp:113
void initMusicXmlImport()
Definition: musicxmlimport.cpp:61
QHash< QString, QHash< int, CAKeySignature * > > _partMapKeySig
Definition: musicxmlimport.h:65
void readDefaults()
Definition: musicxmlimport.cpp:190
QHash< QString, QString > _partName
Definition: musicxmlimport.h:69
QHash< QString, int > _midiChannel
Definition: musicxmlimport.h:67
void readPart()
Definition: musicxmlimport.cpp:248
QHash< QString, QHash< int, CAVoice * > > _partMapVoice
Definition: musicxmlimport.h:62
void readWork()
Definition: musicxmlimport.cpp:176
void readHeader()
Definition: musicxmlimport.cpp:121
void readPartList()
Definition: musicxmlimport.cpp:219
CAMusicXmlImport(QTextStream *stream=0)
Definition: musicxmlimport.cpp:48
QHash< QString, int > _midiProgram
Definition: musicxmlimport.h:68
QString _musicXmlVersion
Definition: musicxmlimport.h:59
void readSound(QString partId)
Definition: musicxmlimport.cpp:555
Represents a single sheet of paper in the document.
Definition: sheet.h:22
Represents a staff in the sheet.
Definition: staff.h:25
Tempo mark.
Definition: tempo.h:14
Represents a time signature in the staff.
Definition: timesignature.h:18
Class which represents a voice in the staff.
Definition: voice.h:23