2 new-repeated-music.hh -- declare New_repeated_music
4 source file of the GNU LilyPond music typesetter
6 (c) 1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
10 #ifndef NEW_REPEATED_MUSIC_HH
11 #define NEW_REPEATED_MUSIC_HH
19 A repeat, when played has the form of BODY A BODY B BODY C.
21 In this examples, the list {A B C} is put in ALTERNATIVES_P_. BODY
22 is put in REPEAT_BODY_P_. Either the body or the alternative may
25 There are three modes of representing this music:
31 is called "folded". Mostly used for lyrics.
36 is called "semi" folded. This is common notation
40 is called unfolded. Useful for MIDI.
43 class New_repeated_music : public Music
47 /// if FOLD_B_ is false, semifold this.
50 /// how often do we repeat?
53 Music * repeat_body_p_;
54 Music_sequence * alternatives_p_;
56 virtual Musical_pitch to_relative_octave (Musical_pitch);
58 /// The duration of this piece of music
59 virtual Moment length_mom () const;
61 Moment alternatives_length_mom () const;
64 /// Transpose, with the interval central C to #p#
65 virtual void transpose (Musical_pitch p);
67 /// Scale the music in time by #factor#.
68 virtual void compress (Moment factor);
69 VIRTUAL_COPY_CONS(Music);
71 New_repeated_music (Music*, int , Music_sequence*);
72 New_repeated_music (New_repeated_music const&);
73 ~New_repeated_music ();
75 virtual void do_print() const;
79 #endif /* NEW_REPEATED_MUSIC_HH */