]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/include/new-repeated-music.hh
release: 1.1.43
[lilypond.git] / lily / include / new-repeated-music.hh
index 30a5076340009cd889b1b354c34121ff48acaa21..bc44ca390d032b4a4cbc4756bc2f2b3d091977da 100644 (file)
 
 #include "music.hh"
 
+
+/**
+   Musical repeats.
+
+   A repeat, when played has the form of BODY A BODY B BODY C.
+
+   In this examples, the list {A B C} is put in ALTERNATIVES_P_.  BODY
+   is put in REPEAT_BODY_P_.  Either the body or the alternative may
+   be omitted.
+
+   There are three modes of representing this  music:
+
+   BODY A
+        B
+       C
+
+   is called "folded". Mostly used for lyrics.
+
+   
+   BODY A B C
+
+   is called "semi" folded.  This is common notation
+
+   BODY A BODY B BODY C
+
+   is called unfolded.  Useful for MIDI.
+
+*/
 class New_repeated_music : public Music
 {
 public:
-  bool unfold_b_;
+  bool fold_b_;
+  /// if FOLD_B_ is false, semifold this.
+  bool semi_fold_b_;
+
+  /// how often do we repeat?
   int repeats_i_;
 
-  Music * repeat_begin_p_;
+  Music * repeat_body_p_;
   Music_sequence * alternatives_p_;
 
   virtual Musical_pitch to_relative_octave (Musical_pitch);
@@ -26,6 +58,7 @@ public:
   /// The duration of this piece of music
   virtual Moment length_mom () const;
 
+  Moment alternatives_length_mom () const;
 
   void print() const;
   /// Transpose, with the interval central C to #p#
@@ -35,12 +68,11 @@ public:
   virtual void compress (Moment factor);
   VIRTUAL_COPY_CONS(Music);
 
-  New_repeated_music ();
+  New_repeated_music (Music*, int , Music_sequence*);
   New_repeated_music (New_repeated_music const&);
   ~New_repeated_music ();
 protected:
   virtual void do_print() const;
-
 };