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

I have my problems taking issue 1772 seriously at the same time as this issue.

The fundamental problem that we are dealing with is that scaled durations are used for multiple purposes. One purpose is to have basically unmarked tuplets where the displayed timing is a differently scaled version of the real timing.

Another purpose is to juggle with the onset of the next following note/barline/whatever while not actually wanting to change the duration of the note as such.

How do we deal with this in Midi? It should give us a pointer into what we want the completion engravers to do.

It also definitely means that either one or the other use cases _will_ break when using Completion_heads_engraver. Looking at the code, it seems like it makes a distinction between scaled durations that make things shorter, and scaled durations that make things longer. I'm not sure of the results (and changing the code around partly lead to infinite loops and other stuff), but it's a reasonable guess that the intent is to have the "scale the durations" interpretation when the factor is smaller than 1 and the "shift next onset but keep the duration" interpretation when the factor is larger than 1.

I haven't checked how well this theory holds up in practice.

However, it is worthwhile to note that \times/\tuplet does by far the bulk of its work by scaling durations, with tuplet brackets just being the topping on the scaled results (probably not even visible to Midi).

So with the current setup, we might not have much of an option other than interpreting scaled durations _exclusively_ as scaled durations and nothing else, and in that case, most of the examples of issue 1772 are invalid: you should work with a combination of unscaled note and subsequent or parallel \skip instead if you want Midi interpretation and/or completion engravers to have a different view.

--
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