Comment #41 on issue 3560 by [email protected]: Completion_heads_engraver with \scaleDurations
http://code.google.com/p/lilypond/issues/detail?id=3560

This patch doesn't change the default behavior, so the original email request <http://lists.gnu.org/archive/html/bug-lilypond/2013-09/msg00061.html> and issue 1772 each need overrides of 'completionFactorUnit' to get their desired behaviors.

But it is very hard to work out in the "ancient melody" regression test what scaling factors are in effect, and thus why the various settings of completionFactorUnit work as they do.

There is a 'todo' comment in the patch suggesting a new property, maybe called 'completionFactor', to set the preferred scaling of the split notes, which \scaleDurations would update. If that is implemented, we won't need the complexity of this patch, so let's just skip to what we really want.

Let \scaleDurations 2/3 {..} and \tuplet 3/2 {..} set completionFactor to 2/3 (times any previously set value for when \tuplets are nested) at the beginning of the {..} and revert it at the end. Let Completion_*_engraver split notes into durations that use completionFactor. Then
 \scaleDurations 2/1 { c4 d2 c4 }  =>  { c4*2 d4*2~ | d4*2 c4*2 }
 { d1*3/2 r2 }  =>  { d1~ | d2 r2 }
 { c2 d1 c2 }   =>  { c2 d2~ | d2 c2 }
and everybody wins.

(Better if \tuplet and \scaleDurations and \times insert events that Completion_*_engraver listens for, instead of PropertySets, just in case somebody moves the Completion_*_engraver to Staff context, for some unforeseen reason.)

--
You received this message because this project is configured to send all issue notifications to this address.
You may adjust your notification preferences at:
https://code.google.com/hosting/settings

Reply via email to