X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Finclude%2Fmusic.hh;h=0bd1e966d07330c1a066670649d844c5a3be10b5;hb=875cf3061b68867a109cdaf52c93be868a3e01be;hp=63ce4b8799d1b4cb8c078086c74ae349daa6f2a7;hpb=6a62932652940f4ac2931f75d48796887fbc5fdc;p=lilypond.git diff --git a/lily/include/music.hh b/lily/include/music.hh index 63ce4b8799..0bd1e966d0 100644 --- a/lily/include/music.hh +++ b/lily/include/music.hh @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1997 Han-Wen Nienhuys + (c) 1997--1999 Han-Wen Nienhuys */ @@ -17,42 +17,38 @@ #include "lily-proto.hh" #include "string.hh" -/** - Anything which has length or pitch. +/** Music is anything that has duration and supports both time compression and + transposition. In Lily, everything that can be thought to have a length and a pitch (which has a duration which can be transposed) is considered "music", Music is hierarchical: - @see Music_list + @see Music_sequence */ class Music:public Input { public: - Music_list * parent_music_l_; - /** The kind of iterator needed to walk this music. This doesn't - make sense for simple (ie non-list) music, but it does no harm - here. Yes, it did harm Music_list: you can forget to copy it. - - */ - String type_str_; - - /// what name (or look for this name) - String id_str_; - - virtual MInterval time_int()const; - virtual ~Music(){} - void print() const; - virtual void transpose(Melodic_req const *); - virtual void translate(Moment dt); - VIRTUAL_COPY_CONS(Music,Music); - DECLARE_MY_RUNTIME_TYPEINFO; - Music(); -protected: - virtual void do_print() const; + + virtual Musical_pitch to_relative_octave (Musical_pitch); + + /// The duration of this piece of music + virtual Moment length_mom () const; + + virtual ~Music(){} + void print() const; + /// Transpose, with the interval central C to #p# + virtual void transpose (Musical_pitch p); + + /// Scale the music in time by #factor#. + virtual void compress (Moment factor); + VIRTUAL_COPY_CONS(Music); + Music(); +protected: + virtual void do_print() const; }; #endif // MUSIC_HH