Since the fix for #4355, respectively commits 8fa2d858 and 0382ed88, it
is not possible anymore to subdivide beams that are longer than a
quarter note.

\version "2.19.32"

{
  \set subdivideBeams = ##t
  % This is correctly subdivided
  \set baseMoment = #(ly:make-moment 1 8)
  \repeat unfold 16 c'16
 
  % This should always keep one beam
  \set baseMoment = #(ly:make-moment 1 4)
  c' 16 [ \repeat unfold 14 c' c' ]
 
}

The behaviour is consistent with the feature request for #4355, namely:
the dividing beam should reflect the length of the following group,
which is 1/4 and results in no beam.

However, I think that this behaviour should be changed once more in that
subdivideBeam leaves *at least* one beam.

I admit I don't understand the modified code as per 0382ed88:

  // Set the count on each side of the stem
  // We need to run this code twice to make both the
  // left and the right counts work properly
  for (int i = 0; i < 2; i++)
    for (vsize i = 1; i < infos_.size () - 1; i++)
      {
        Direction non_flag_dir = other_dir (flag_directions[i]);
        if (non_flag_dir)
          {
            int importance = infos_[i + 1].rhythmic_importance_;
            int count = (importance < 0 && options.subdivide_beams_)
                        ? subdivide_beam_count
                        : min (min (infos_[i].count (non_flag_dir),
                                        infos_[i + non_flag_dir].count
(-non_flag_dir)),
                                   infos_[i - non_flag_dir].count
(non_flag_dir));

            infos_[i].beam_count_drul_[non_flag_dir] = count;
          }
      }

so I don't know whether it would be better to
- only consider values smaller than 1/4 in the calculation or
- ensure (in the last line?) that at least one beam is left.

I hope this is an easy fix.

Urs

_______________________________________________
bug-lilypond mailing list
bug-lilypond@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-lilypond

Reply via email to