SCM
Spacing_spanner::set_springs (SCM smob)
{
- Grob *me = unsmob_grob (smob);
+ Spanner *me = unsmob_spanner (smob);
/*
can't use get_system() ? --hwn.
*/
vector<Grob*> all (get_root_system (me)->columns ());
+ vsize start = binary_search (all, (Grob*)me->get_bound (LEFT),
+ &Paper_column::compare);
+ vsize end = binary_search (all, (Grob*) me->get_bound (RIGHT),
+ &Paper_column::compare);
+ all = vector<Grob*>::vector<Grob*> (all.begin () + start,
+ all.begin () + end + 1);
+
set_explicit_neighbor_columns (all);
Spacing_options options;
shortest_in_measure = min (shortest_in_measure, this_shortest.main_part_);
}
else if (!shortest_in_measure.is_infinity ()
- && Item::is_breakable (cols[i]))
+ && Paper_column::is_breakable (cols[i]))
{
vsize j = 0;
for (; j < durations.size (); j++)
if (compound_note_space < 0 || wish_count == 0)
{
+ /*
+ Fixed should be 0.0. If there are no spacing wishes, we're
+ likely dealing with polyphonic spacing of hemiolas.
+
+ We used to have compound_fixed_note_space = options->increment_
+
+ but this can lead to numeric instability problems when we
+ do
+
+ inverse_strength = (compound_note_space - compound_fixed_note_space)
+
+ */
+
compound_note_space = base_note_space;
- compound_fixed_note_space = options->increment_;
+ compound_fixed_note_space = 0.0;
}
else if (to_boolean (me->get_property ("average-spacing-wishes")))
{
"head width) A 16th note is followed by 0.5 note head width. The\n"
"quarter note is followed by 3 NHW, the half by 4 NHW, etc.\n",
+
"average-spacing-wishes "
+ "base-shortest-duration "
+ "common-shortest-duration "
"grace-space-factor "
+ "packed-spacing "
+ "shortest-duration-space "
"spacing-increment "
- "base-shortest-duration "
"strict-note-spacing "
- "shortest-duration-space "
- "common-shortest-duration "
"uniform-stretching "
- "packed-spacing "
+
);
ADD_INTERFACE (Spacing_interface, "spacing-interface",