DescriptionIssue 3560: Completion_heads_engraver with \scaleDurations
Both the Completion_heads_engraver and Completion_rest_engraver have
to make the decision whether to interpret a scale factor on a note or
as actually scaling the note duration itself (similar to
\times/\tuplet) or merely as an artifical means of shifting the onset
of the next note (or, actually, combination of both). The completion
engravers need to make an actual decision here.
The previously employed heuristic was that integer scale factors were
interpreted as a delay of the next onset while other rational scale
factors implied an actual scaling of the note value. In the first
case, any durations produced by the completion engravers received a
scale factor of 1, in the second, they inherited the original scale
factor. The visual note duration needed for filling the measure
depended on the chosen scale factor.
This heuristic lead to surprises like issue 1772: the behavior of
issue 1772 was triggered by scale factors like *3/2 but not by *3/1.
Now the heuristic has been dropped, so either scale factor will lead
to the observed behavior.
The solution is to completely refrain from using scaled durations in
the presence of completion engravers for the visual arrangement of
music, instead using the more cumbersome form of using parallel music
with skips which also has the advantage of creating more accurate
Midi.
Since the completion engravers can't otherwise make a consistent
decision for choosing the scale factor of the resulting music, it is
best to retain the factor of the original note/rest duration.
Patch Set 1 #Patch Set 2 : Rewrite regtests #Patch Set 3 : Combining with other regtest proposals is left as an exercise to the reader... #
Total comments: 5
MessagesTotal messages: 10
|