--- /dev/null
+\version "2.18.0"
+
+\header {
+ lsrtags = "rhythms"
+
+ texidoc = "
+The beams of consecutive 16th (or shorter) notes are, by default, not
+subdivided. That is, the three (or more) beams stretch unbroken over
+entire groups of notes. This behavior can be modified to subdivide the
+beams into sub-groups by setting the property @code{subdivideBeams}.
+When set, multiple beams will be subdivided at intervals defined by the
+current value of @code{baseMoment} by reducing the multiple beams to
+the number of beams that indicates the length of the sub-group.
+Note that @code{baseMoment}
+defaults to one over the denominator of the current time signature if
+not set explicitly. It must be set to a fraction giving the duration of
+the beam sub-group using the @code{ly:make-moment} function, as shown
+in this snippet. Also, when @code{baseMoment} is changed,
+@code{beatStructure} should also be changed to match the new
+@code{baseMoment}:
+
+"
+ doctitle = "Subdividing beams"
+} % begin verbatim
+
+\relative c'' {
+ c32[ c c c c c c c]
+ \set subdivideBeams = ##t
+ c32[ c c c c c c c]
+
+ % Set beam sub-group length to an eighth note
+ \set baseMoment = #(ly:make-moment 1/8)
+ \set beatStructure = #'(2 2 2 2)
+ c32[ c c c c c c c]
+
+ % Set beam sub-group length to a sixteenth note
+ \set baseMoment = #(ly:make-moment 1/16)
+ \set beatStructure = #'(4 4 4 4)
+ c32[ c c c c c c c]
+}
-%% DO NOT EDIT this file manually; it is automatically
-%% generated from LSR http://lsr.di.unimi.it
-%% Make any changes in LSR itself, or in Documentation/snippets/new/ ,
-%% and then run scripts/auxiliar/makelsr.py
-%%
-%% This file is in the public domain.
+% DO NOT EDIT this file manually; it is automatically
+% generated from Documentation/snippets/new
+% Make any changes in Documentation/snippets/new/
+% and then run scripts/auxiliar/makelsr.py
+%
+% This file is in the public domain.
+%% Note: this file works from version 2.18.0
\version "2.18.0"
\header {
beams into sub-groups by setting the property @code{subdivideBeams}.
When set, multiple beams will be subdivided at intervals defined by the
current value of @code{baseMoment} by reducing the multiple beams to
-just one beam between the sub-groups. Note that @code{baseMoment}
+the number of beams that indicates the length of the sub-group.
+Note that @code{baseMoment}
defaults to one over the denominator of the current time signature if
not set explicitly. It must be set to a fraction giving the duration of
the beam sub-group using the @code{ly:make-moment} function, as shown
\set baseMoment = #(ly:make-moment 1/16)
\set beatStructure = #'(4 4 4 4)
c32[ c c c c c c c]
-}
+} % begin verbatim
if (infos_.size () <= 1)
return;
+ int subdivide_beam_count = intlog2(options.base_moment_.main_part_.den())-2;
+
unbeam_invisible_stems ();
if (infos_[0].start_moment_.grace_part_)
if (non_flag_dir)
{
int importance = infos_[i + 1].rhythmic_importance_;
- int start_dur = intlog2(infos_[i+1].start_moment_.main_part_.den());
int count = (importance < 0 && options.subdivide_beams_)
- ? max(start_dur,3)-2 // 1/8 note has one beam
+ ? 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));