On Sat, Jan 22, 2011 at 2:26 PM, Jay Anderson <horndud...@gmail.com> wrote:
> Essentially, I want to write R1*10 and have it be equivalent to
> writing something like R1*10_"[101-110]".

I've gone in and modified multi-measure-rest-engraver.cc to roughly do
what I want. I couldn't figure out how to do it with a separate
engraver (but l don't really know what I'm doing). I'd like to either
be able to get this functionality directly from a lilypond file
(without modifying the source). Any suggestions? Is modifying the
engraver and working on a good patch a better route? Thanks.

-----Jay
diff --git a/lily/multi-measure-rest-engraver.cc b/lily/multi-measure-rest-engraver.cc
index 3fbcdb6..cddd4f5 100644
--- a/lily/multi-measure-rest-engraver.cc
+++ b/lily/multi-measure-rest-engraver.cc
@@ -56,6 +56,7 @@ private:
   Item *last_command_item_;
   Spanner *last_rest_;
   Spanner *mmrest_;
+  Spanner *nums_text_;
 
   vector<Spanner*> numbers_;
   vector<Spanner*> last_numbers_;
@@ -108,6 +109,14 @@ Multi_measure_rest_engraver::process_music ()
 	= make_spanner ("MultiMeasureRestNumber", rest_ev_->self_scm ());
       numbers_.push_back (sp);
 
+      {
+        Spanner *sp
+          = make_spanner ("MultiMeasureRestText", rest_ev_->self_scm ());
+        sp->set_property ("direction", scm_from_int (DOWN));
+        nums_text_ = sp;
+        numbers_.push_back (sp);
+      }
+
       if (text_events_.size ())
 	{
 	  for (vsize i = 0; i < text_events_.size (); i++)
@@ -253,6 +262,22 @@ Multi_measure_rest_engraver::start_translation_timestep ()
 	      last->set_property ("text", text);
 	    }
 	}
+
+      if(nums_text_ != 0)
+        {
+          if(num <= 1)
+            {
+              nums_text_->suicide ();
+              nums_text_ = 0;
+            }
+          else
+            {
+              char s[100];
+              sprintf (s, "[%d-%d]", start_measure_, cur-1);
+              nums_text_->set_property ("text", ly_string2scm(s));
+              nums_text_ = 0;
+            }
+        }
     }
 
   last_main_moment_ = now.main_part_;
_______________________________________________
lilypond-user mailing list
lilypond-user@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-user

Reply via email to