13#ifndef __xml2guidovisitor__
14#define __xml2guidovisitor__
30#include "partlistvisitor.h"
31#include "transposevisitor.h"
32#include "clefvisitor.h"
45 std::vector<S_creator> fCreators;
55public visitor<S_score_partwise>,
56public visitor<S_movement_title>,
65 std::stack<Sguidoelement> fStack;
66 bool fGenerateComments, fGenerateStem, fGenerateBars, fGeneratePositions;
69 std::string fCurrentPartID;
70 int fCurrentStaffIndex;
73 void add (
Sguidoelement& elt) {
if (fStack.size()) fStack.top()->add(elt); }
74 void push (
Sguidoelement& elt) { add(elt); fStack.push(elt); }
79 cerr<<
"xml2guido: Pop() called while EMPTY! Please REPORT!"<<endl;
84 void flushPartGroup (std::string partID);
93 virtual void visitStart(
S_part& elt);
94 virtual void visitStart (
S_staves& elt);
95 virtual void visitEnd (
S_clef& elt );
99 bool previousStaffHasLyrics;
101 int fCurrentAccoladeIndex;
108 int fEndMeasureOffset;
115 static int defaultStaffDistance;
117 std::map<std::string, int> stavesInPart;
118 std::map<std::string, std::set<std::string> > clefsInPart;
119 std::string currentPart;
127 double fTotalDuration;
130 xml2guidovisitor(
bool generateComments,
bool generateStem,
bool generateBar=
true,
int partNum = 0,
int beginMeasure = 0,
int endMeasure = 0,
int endMeasureOffset = 0);
137 void generatePositions (
bool state) { fGeneratePositions = state; }
147 static float getYposition (
Sxmlelement elt,
float yoffset,
bool useDefault);
148 static float getXposition (
Sxmlelement elt,
float xoffset);
163 std::string getTransposeInstrumentName ();
180 std::pair<long, long> getStartPosition() {
181 return std::pair<long, long>(fBeginPosition.getNumerator(), fBeginPosition.getDenominator());
184 std::pair<long, long> getEndPosition() {
185 return std::pair<long, long>(fEndPosition.getNumerator(), fEndPosition.getDenominator());
188 int getTotalMeasures();
193 double getTotalDuration();
key element data
Definition clefvisitor.h:35
Produces a summary of a MusicXML parts for groupings.
Definition partlistvisitor.h:72
a musicxml transpose element visitor
Definition transposevisitor.h:36
A score visitor to produce a Guido representation.
Definition xml2guidovisitor.h:62
int fTotalMeasures
Number of total measures in score.
Definition xml2guidovisitor.h:122
std::map< double, int > measurePositionMap
Map containing measure number and Position (double output of Rational)
Definition xml2guidovisitor.h:125
std::map< double, int > getMeasureMap()
Returns a map<double,int> where the first are beat positions and second are measure numbers.
rational fEndPosition
Guido Position corresponding to fEndMeasure (without fEndMeasureOffset)
Definition xml2guidovisitor.h:113
int getPartsAvailable()
Returne the number of parts in this XML Score.
std::vector< std::string > getAllClefsOfFirstPart()
static void addPosition(Sxmlelement elt, Sguidoelement &tag, float yoffset)
MARK: Position Helpers.
int getStavesForFirstPart()
rational fBeginPosition
Guido Position corresponding to fBeginMeasure.
Definition xml2guidovisitor.h:111
int getTransposeInstrumentChromatic()
MARK: Query methods.
Rational number representation.
Definition rational.h:25