+ if (closest_usable_duration_log == 15)
+ closest_usable_duration_log = minimum_usable_duration_log;
+ if (closest_usable_duration_log == -15)
+ closest_usable_duration_log = maximum_usable_duration_log;
+
+ return closest_usable_duration_log;
+}
+
+int
+calc_measure_duration_log (Grob *me)
+{
+ SCM sml = dynamic_cast<Spanner *> (me)->get_bound (LEFT)
+ ->get_property ("measure-length");
+ Rational ml = (unsmob<Moment> (sml)) ? unsmob<Moment> (sml)->main_part_
+ : Rational (1);
+ double measure_duration = ml.Rational::to_double ();
+ bool force_round_up = to_boolean (scm_list_p (scm_member (scm_cons (scm_from_int64 (ml.numerator ()),
+ scm_from_int64 (ml.denominator ())),
+ me->get_property ("round-up-exceptions"))));
+ return calc_closest_duration_log (me, measure_duration, force_round_up);