13#ifndef __noteVisitor__
14#define __noteVisitor__
19#include "conversions.h"
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>
104 std::string fGraphicType;
105 std::string fAccidental;
106 std::string fCautionary;
112 enum { C, D, E, F, G, A, B, last=B, diatonicSteps=last };
113 enum type { kUndefinedType, kPitched, kUnpitched, kRest };
114 enum { kUndefinedDynamics = -1, kUndefinedStaff = 0, kUndefinedVoice = 0 };
119 bool isGrace()
const {
return fGrace; }
120 bool isCue()
const {
return fCue; }
121 bool inChord()
const {
return fChord; }
122 bool inFermata()
const {
return (fFermata != (
void*)0); }
124 type getType()
const {
return fType; }
125 int getTie()
const {
return fTie; }
126 int getStaff()
const {
return fStaff; }
127 int getVoice()
const {
return fVoice; }
128 S_note getSnote()
const {
return fThisSNote; }
129 float getNoteHeadDy(
string fCurClef)
const;
130 std::string getNoteheadType()
const;
139 virtual float getAlter()
const {
return fAlter; }
140 virtual int getOctave()
const {
return fOctave; }
142 virtual const std::string& getStep()
const {
return fStep; }
143 virtual const std::string& getInstrument()
const {
return fInstrument; }
144 virtual const std::string& getGraphicType()
const {
return fGraphicType; }
145 virtual const rational& getTimeModification()
const {
return fTimeModification; }
147 virtual void setStep (
const std::string& step) { fStep = step; }
148 virtual void setOctave (
int oct) { fOctave = oct; }
149 virtual void setAlter (
float alter) { fAlter = alter; }
152 virtual long getDynamics()
const {
return fDynamics; }
153 virtual long getDuration()
const {
return fDuration; }
154 virtual int getDots()
const {
return fDots; }
155 virtual void print (std::ostream& out)
const;
157 virtual const std::vector<Sxmlelement>& getFingerings()
const {
return fFingering; }
158 virtual const std::vector<S_tied>& getTied()
const {
return fTied; }
159 virtual const std::vector<S_slur>& getSlur()
const {
return fSlur; }
160 virtual const std::vector<S_beam>& getBeam()
const {
return fBeam; }
161 virtual const std::vector<S_wavy_line>& getWavylines()
const {
return fWaveLine; }
162 virtual const std::vector<S_tuplet>& getTuplet()
const {
return fTuplet; }
163 virtual const std::vector<S_lyric>& getLyric()
const {
return fLyric; }
164 virtual const std::string& getSyllabic()
const {
return fSyllabic; }
165 virtual const std::string& getLyricText()
const {
return fLyricText; }
166 virtual const float& getLyricDy()
const {
return fLyricsDy; }
168 static int step2i(
const std::string& step);
169 static std::string i2step(
int i);
177 virtual void visitEnd ( S_note& elt );
180 virtual void visitStart( S_accent& elt) { fAccent = elt; }
181 virtual void visitStart( S_alter& elt ) {
if (fInNote) fAlter = (float)(*elt); }
182 virtual void visitStart( S_beam& elt ) { fBeam.push_back (elt); }
183 virtual void visitStart( S_tuplet& elt ) { fTuplet.push_back (elt); }
184 virtual void visitStart( S_breath_mark& elt) { fBreathMark = elt; }
185 virtual void visitStart( S_chord& elt ) { fChord =
true; }
186 virtual void visitStart( S_cue& elt ) { fCue =
true; }
187 virtual void visitStart( S_display_octave& elt ) {
if (fInNote) fOctave = (int)(*elt); }
188 virtual void visitStart( S_display_step& elt ) {
if (fInNote) fStep = elt->
getValue(); }
189 virtual void visitStart( S_dot& elt ) {
if (fInNote) fDots++; }
190 virtual void visitStart( S_duration& elt ) {
if (fInNote) fDuration = (int)(*elt); }
191 virtual void visitStart( S_fermata& elt ) { fFermata = elt; }
192 virtual void visitStart( S_grace& elt ) { fGrace =
true; }
193 virtual void visitStart( S_instrument& elt ) {
if (fInNote) fInstrument = elt->
getValue(); }
194 virtual void visitStart( S_note& elt );
195 virtual void visitStart( S_octave& elt ) {
if (fInNote) fOctave = (int)(*elt); }
196 virtual void visitStart( S_pitch& elt ) { fType = kPitched; }
197 virtual void visitStart( S_rest& elt ) { fType = kRest; }
198 virtual void visitStart( S_slur& elt ) { fSlur.push_back (elt); }
199 virtual void visitStart( S_staccato& elt) { fStaccato = elt; }
200 virtual void visitStart( S_staff& elt) { fStaff = int(*elt); }
201 virtual void visitStart( S_stem& elt ) { fStem = elt; }
202 virtual void visitStart( S_step& elt ) {
if (fInNote) fStep = elt->
getValue(); }
203 virtual void visitStart( S_strong_accent& elt) { fStrongAccent = elt; }
204 virtual void visitStart( S_tenuto& elt) { fTenuto = elt; }
205 virtual void visitStart( S_tie& elt );
206 virtual void visitStart( S_tied& elt ) { fTied.push_back (elt); }
207 virtual void visitStart( S_time_modification& elt );
208 virtual void visitStart( S_type& elt )
211 fGraphicType = elt->getValue();
212 if (elt->getAttributeValue(
"size")==
"cue")
215 virtual void visitStart( S_unpitched& elt ) {
if (fInNote) fType = kUnpitched; }
216 virtual void visitStart( S_voice& elt ) { fVoice = int(*elt); }
217 virtual void visitStart( S_lyric& elt );
218 virtual void visitStart( S_turn& elt ) { fTurn = elt; }
219 virtual void visitStart( S_tremolo& elt ) { fTremolo = elt; }
220 virtual void visitStart( S_trill_mark& elt ) { fTrill = elt; }
221 virtual void visitStart( S_wavy_line& elt ) { fWaveLine.push_back(elt); }
222 virtual void visitStart( S_accidental_mark& elt ) { fAccidentalMark = elt; }
223 virtual void visitStart( S_inverted_mordent& elt ) { fInvertedMordent = elt; }
224 virtual void visitStart( S_inverted_turn& elt ) { fInvertedTurn = elt; }
225 virtual void visitStart( S_arpeggiate& elt ) { fArpeggio = elt; }
226 virtual void visitStart( S_mordent& elt ) { fMordent = elt; }
227 virtual void visitStart( S_notehead& elt ) { fNotehead = elt; }
228 virtual void visitStart( S_fingering& elt) {fFingering.push_back(elt);}
229 virtual void visitStart( S_pluck& elt) {fFingering.push_back(elt);}
230 virtual void visitStart( S_down_bow& elt) {fBowDown = elt;}
231 virtual void visitStart( S_up_bow& elt) {fBowUp = elt;}
232 virtual void visitStart( S_harmonic& elt) {fHarmonic = elt;}
233 virtual void visitStart( S_snap_pizzicato& elt) {fSnapPizzicato = elt;}
236 bool fGrace, fCue, fChord;
239 StartStop::type fTie;
240 long fDuration, fDynamics;
246 std::string fInstrument;
248 std::vector<S_tied> fTied;
249 std::vector<S_slur> fSlur;
250 std::vector<S_beam> fBeam;
251 std::vector<S_tuplet> fTuplet;
252 std::vector<S_wavy_line> fWaveLine;
253 std::vector<Sxmlelement> fFingering;
255 std::vector<S_lyric> fLyric;
256 std::string fSyllabic;
257 std::string fLyricText;
263EXP std::ostream& operator<< (std::ostream& os,
const notevisitor& elt);
A note visitor.
Definition: notevisitor.h:86
virtual float getMidiPitch() const
Compute the note MIDI pitch.
const std::string & getValue() const
returns the element value as a string
Definition: xml.h:125
Rational number representation.
Definition: rational.h:25