|
From: | Nick Payne |
Subject: | Re: NoteColumn shift in one voice affects dot position in another voice |
Date: | Sat, 26 Dec 2009 22:36:30 +1100 |
User-agent: | Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-GB; rv:1.9.1.5) Gecko/20091204 Thunderbird/3.0 |
On 26/12/09 20:46, David Kastrup wrote:
Nick Payne<address@hidden> writes:See below. When I shift the first note in voiceTwo to avoid a collision with the note in voiceFour, the dot on the rest that begins voiceOne gets separated from the rest and pretty much disappears under the following accidental. It looks to me as though Lilypond is trying to keep the dots for the rest in voiceOne and the A in voiceFour vertically aligned, regardless of whether the rest and the A are vertically aligned. You can see this quite clearly by setting the hshift value to something larger such as #2.I guess that this sort of thing needs some accounting and/or linear programming in order to arrive at a good solution. You go down the note column and put all "natural" dot columns in one list. Then you assign the best columns overall. Opening a new column in the total is expensive (but less so if the vertical distance to the last column is large), displacing a dot from its note costs corresponding to the displacement, least total cost is taken. Something like that.
Well, I can fix the output by doing: \version "2.13.9" \relative c'' { \time 3/4 \new Staff <<\new Voice { \voiceOne \once \override NoteColumn #'force-hshift = #0.1 \once \override Dots #'extra-offset = #'(-0.9 . 0) r8. <fis d>16 e2 } \new Voice { \voiceTwo \once \override NoteColumn #'force-hshift = #-0.4 e,4 cis'8 e, <a cis> e } \new Voice { \voiceFour \once \override NoteColumn #'force-hshift = #0.1 a,2. }
>> }but that's a rather nasty hack, especially when it has to be repeated quite a number of times through a score. I've also found that the problem only happens with a dotted rest. If I replace the dotted rest in voiceOne with a dotted note, then the dot doesn't get divorced from the note in the way that it does from the rest.
Nick
[Prev in Thread] | Current Thread | [Next in Thread] |