* lily/multi-measure-rest-engraver.cc
(start_translation_timestep): use grace timing too for determining
when to make mmrest.
(start_translation_timestep): clear numbers too.
+2003-04-10 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+
+ * input/regression/multi-measure-rest-grace.ly (texidoc): new file
+
+ * lily/multi-measure-rest-engraver.cc
+ (start_translation_timestep): use grace timing too for determining
+ when to make mmrest.
+ (start_translation_timestep): clear numbers too.
+
2003-04-09 Juergen Reuter <reuter@ipd.uka.de>
* scm/music-types.scm: compile fix: escape braces
2003-04-09 Juergen Reuter <reuter@ipd.uka.de>
* scm/music-types.scm: compile fix: escape braces
--- /dev/null
+\header {
+texidoc= "Grace notes and multi-measure rests."
+}
+
+\score {
+\notes <
+ \context Staff = SB { R1 R1 R1*3 }
+ \context Staff = SA { \clef bass c1 \grace c8 c2 c2 c1 \grace c16 c2 c2 c1 }
+>
+}
Link_array<Music> text_events_;
int start_measure_;
Moment start_moment_;
Link_array<Music> text_events_;
int start_measure_;
Moment start_moment_;
+ Rational last_main_moment_;
Spanner *mmrest_;
Link_array<Spanner> numbers_;
Spanner *mmrest_;
Link_array<Spanner> numbers_;
for (int i = 0; i < numbers_.size(); i++)
add_bound_item (numbers_[i], it);
}
for (int i = 0; i < numbers_.size(); i++)
add_bound_item (numbers_[i], it);
}
if (last_rest_)
{
add_bound_item (last_rest_,it);
if (last_rest_)
{
add_bound_item (last_rest_,it);
{
SCM smp = get_property ("measurePosition");
Moment mp = (unsmob_moment (smp)) ? *unsmob_moment (smp) : Moment (0);
{
SCM smp = get_property ("measurePosition");
Moment mp = (unsmob_moment (smp)) ? *unsmob_moment (smp) : Moment (0);
-
- if (mmrest_ && !mp.to_bool ())
+
+ Moment now =now_mom ();
+ if (mmrest_
+ && now.main_part_ != last_main_moment_
+ && mp.main_part_ == Rational (0))
{
last_rest_ = mmrest_;
last_numbers_ = numbers_;
{
last_rest_ = mmrest_;
last_numbers_ = numbers_;
int cur = gh_scm2int (get_property ("currentBarNumber"));
int num = cur - start_measure_;
last_rest_->set_grob_property ("measure-count", gh_int2scm (num));
int cur = gh_scm2int (get_property ("currentBarNumber"));
int num = cur - start_measure_;
last_rest_->set_grob_property ("measure-count", gh_int2scm (num));
Grob * last = last_numbers_.size() ? last_numbers_[0] : 0;
if (last && last->get_grob_property ("text") == SCM_EOL)
{
Grob * last = last_numbers_.size() ? last_numbers_[0] : 0;
if (last && last->get_grob_property ("text") == SCM_EOL)
{
+
+ last_main_moment_ = now.main_part_;