virtual Melodic_req *melodic() { return 0; }
virtual Slur_req *slur() { return 0 ; }
virtual Beam_req *beam() { return 0 ; }
+ virtual Abbreviation_beam_req* abbrev_beam() { return 0 ; }
virtual Rhythmic_req*rhythmic() { return 0; }
virtual Musical_script_req*musicalscript() { return 0; }
virtual Text_req*text() { return 0; }
virtual Absolute_dynamic_req * absdynamic() { return 0; }
virtual Tie_req * tie() { return 0; }
virtual Span_dynamic_req * span_dynamic() { return 0; }
+ virtual Abbreviation_req* abbrev() { return 0; }
REQUESTMETHODS(Musical_req, musical);
};
public:
REQUESTMETHODS(Skip_req, skip);
};
+
struct Spacing_req :virtual Request {
Moment next;
Real distance;
REQUESTMETHODS(Spacing_req, spacing);
};
+struct Abbreviation_req : public Musical_req {
+ REQUESTMETHODS (Abbreviation_req, abbrev);
+ Abbreviation_req ();
+ int type_i_;
+};
+
class Blank_req : public Spacing_req, Rhythmic_req {
public:
REQUESTMETHODS(Spacing_req, spacing);
Beam_req();
};
+/**
+ Start / stop an abbreviation beam at this note.
+ */
+class Abbreviation_beam_req : public Span_req {
+public:
+ REQUESTMETHODS (Abbreviation_beam_req, abbrev_beam);
+
+ Abbreviation_beam_req ();
+
+ int type_i_;
+};
+
/**
Start a tie at this voice element, end it at the next
*/
class Dynamic_req : public virtual Musical_req {
public:
- /// for absolute dynamics
+ /**
+ for absolute dynamics
+
+ This sux. We'd want increasing numbers for FFF till PPP, but not
+ for FP, SF, SFZ (FP is *not* louder than FFF)
+ */
enum Loudness {
- FFF, FF, F, MF, MP, P, PP, PPP
+ FFF, FF, F, MF, MP, P, PP, PPP, FP, SF, SFZ
};
- static String loudness_str (Loudness);
+ static String loudness_static_str (Loudness);
REQUESTMETHODS(Dynamic_req, dynamic);
};
class Absolute_dynamic_req : public Dynamic_req {
public:
Loudness loudness_;
+ String loudness_str () const;
Absolute_dynamic_req();
REQUESTMETHODS(Absolute_dynamic_req, absdynamic);
};