]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/include/new-repeated-music.hh
release: 1.1.54
[lilypond.git] / lily / include / new-repeated-music.hh
index 30a5076340009cd889b1b354c34121ff48acaa21..0f4caed5bd713e8a29b35ac390bfff258ac73013 100644 (file)
@@ -1,5 +1,5 @@
 /*   
-  new-repeated-music.hh -- declare New_repeated_music
+  new-repeated-music.hh -- declare Repeated_music
   
   source file of the GNU LilyPond music typesetter
   
@@ -7,25 +7,66 @@
   
  */
 
-#ifndef NEW_REPEATED_MUSIC_HH
-#define NEW_REPEATED_MUSIC_HH
+#ifndef RepEATED_MUSIC_HH
+#define RepEATED_MUSIC_HH
 
 #include "music.hh"
 
-class New_repeated_music : public Music
+
+/**
+   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.
+
+
+   If the number of repeats is smaller than the number of alternatives, then
+   the excess alternatives are ignored for all timing purposes.
+
+   If the number of repeats is bigger than the number of alternatives, then
+   the first alternative is assumed to be repeated.
+   
+*/
+class 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);
+  virtual Music_iterator* to_rhythm (Music_iterator*);
 
   /// 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,13 +76,12 @@ public:
   virtual void compress (Moment factor);
   VIRTUAL_COPY_CONS(Music);
 
-  New_repeated_music ();
-  New_repeated_music (New_repeated_music const&);
-  ~New_repeated_music ();
+  Repeated_music (Music*, int , Music_sequence*);
+  Repeated_music (Repeated_music const&);
+  ~Repeated_music ();
 protected:
   virtual void do_print() const;
-
 };
 
 
-#endif /* NEW_REPEATED_MUSIC_HH */
+#endif /* RepEATED_MUSIC_HH */