X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Finclude%2Fmusical-request.hh;h=cd3e27b315eacc767470acac68a9c15ba6134f40;hb=635827994d372f4bd0e9c719238380337bae9477;hp=c88ef382c4ba0921214526c3c03e0a9f4bbcdf56;hpb=e590acdf36f87d36f68b322c08246664c9a7297a;p=lilypond.git diff --git a/lily/include/musical-request.hh b/lily/include/musical-request.hh index c88ef382c4..cd3e27b315 100644 --- a/lily/include/musical-request.hh +++ b/lily/include/musical-request.hh @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--2001 Han-Wen Nienhuys */ @@ -13,107 +13,93 @@ #include "lily-proto.hh" #include "request.hh" #include "duration.hh" -#include "musical-pitch.hh" - -/** - A request which is coupled to a note (that has duration). - Base class only - */ -class Musical_req : public virtual Request { -public: - - - REQUESTMETHODS(Musical_req); -}; - - +#include "pitch.hh" +#include "array.hh" /** a request with a duration. This request is used only used as a base class. */ -class Rhythmic_req : public virtual Musical_req { +class Rhythmic_req : public virtual Request { public: - Duration duration_; - - bool do_equal_b (Request*) const; + bool do_equal_b (Request const*) const; void compress (Moment); - virtual Moment duration() const; + virtual Moment length_mom () const; static int compare (Rhythmic_req const&,Rhythmic_req const&); - REQUESTMETHODS(Rhythmic_req); + VIRTUAL_COPY_CONS (Music); }; class Skip_req : public Rhythmic_req { public: - REQUESTMETHODS(Skip_req); + VIRTUAL_COPY_CONS (Music); }; -struct Spacing_req :virtual Request { - Moment next; - Real distance; - Real strength; - Spacing_req(); - REQUESTMETHODS(Spacing_req); -}; -struct Abbreviation_req : public Musical_req { - REQUESTMETHODS (Abbreviation_req); - Abbreviation_req (); - int type_i_; -}; +struct Tremolo_req : public Request { + VIRTUAL_COPY_CONS (Music); + Tremolo_req (); -class Blank_req : public Spacing_req, Rhythmic_req { -public: - REQUESTMETHODS(Spacing_req); + void set_type (int); + int get_type () const; }; -/// Put a text above or below (?) this staff. -class Text_req : public virtual Musical_req { -public: - /// preferred position (above/below) - Direction dir_; - /// the characteristics of the text - Text_def *tdef_p_; - Text_req (int d, Text_def*); - ~Text_req(); - Text_req (Text_req const&); - - REQUESTMETHODS(Text_req); +/** + a syllable or lyric is a string with rhythm. + */ +class Lyric_req : public Rhythmic_req +{ +protected: + VIRTUAL_COPY_CONS (Music); }; -/** a syllable or lyric is a string with rhythm. - */ -class Lyric_req : public Rhythmic_req { + +class Articulation_req : public Script_req +{ public: - String text_str_; - REQUESTMETHODS(Lyric_req); + String get_articulation_str (); +protected: + virtual bool do_equal_b (Request const*) const; + + VIRTUAL_COPY_CONS (Music); }; +class Text_script_req : public Script_req +{ +protected: + VIRTUAL_COPY_CONS (Music); + virtual bool do_equal_b (Request const*) const; +}; /// request which has some kind of pitch -struct Melodic_req :virtual Musical_req +struct Melodic_req :virtual Request { - Musical_pitch pitch_; - /// transpose. #delta# is relative to central c. - virtual void transpose (Musical_pitch delta); - Melodic_req(); - bool do_equal_b (Request*) const; static int compare (Melodic_req const&,Melodic_req const&); - REQUESTMETHODS(Melodic_req); + +protected: + /// transpose. #delta# is relative to central c. + virtual void transpose (Pitch delta); + virtual bool do_equal_b (Request const*) const; + + VIRTUAL_COPY_CONS (Music); }; -/// Put a note of specified type, height, and with accidental on the staff. -class Note_req : public Rhythmic_req, virtual public Melodic_req { -public: - - /// force/supress printing of accidental. +/* + Put a note of specified type, height, and with accidental on the staff. + /// force/supress printing of accidental. bool forceacc_b_; /// Cautionary, i.e. parenthesized accidental. bool cautionary_b_; - Note_req(); - bool do_equal_b (Request*) const; - REQUESTMETHODS(Note_req); + + */ +class Note_req : public Rhythmic_req, virtual public Melodic_req { +public: + + Note_req (); +protected: + + bool do_equal_b (Request const*) const; + VIRTUAL_COPY_CONS (Music); }; /** @@ -121,112 +107,61 @@ Put a rest on the staff. Why a request? It might be a good idea to not typeset t */ class Rest_req : public Rhythmic_req { public: - REQUESTMETHODS(Rest_req); + VIRTUAL_COPY_CONS (Music); }; -/** - Part: typeset a measure with the number of measures rest - Score: typeset all individual measures ass full rests - */ -class Multi_measure_rest_req : public Rhythmic_req { -public: - REQUESTMETHODS(Multi_measure_rest_req); - -}; - -class Musical_span_req : public Span_req, public virtual Musical_req -{ -public: - REQUESTMETHODS(Musical_span_req); - -}; -/** Start / stop a beam at this note */ -class Beam_req : public Musical_span_req { +/// an extender line +class Extender_req : public Request { public: - REQUESTMETHODS(Beam_req); + VIRTUAL_COPY_CONS (Music); }; -/** - Start / stop an abbreviation beam at this note. - */ -class Abbreviation_beam_req : public Musical_span_req { +/// a centred hyphen +class Hyphen_req : public Request { public: - REQUESTMETHODS (Abbreviation_beam_req); - - Abbreviation_beam_req (); - - int type_i_; + VIRTUAL_COPY_CONS (Music); }; -/** - Start a tie at this note, end it at the next +/** is anyone playing a note? + Used for communication between Music & Lyrics */ -class Tie_req : public Musical_req { -public: - REQUESTMETHODS(Tie_req); -}; - -/// a slur -class Slur_req : public Musical_span_req { +class Busy_playing_req : public Request +{ public: - REQUESTMETHODS(Slur_req); - + VIRTUAL_COPY_CONS (Music); }; -/// a tuplet (bracket with) number -class Plet_req : public Musical_span_req { -public: - int plet_i_; - REQUESTMETHODS(Plet_req); - Plet_req (); -}; -/// an extender line -class Extender_req : public Musical_span_req { -public: - REQUESTMETHODS(Extender_req); - Extender_req (); -}; - -class Musical_script_req : public Musical_req, public Script_req { +/** + instruct lyric context to alter typesetting (unimplemented). */ +class Melisma_req : public Span_req +{ public: - REQUESTMETHODS(Musical_script_req); + VIRTUAL_COPY_CONS (Music); }; -class Dynamic_req : public virtual Musical_req { +/** + Helping req to signal start of a melisma from within a context, and + to */ +class Melisma_playing_req : public Request +{ public: - /** - 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, FP, SF, SFZ - }; - static String loudness_static_str (Loudness); - REQUESTMETHODS(Dynamic_req); + VIRTUAL_COPY_CONS (Music); }; -class Absolute_dynamic_req : public Dynamic_req { +class Arpeggio_req : public Request +{ public: - Loudness loudness_; - virtual bool do_equal_b (Request*) const; - String loudness_str () const; - Absolute_dynamic_req(); - REQUESTMETHODS(Absolute_dynamic_req); + VIRTUAL_COPY_CONS (Music); }; -class Span_dynamic_req : public Dynamic_req, public Musical_span_req { +class Glissando_req : public Request +{ public: - virtual bool do_equal_b (Request*) const; - /// Grow or shrink the volume: 1=cresc, -1 = decresc - Direction dynamic_dir_; - Span_dynamic_req(); - REQUESTMETHODS(Span_dynamic_req); + VIRTUAL_COPY_CONS (Music); }; #endif // MUSICALREQUESTS_HH