lilypond-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Is the description in IR for force-hshift incorrect?


From: Neil Puttock
Subject: Is the description in IR for force-hshift incorrect?
Date: Tue, 24 Mar 2009 22:46:20 +0000

Hi everybody,

The IR gives the following description for 'force-hshift:

`This specifies a manual shift for notes in collisions. The unit is
the note head width of the first voice note.'

Am I mistaken if I understand this to mean that any shifts are scaled
in terms of the noteheads in \voiceOne?

Every example I've tested points to the unit being the first head in
the lower voice (\voiceTwo).  Consider the following snippet:

\relative c'' {
  << {
    c4*4
    \once \override NoteColumn #'force-hshift = #1
    c4*4
    c1
  }
  \\
  {
    a1
    a1
    \once \override NoteColumn #'force-hshift = #1
    a4*4
  }
  >>
}

In the second bar, the upper voice is shifted to the right one
semibreve space, whereas the shifted lower voice in the third bar is
clearly moved the width of a filled notehead; both results imply the
unit to be the notehead in the lower voice.

Judging by the code in note-collision.cc, I can't imagine a situation
(at least in the polyphonic case) whereby the the upper voice will
determine the spacing increment; the following code always seems to
return the width of the first head in \voiceTwo:

 375   Real wid = 0.0;
 376   do
 377     {
 378       if (clash_groups[d].size ())
 379         {
 380           Grob *h = clash_groups[d][0];
 381           Grob *fh = Note_column::first_head (h);
 382           if (fh)
 383             wid = fh->extent (h, X_AXIS).length ();
 384         }
 385     }
 386   while (flip (&d) != UP);

Regards,
Neil

Attachment: force-hshift.png
Description: PNG image


reply via email to

[Prev in Thread] Current Thread [Next in Thread]