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 
17 #include "score/playablelength.h"
18 #include "score/diatonicpitch.h"
19 #include "import/import.h"
20 
21 class CADocument;
22 class CASheet;
23 class CAStaff;
24 class CAClef;
25 class CAKeySignature;
26 class CATimeSignature;
27 class CATempo;
28 
29 class CAMusicXmlImport: public CAImport, private QXmlStreamReader {
30 public:
31  CAMusicXmlImport( QTextStream *stream=0 );
32  CAMusicXmlImport( const QString stream );
33  virtual ~CAMusicXmlImport();
34 
35  const QString readableStatus();
36 
37 protected:
39 
40 private:
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_ */
Represents a single sheet of paper in the document.
Definition: sheet.h:22
Tempo mark.
Definition: tempo.h:14
Definition: musicxmlimport.h:29
CADocument * importDocumentImpl()
Definition: musicxmlimport.cpp:70
int _tempoBpm
Definition: musicxmlimport.h:71
Definition: clef.h:18
QHash< QString, int > _midiChannel
Definition: musicxmlimport.h:67
Represents a key signature sign in the staff.
Definition: keysignature.h:19
QHash< QString, QHash< int, CAKeySignature * > > _partMapKeySig
Definition: musicxmlimport.h:65
void addStavesIfNeeded(QString partId, int staves)
Definition: musicxmlimport.cpp:568
QTextStream * stream()
Definition: file.h:36
void readAttributes(QString partId)
Definition: musicxmlimport.cpp:307
Class which represents a voice in the staff.
Definition: voice.h:23
Represents a time signature in the staff.
Definition: timesignature.h:18
void readSound(QString partId)
Definition: musicxmlimport.cpp:555
Class which represents the current document.
Definition: document.h:19
void readHeader()
Definition: musicxmlimport.cpp:121
CADocument * _document
Definition: musicxmlimport.h:61
void readPartList()
Definition: musicxmlimport.cpp:219
Base class for import filters.
Definition: import.h:20
QString _musicXmlVersion
Definition: musicxmlimport.h:59
CAVoice * addVoiceIfNeeded(QString partId, int staff, int voice)
Definition: musicxmlimport.cpp:591
QHash< QString, int > _divisions
Definition: musicxmlimport.h:70
QHash< QString, QString > _partName
Definition: musicxmlimport.h:69
QHash< QString, QHash< int, CAVoice * > > _partMapVoice
Definition: musicxmlimport.h:62
void readWork()
Definition: musicxmlimport.cpp:176
const QString readableStatus()
Definition: musicxmlimport.cpp:113
void readIdentification()
Definition: musicxmlimport.cpp:199
void readDefaults()
Definition: musicxmlimport.cpp:190
void readScorePartwise()
Definition: musicxmlimport.cpp:129
QHash< QString, QHash< int, CATimeSignature * > > _partMapTimeSig
Definition: musicxmlimport.h:66
QHash< QString, int > _midiProgram
Definition: musicxmlimport.h:68
virtual ~CAMusicXmlImport()
Definition: musicxmlimport.cpp:58
QHash< QString, QHash< int, CAClef * > > _partMapClef
Definition: musicxmlimport.h:64
void readForward(QString partId, int)
Definition: musicxmlimport.cpp:629
void readPart()
Definition: musicxmlimport.cpp:248
Represents a staff in the sheet.
Definition: staff.h:25
void readMeasure(QString partId)
Definition: musicxmlimport.cpp:269
void initMusicXmlImport()
Definition: musicxmlimport.cpp:61
CAMusicXmlImport(QTextStream *stream=0)
Definition: musicxmlimport.cpp:48
void readNote(QString partId, int)
Definition: musicxmlimport.cpp:404
QHash< QString, QList< CAStaff * > > _partMapStaff
Definition: musicxmlimport.h:63
void readScoreTimewise()
Definition: musicxmlimport.cpp:168