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_ */
CAMusicXmlImport::readForward
void readForward(QString partId, int)
Definition: musicxmlimport.cpp:629
CASlur::SlurPreferred
@ SlurPreferred
Definition: slur.h:24
CAMusicXmlImport::addVoiceIfNeeded
CAVoice * addVoiceIfNeeded(QString partId, int staff, int voice)
Definition: musicxmlimport.cpp:591
rest.h
CADocument::setPoet
void setPoet(const QString poet)
Definition: document.h:54
CADiatonicKey::genderFromString
static CAGender genderFromString(const QString)
Definition: diatonickey.cpp:129
CAMusicXmlImport::_midiProgram
QHash< QString, int > _midiProgram
Definition: musicxmlimport.h:68
CAStaff::voiceList
const QList< CAVoice * > & voiceList()
Definition: staff.h:35
CADocument::setTitle
void setTitle(const QString title)
Definition: document.h:50
CARest
Represents a rest in the score.
Definition: rest.h:15
CAMusicXmlImport::readIdentification
void readIdentification()
Definition: musicxmlimport.cpp:199
note.h
CAClef::Treble
@ Treble
Definition: clef.h:22
CAClef
Definition: clef.h:18
CAMusicXmlImport::_partMapTimeSig
QHash< QString, QHash< int, CATimeSignature * > > _partMapTimeSig
Definition: musicxmlimport.h:66
CANote
Represents a note in the score.
Definition: note.h:18
CAVoice::lastTimeEnd
int lastTimeEnd()
Definition: voice.h:72
CADocument
Class which represents the current document.
Definition: document.h:19
playable.h
CAVoice::previousNote
CANote * previousNote(int timeStart)
Definition: voice.cpp:803
CADiatonicPitch::setAccs
void setAccs(const int accs)
Definition: diatonicpitch.h:54
CASlur::TieType
@ TieType
Definition: slur.h:34
CAVoice
Class which represents a voice in the staff.
Definition: voice.h:23
CAMusicXmlImport::~CAMusicXmlImport
virtual ~CAMusicXmlImport()
Definition: musicxmlimport.cpp:58
document.h
CATimeSignature
Represents a time signature in the staff.
Definition: timesignature.h:18
CAMusicXmlImport::readPart
void readPart()
Definition: musicxmlimport.cpp:248
diatonicpitch.h
canorusmlimport.h
CAPlayable
Playable instances of music elements.
Definition: playable.h:18
musicxmlimport.h
CAMusicXmlImport::readMeasure
void readMeasure(QString partId)
Definition: musicxmlimport.cpp:269
CAImport::readableStatus
virtual const QString readableStatus()
Definition: import.cpp:196
functionmarkcontext.h
CARest::Normal
@ Normal
Definition: rest.h:19
CAMusicXmlImport::_partMapStaff
QHash< QString, QList< CAStaff * > > _partMapStaff
Definition: musicxmlimport.h:63
CADiatonicKey
Musical key.
Definition: diatonickey.h:15
CADocument::setComposer
void setComposer(const QString composer)
Definition: document.h:52
QXmlStreamReader
repeatmark.h
crescendo.h
CAFile::stream
QTextStream * stream()
Definition: file.h:36
ritardando.h
functionmark.h
CAPlayableLength::musicLength
const CAMusicLength musicLength()
Definition: playablelength.h:34
instrumentchange.h
CADiatonicKey::CAGender
CAGender
Definition: diatonickey.h:17
keysignature.h
CAMusElement::timeLength
virtual int timeLength() const
Definition: muselement.h:53
dynamic.h
fingering.h
CAMusicXmlImport::_tempoBpm
int _tempoBpm
Definition: musicxmlimport.h:71
CAPlayableLength::Quarter
@ Quarter
Definition: playablelength.h:23
syllable.h
CAMusElement::addMark
void addMark(CAMark *mark)
Definition: muselement.cpp:135
CAMusicXmlImport::initMusicXmlImport
void initMusicXmlImport()
Definition: musicxmlimport.cpp:61
CADiatonicPitch::setNoteName
void setNoteName(const int noteName)
Definition: diatonicpitch.h:53
CAVoice::addLyricsContext
void addLyricsContext(CALyricsContext *lc)
Definition: voice.h:114
CADiatonicPitch::noteName
const int noteName() const
Definition: diatonicpitch.h:50
CADiatonicPitch
Musical note pitch.
Definition: diatonicpitch.h:16
CATempo
Tempo mark.
Definition: tempo.h:14
CAMusicXmlImport
Definition: musicxmlimport.h:29
fermata.h
CAFile::status
const int status()
Definition: file.h:21
text.h
CAMusicXmlImport::addStavesIfNeeded
void addStavesIfNeeded(QString partId, int staves)
Definition: musicxmlimport.cpp:568
CABarline::Single
@ Single
Definition: barline.h:21
CAClef::Bass
@ Bass
Definition: clef.h:23
CANote::setTieEnd
void setTieEnd(CASlur *tieEnd)
Definition: note.h:58
CADocument::sheetList
const QList< CASheet * > & sheetList()
Definition: document.h:26
CAStaff
Represents a staff in the sheet.
Definition: staff.h:25
CAMusicXmlImport::CAMusicXmlImport
CAMusicXmlImport(QTextStream *stream=0)
Definition: musicxmlimport.cpp:48
CAMusicXmlImport::readNote
void readNote(QString partId, int)
Definition: musicxmlimport.cpp:404
CAMusicXmlImport::readSound
void readSound(QString partId)
Definition: musicxmlimport.cpp:555
articulation.h
CAMusicXmlImport::readScoreTimewise
void readScoreTimewise()
Definition: musicxmlimport.cpp:168
CADocument::setCopyright
void setCopyright(const QString copyright)
Definition: document.h:57
CAPlayableLength
Musical length of notes and rests.
Definition: playablelength.h:16
playablelength.h
CAMusicXmlImport::_midiChannel
QHash< QString, int > _midiChannel
Definition: musicxmlimport.h:67
CAKeySignature
Represents a key signature sign in the staff.
Definition: keysignature.h:19
CASyllable
Lyrics under the note.
Definition: syllable.h:19
CAMusicXmlImport::importDocumentImpl
CADocument * importDocumentImpl()
Definition: musicxmlimport.cpp:70
CARest::composeRests
static QList< CARest * > composeRests(int timeLength, int timeStart, CAVoice *voice=0, CARestType=Hidden)
Definition: rest.cpp:96
CAVoice::append
void append(CAMusElement *elt, bool addToChord=false)
Definition: voice.cpp:120
CANote::setTieStart
void setTieStart(CASlur *tieStart)
Definition: note.h:57
CAFile::setStatus
void setStatus(const int status)
Definition: file.h:33
CAMusicXmlImport::_musicXmlVersion
QString _musicXmlVersion
Definition: musicxmlimport.h:59
CAPlayableLength::Undefined
@ Undefined
Definition: playablelength.h:19
CANote::getChord
QList< CANote * > getChord()
Definition: note.cpp:197
CAMusicXmlImport::_partMapVoice
QHash< QString, QHash< int, CAVoice * > > _partMapVoice
Definition: musicxmlimport.h:62
sheet.h
CAMusicXmlImport::readWork
void readWork()
Definition: musicxmlimport.cpp:176
CAMusicXmlImport::readableStatus
const QString readableStatus()
Definition: musicxmlimport.cpp:113
CALyricsContext
One stanza line of lyrics.
Definition: lyricscontext.h:19
timesignature.h
context.h
barline.h
CAMusElement::timeStart
virtual int timeStart() const
Definition: muselement.h:51
CAVoice::staff
CAStaff * staff()
Definition: voice.h:29
muselement.h
bookmark.h
CAMusicXmlImport::_partMapKeySig
QHash< QString, QHash< int, CAKeySignature * > > _partMapKeySig
Definition: musicxmlimport.h:65
CANote::diatonicPitch
CADiatonicPitch & diatonicPitch()
Definition: note.h:35
CADiatonicKey::Major
@ Major
Definition: diatonickey.h:18
CAStaff::addVoice
void addVoice(CAVoice *voice)
Definition: staff.h:36
CAMusicXmlImport::_partName
QHash< QString, QString > _partName
Definition: musicxmlimport.h:69
tempo.h
CABarline
Music element which represents a barline in the score.
Definition: barline.h:17
voice.h
CADocument::addSheet
void addSheet(CASheet *sheet)
Definition: document.h:28
CAMusicXmlImport::readDefaults
void readDefaults()
Definition: musicxmlimport.cpp:190
CAMusicXmlImport::readAttributes
void readAttributes(QString partId)
Definition: musicxmlimport.cpp:307
clef.h
CAMusicXmlImport::readScorePartwise
void readScorePartwise()
Definition: musicxmlimport.cpp:129
CASheet
Represents a single sheet of paper in the document.
Definition: sheet.h:22
CAVoice::name
const QString name()
Definition: voice.h:101
CAClef::CAPredefinedClefType
CAPredefinedClefType
Definition: clef.h:20
CAMusicXmlImport::readPartList
void readPartList()
Definition: musicxmlimport.cpp:219
CAImport
Base class for import filters.
Definition: import.h:20
CADiatonicPitch::diatonicPitchFromString
static CADiatonicPitch diatonicPitchFromString(const QString s)
Definition: diatonicpitch.cpp:183
CAMusicXmlImport::_divisions
QHash< QString, int > _divisions
Definition: musicxmlimport.h:70
staff.h
CAVoice::lyricsContextList
const QList< CALyricsContext * > & lyricsContextList()
Definition: voice.h:113
CASlur
Slur, Tie, Phrasing slur and Laissez vibrer tie This class represents any type of slur....
Definition: slur.h:18
lyricscontext.h
CAPlayableLength::timeLengthToPlayableLengthList
static QList< CAPlayableLength > timeLengthToPlayableLengthList(int timeLength, bool longNotesFirst=true, int dotsLimit=4)
Definition: playablelength.cpp:167
CAMusicXmlImport::readHeader
void readHeader()
Definition: musicxmlimport.cpp:121
mark.h
CAMusicXmlImport::_document
CADocument * _document
Definition: musicxmlimport.h:61
CAStaff::synchronizeVoices
bool synchronizeVoices()
Definition: staff.cpp:346
CAMusicXmlImport::_partMapClef
QHash< QString, QHash< int, CAClef * > > _partMapClef
Definition: musicxmlimport.h:64
import.h