From: Han-Wen Nienhuys Date: Fri, 14 Jun 2002 14:38:43 +0000 (+0000) Subject: * lily/spacing-spanner.cc (find_shortest): make 1/8 configurable: X-Git-Tag: release/1.5.61~1 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=36da1e37b3625cad19b5b2f2e749ac3f234f66c0;p=lilypond.git * lily/spacing-spanner.cc (find_shortest): make 1/8 configurable: introduce base-shortest-duration * lily/parser.yy (music_output_def_body): don't crash when \tempo in unexpected \midi{} is found. --- diff --git a/ChangeLog b/ChangeLog index fc4afe01fe..b1a5517021 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2002-06-14 Han-Wen Nienhuys + + * lily/spacing-spanner.cc (find_shortest): make 1/8 configurable: + introduce base-shortest-duration + + * lily/parser.yy (music_output_def_body): don't crash when \tempo + in unexpected \midi{} is found. + 2002-06-13 Jan Nieuwenhuizen * stepmake/GNUmakefile.in: Don't install stepmake. This breaks diff --git a/lily/parser.yy b/lily/parser.yy index 13ec353baa..05d570ab5b 100644 --- a/lily/parser.yy +++ b/lily/parser.yy @@ -658,7 +658,9 @@ music_output_def_body: */ int m = gh_scm2int ( $2->get_mus_property ("metronome-count")); Duration *d = unsmob_duration ($2->get_mus_property ("duration")); - dynamic_cast ($$)->set_tempo (d->length_mom (), m); + Midi_def * md = dynamic_cast ($$); + if (md) + md->set_tempo (d->length_mom (), m); } | music_output_def_body error { diff --git a/lily/spacing-spanner.cc b/lily/spacing-spanner.cc index 2d5204918c..f4c02b2068 100644 --- a/lily/spacing-spanner.cc +++ b/lily/spacing-spanner.cc @@ -42,7 +42,7 @@ public: static Real default_bar_spacing (Grob*,Grob*,Grob*,Moment); static Real note_spacing (Grob*,Grob*,Grob*,Moment, bool*); static Real get_duration_space (Grob*,Moment dur, Rational shortest, bool*); - static Rational find_shortest (Link_array const &); + static Rational find_shortest (Grob *, Link_array const &); static void breakable_column_spacing (Grob*, Item* l, Item *r, Moment); static void find_loose_columns () {} static void prune_loose_colunms (Grob*,Link_array *cols, Rational); @@ -343,7 +343,7 @@ Spacing_spanner::set_springs (SCM smob) set_explicit_neighbor_columns (all); - Rational global_shortest = find_shortest (all); + Rational global_shortest = find_shortest (me, all); prune_loose_colunms (me, &all, global_shortest); set_implicit_neighbor_columns (all); @@ -375,7 +375,7 @@ Spacing_spanner::set_springs (SCM smob) */ Rational -Spacing_spanner::find_shortest (Link_array const &cols) +Spacing_spanner::find_shortest (Grob *me, Link_array const &cols) { /* ascending in duration @@ -445,10 +445,11 @@ Spacing_spanner::find_shortest (Link_array const &cols) // printf ("duration %d/%d, count %d\n", durations[i].num (), durations[i].den (), counts[i]); } - /* - TODO: 1/8 should be adjustable? - */ + SCM bsd = me->get_grob_property ("base-shortest-duration"); Rational d = Rational (1,8); + if (Moment *m = unsmob_moment (bsd)) + d = m->main_part_; + if (max_idx >= 0) d = d