37class EXP notevisitor :
44 public visitor<S_display_octave>,
60 public visitor<S_strong_accent>,
64 public visitor<S_time_modification>,
71 public visitor<S_inverted_turn>,
74 public visitor<S_inverted_mordent>,
77 public visitor<S_accidental_mark>,
85 public visitor<S_snap_pizzicato>,
91 S_strong_accent fStrongAccent;
94 S_breath_mark fBreathMark;
96 S_inverted_mordent fInvertedMordent;
100 S_arpeggiate fArpeggio;
101 S_inverted_turn fInvertedTurn;
102 S_accidental_mark fAccidentalMark;
103 S_notehead fNotehead;
105 std::string fGraphicType;
106 std::string fAccidental;
107 std::string fCautionary;
108 S_harmonic fHarmonic;
109 S_snap_pizzicato fSnapPizzicato;
110 S_staccatissimo fStaccatissimo;
114 enum { C, D, E, F, G, A, B, last=B, diatonicSteps=last };
115 enum type { kUndefinedType, kPitched, kUnpitched, kRest };
116 enum { kUndefinedDynamics = -1, kUndefinedStaff = 0, kUndefinedVoice = 0 };
119 virtual ~notevisitor() {}
121 bool isGrace()
const {
return fGrace; }
122 bool isCue()
const {
return fCue; }
123 bool inChord()
const {
return fChord; }
124 bool inFermata()
const {
return (fFermata != (
void*)0); }
126 type getType()
const {
return fType; }
127 int getTie()
const {
return fTie; }
128 int getStaff()
const {
return (fStaff == kUndefinedStaff ? 1: fStaff); }
129 int getVoice()
const {
return fVoice; }
130 S_note getSnote()
const {
return fThisSNote; }
131 float getNoteHeadDy(
string fCurClef)
const;
132 std::string getNoteheadType()
const;
134 bool printObject()
const {
return shouldPrint; }
143 virtual float getAlter()
const {
return fAlter; }
144 virtual int getOctave()
const {
return fOctave; }
146 virtual const std::string& getStep()
const {
return fStep; }
147 virtual const std::string& getInstrument()
const {
return fInstrument; }
148 virtual const std::string& getGraphicType()
const {
return fGraphicType; }
149 virtual const rational& getTimeModification()
const {
return fTimeModification; }
151 virtual void setStep (
const std::string& step) { fStep = step; }
152 virtual void setOctave (
int oct) { fOctave = oct; }
153 virtual void setAlter (
float alter) { fAlter = alter; }
156 virtual long getDynamics()
const {
return fDynamics; }
157 virtual long getDuration()
const {
return fDuration; }
158 virtual int getDots()
const {
return fDots; }
159 virtual void print (std::ostream& out)
const;
161 virtual const std::vector<Sxmlelement>& getFingerings()
const {
return fFingering; }
162 virtual const std::vector<S_tied>& getTied()
const {
return fTied; }
163 virtual const std::vector<S_slur>& getSlur()
const {
return fSlur; }
164 virtual const std::vector<S_beam>& getBeam()
const {
return fBeam; }
165 virtual const std::vector<S_wavy_line>& getWavylines()
const {
return fWaveLine; }
166 virtual const std::vector<S_tuplet>& getTuplet()
const {
return fTuplet; }
167 virtual const std::vector<S_lyric>& getLyric()
const {
return fLyric; }
168 virtual const std::string& getSyllabic()
const {
return fSyllabic; }
169 virtual const std::string& getLyricText()
const {
return fLyricText; }
170 virtual const float& getLyricDy()
const {
return fLyricsDy; }
172 static int step2i(
const std::string& step);
173 static std::string i2step(
int i);
181 virtual void visitEnd ( S_note& elt );
184 virtual void visitStart( S_accent& elt) { fAccent = elt; }
185 virtual void visitStart( S_alter& elt ) {
if (fInNote) fAlter = (float)(*elt); }
186 virtual void visitStart( S_beam& elt ) { fBeam.push_back (elt); }
187 virtual void visitStart( S_tuplet& elt ) { fTuplet.push_back (elt); }
188 virtual void visitStart( S_breath_mark& elt) { fBreathMark = elt; }
189 virtual void visitStart( S_chord& elt ) { fChord =
true; }
190 virtual void visitStart( S_cue& elt ) { fCue =
true; }
191 virtual void visitStart( S_display_octave& elt ) {
if (fInNote) fOctave = (int)(*elt); }
192 virtual void visitStart( S_display_step& elt ) {
if (fInNote) fStep = elt->getValue(); }
193 virtual void visitStart( S_dot& elt ) {
if (fInNote) fDots++; }
194 virtual void visitStart( S_duration& elt ) {
if (fInNote) fDuration = (int)(*elt); }
195 virtual void visitStart( S_fermata& elt ) { fFermata = elt; }
196 virtual void visitStart( S_grace& elt ) { fGrace =
true; }
197 virtual void visitStart( S_instrument& elt ) {
if (fInNote) fInstrument = elt->getAttributeValue(
"id"); }
198 virtual void visitStart( S_note& elt );
199 virtual void visitStart( S_octave& elt ) {
if (fInNote) fOctave = (int)(*elt); }
200 virtual void visitStart( S_pitch& elt ) { fType = kPitched; }
201 virtual void visitStart( S_rest& elt ) { fType = kRest; }
202 virtual void visitStart( S_slur& elt ) { fSlur.push_back (elt); }
203 virtual void visitStart( S_staccato& elt) { fStaccato = elt; }
204 virtual void visitStart( S_staff& elt) { fStaff = int(*elt); }
205 virtual void visitStart( S_stem& elt ) { fStem = elt; }
206 virtual void visitStart( S_step& elt ) {
if (fInNote) fStep = elt->getValue(); }
207 virtual void visitStart( S_strong_accent& elt) { fStrongAccent = elt; }
208 virtual void visitStart( S_tenuto& elt) { fTenuto = elt; }
209 virtual void visitStart( S_tie& elt );
210 virtual void visitStart( S_tied& elt ) { fTied.push_back (elt); }
211 virtual void visitStart( S_time_modification& elt );
212 virtual void visitStart( S_type& elt )
215 fGraphicType = elt->getValue();
216 if (elt->getAttributeValue(
"size")==
"cue")
219 virtual void visitStart( S_unpitched& elt ) {
if (fInNote) fType = kUnpitched; }
220 virtual void visitStart( S_voice& elt ) { fVoice = int(*elt); }
221 virtual void visitStart( S_lyric& elt );
222 virtual void visitStart( S_turn& elt ) { fTurn = elt; }
223 virtual void visitStart( S_tremolo& elt ) { fTremolo = elt; }
224 virtual void visitStart( S_trill_mark& elt ) { fTrill = elt; }
225 virtual void visitStart( S_wavy_line& elt ) { fWaveLine.push_back(elt); }
226 virtual void visitStart( S_accidental_mark& elt ) { fAccidentalMark = elt; }
227 virtual void visitStart( S_inverted_mordent& elt ) { fInvertedMordent = elt; }
228 virtual void visitStart( S_inverted_turn& elt ) { fInvertedTurn = elt; }
229 virtual void visitStart( S_arpeggiate& elt ) { fArpeggio = elt; }
230 virtual void visitStart( S_mordent& elt ) { fMordent = elt; }
231 virtual void visitStart( S_notehead& elt ) { fNotehead = elt; }
232 virtual void visitStart( S_fingering& elt) {fFingering.push_back(elt);}
233 virtual void visitStart( S_pluck& elt) {fFingering.push_back(elt);}
234 virtual void visitStart( S_down_bow& elt) {fBowDown = elt;}
235 virtual void visitStart( S_up_bow& elt) {fBowUp = elt;}
236 virtual void visitStart( S_harmonic& elt) {fHarmonic = elt;}
237 virtual void visitStart( S_snap_pizzicato& elt) {fSnapPizzicato = elt;}
238 virtual void visitStart( S_staccatissimo& elt) {fStaccatissimo = elt;}
241 bool fGrace, fCue, fChord;
244 StartStop::type fTie;
245 long fDuration, fDynamics;
250 rational fTimeModification;
251 std::string fInstrument;
253 std::vector<S_tied> fTied;
254 std::vector<S_slur> fSlur;
255 std::vector<S_beam> fBeam;
256 std::vector<S_tuplet> fTuplet;
257 std::vector<S_wavy_line> fWaveLine;
258 std::vector<Sxmlelement> fFingering;
260 std::vector<S_lyric> fLyric;
261 std::string fSyllabic;
262 std::string fLyricText;