Menu

#1150 RehearsalMark at start of line should be printed over an imaginary bar line

Accepted
nobody
None
Defect
2019-12-10
2010-06-25
Anonymous
No

Originally created by: *anonymous

Originally created by: PhilEHol...@googlemail.com

Reported by Xavier Scheuer:

RehearsalMark at begin of line should not be printed above the Clef but instead like if there was an "invisible" BarLine just before the note (i.e. after Clef and KeySignature).

[Verified as the same in 2.12.3 and 2.13.24]

\score {
  \relative c' {
    \repeat unfold 8 c1 \break
    \mark \default
    \repeat unfold 8 c1
  }
}

1 Attachments

Related

Issues: #712

Discussion

  • Google Importer

    Google Importer - 2010-06-25

    Originally posted by: percival.music.ca@gmail.com

    This has been discussed a bit on -devel; do we have a solid reference that supports this claim?

     
  • Google Importer

    Google Importer - 2010-06-25

    Originally posted by: x.sche...@gmail.com

    The fact that I have *never* seen a RehearsalMark placed like that
    in existing score, maybe (also have a look on IMSLP)?

    Or the fact that it used to have a "shift" for RehearsalMark in
    LilyPond before would suggest that it should be the intended behaviour?

    Please also see the intersting messages (and ideas to solve this issue)
    by Neil Puttock here:
    http://lists.gnu.org/archive/html/bug-lilypond/2010-06/msg00125.html

     
  • Google Importer

    Google Importer - 2010-06-25

    Originally posted by: x.sche...@gmail.com

    And again I do not agree with the chosen priority level.

    Since

      1. it can affect *every* existing lilypond score, and
      2. since it is an issue that definitely make lilypond scores
         _not_ look like "professional-looking" scores (as well as the
         current "about-to-be-solved" tempo placement),

    I would suggest at least "Priority-Medium", instead of "Priority-Low".

    PS: OK, I'm not very objective...  It is actually one of my top
        "Most Annoying Bugs" in LilyPond.  ;-D

     
  • Google Importer

    Google Importer - 2010-06-25

    Originally posted by: percival.music.ca@gmail.com

    I repeat, do you have a solid reference?  (hint: "I looked at a bunch of scores" is not a solid reference)

    Also, we don't second-guess medium/low priorities; there's no functional difference between them anyway.  If you're seriously annoyed by this issue, then either start working on a patch or offer a bounty.  And find a reputable engraving reference (hint: we have a bibliography of such sources) to back up your claim.

     
  • Google Importer

    Google Importer - 2010-06-25

    Originally posted by: reinhold...@gmail.com

    Gardner Read does not mention anything about rehearsal marks at the beginning of a line... (he only says that alternatively bar numbers might be used, and they should go above/immedately to the RIGHT of the clef. he even gives an example that a bar number to the left of the clef is INCORRECT...)

    On the other hand, looking at a bunch of scores with rehearsal marks, they show the following behaviour:
    -) Beethoven's 9th by Breitkopf: mark centered at the right end of the key signature
    -) Haydn's Jahreszeiten by Universal Edition: mark just above the key signature (to the right of the clef)
    -) Gounod's Messe Solennelle by Edition Peters: Mark above the first note (to the right of the key signature)
    -) Beethoven's Missa solemnis by Breitkopf: Mark centered on a "virtual" bar line between the key signature and a possible time signature or the next note.
    -) Mahler's 8th by Universal Edition: Mark centered on a "virtul" bar line after the key signature
    -) Puccini's Il Tabarro by Ricordi: Mark between the piano and the vocal staves right above the clef.

    So, Ricordi's Il Tabarro is the only score that shows the same behavior as LilyPond currently does. All other scores show the mark at least after the clef, most of the times also after the key signature...

    Cheers,
    Reinhold

     
  • Google Importer

    Google Importer - 2010-08-30

    Originally posted by: PhilEHol...@googlemail.com

    FWIW I'm currently looking at a Chappell score of "The Gondoliers" in C, so no key sig, and the rehearsal mark appears to the right of the clef, where a key sig might be, so +1 for this being incorrectly rendered in LilyPond.

     
  • Google Importer

    Google Importer - 2010-09-26

    Originally posted by: x.sche...@gmail.com

    Anyway, can't we use Neil's

      RehearsalMark #'X-offset = #shift-right-at-line-begin

    or

      RehearsalMark #'after-line-breaking =
    #(lambda (grob)
        ;; apply shift
        (shift-right-at-line-begin grob)
        ;; call default callback
        (ly:side-position-interface::move-to-extremal-staff grob))

    as a solution (at least temporary)?

    It is indeed better than current behaviour, although there is no clear
    "solid reference" or "common practice", as pointed by Reinhold's list
    (BTW thank you Reinhold).

    Cheers,
    Xavier

     
  • Google Importer

    Google Importer - 2011-08-07

    Originally posted by: x.sche...@gmail.com

    See also Neil's improved workaround, which places the RehearsalMark
    after the key signature, and do not add a further shift to begin repeat
    bar at begin of line.
    Kind of perfect workaround!

    \layout {
      \context {
        \Score
        \override RehearsalMark #'after-line-breaking =
        #(lambda (grob)
           (let* ((parent (ly:grob-parent grob X))
                  (elts (ly:grob-array->list (ly:grob-object parent 'elements)))
                  (symbols (filter identity (map (lambda (elt)
                                                   (ly:grob-property elt
    'break-align-symbol #f))
                                                 elts))))
             (and (= (ly:item-break-dir grob) RIGHT)
                  (not (memq 'staff-bar symbols))
                  (ly:grob-translate-axis! grob (interval-length
    (ly:grob-extent parent parent X)) X))
             (ly:side-position-interface::move-to-extremal-staff grob)))
      }
    }

    http://lists.gnu.org/archive/html/lilypond-user/2011-08/msg00131.html

     
  • Google Importer

    Google Importer - 2013-02-13

    Originally posted by: x.sche...@gmail.com

    Is there something wrong with Neil's code that prevents it to be
    actually implemented as LilyPond's default behavior?

     
  • Google Importer

    Google Importer - 2013-04-03

    Originally posted by: k-ohara5...@oco.net

    The code in comment #8 moves the rehearsal mark after it has been placed according to the options described at <http://lilypond.org/doc/v2.16/Documentation/notation/aligning-objects#using-the-break_002dalignable_002dinterface> so putting comment #8 workaround in LilyPond would make the options described in that section of the documentation rather useless.

    Better to use the documented method for the workaround:
    \layout { \context { \Score
      \override Clef #'break-align-anchor-alignment = #RIGHT
      \override KeySignature #'break-align-anchor-alignment = #RIGHT
      \override RehearsalMark #'break-align-symbols = #'(staff-bar key-signature clef)
    }}

     
  • Google Importer

    Google Importer - 2013-04-17

    Originally posted by: k-ohara5...@oco.net

    The common practice that we want LilyPond to produce by default is described in comment 5 above.

    Of these examples, only two are described as putting the mark on the [virtual' bar line.  IMSLP.org has these scores; the full scores on imslp.org show no rehearsal marks, but the parts do.  The last five start-of-line rehearsal marks in the violin and viola parts are shown in the attached images.  In cases where the rehearsal mark would overlap a tempo indication, the rehearsal mark is shifted up.  The marks are placed by hand, and move a bit for the best fit, but I would say the nominal position is centered over the right edge of the time signature. 

    LilyPond produce that placement since version 2.14 by adjusting the defaults as shown at the top of issue 3279.

     
  • Google Importer

    Google Importer - 2013-04-18

    Originally posted by: x.sche...@gmail.com

    I would clearly prefer RehearsalMark to be placed above the "virtual"
    bar line at line break as default behaviour.

    Out of the six examples given by Reinhold, 2 uses this practice (so it
    is non negligible), one put Mark above the first note and 2 above the
    key signature (BTW the compromise between first note and key signature
    would be the virtual bar line).

    And the main reason I'm pushing for this is that this has a logical
    justification: RehearsalMarks are placed above the bar line (in the
    middle of a line) or "where the bar line would be" at line breaks.

    If you want to make an exception for RehearsalMarks at line breaks and
    align them on the key signature by default, I'm fine, as soon as it is
    also possible to override this and choose to align on the bar line.

    The example "Puccini's Il Tabarro by Ricordi" should not count as
    "above the clef".  The first part is in C major (same key signature
    for all the instruments in the score), and number "2" is indeed above
    the clef in order to avoid the tempo indication above time signature
    change.  But see number 7, 12, 13, 14, 17, 18, 19, 20 and 24
    the placement is non consistent during the piece.

    When there is a key signature it is usually placed at the right side
    of it (virtual bar line ?) -> 13, 14, 18;
    sometimes above the key signature (avoid tempo collision) -> 17
    Sometimes it is above the first note (or even more to the right)
    -> 19, 20.

    Collision avoidance between RehearsalMark and tempo indications also
    fluctuates: sometimes Mark above tempo (13, 20), sometimes Mark shifted
    left and tempo shifted right (17, 24), sometimes a mix of the
    2 solutions (7).

    Thank you.

     
  • Google Importer

    Google Importer - 2013-04-26

    Originally posted by: k-ohara5...@oco.net

    After the fix for issue 3279 that should appear in version 2.17.17,
    the rehearsal marks will be placed over the right edge of the key-signature.  The positioning uses the documented for break-alignable-interface; so you can, for example, have the mark to go to the right of a time-signature as well.

    The workaround in comment 8 assumed that the default was the extreme left, so it needs to be amended.  Now it need only move the mark a small amount, 1-staff-space, to the right of the default position, when it is at the beginning of a line :
        \override Score.RehearsalMark #'after-line-breaking = #
        (lambda (grob)
          (let* ((parent (ly:grob-parent grob X))
                 (elts (ly:grob-array->list (ly:grob-object parent 'elements)))
                 (symbols (filter identity (map (lambda (elt)
                                                (ly:grob-property elt
                                                   'break-align-symbol #f))
                                                 elts))))
            (and (= (ly:item-break-dir grob) RIGHT)
                 (not (memq 'staff-bar symbols))
                 (ly:grob-translate-axis! grob 1.0 X))
            (ly:side-position-interface::move-to-extremal-staff grob)))

    The documentation implies that there is a way to set the options so that LilyPond would do exactly what this issue asks, to position the mark "if no objects in the list are visible" <http://lilypond.org/doc/v2.17/Documentation/notation/aligning-objects#using-the-break_002dalignable_002dinterface>.  But in fact, if there is no object for the mark to align to, it moves all the way to the left.

    Also, a regression test 'input/regression/prefatory-empty-spacing.ly' says:
      "The [rehearsal mark at begin-of-line] A is atop an invisible barline.
    The barline, although invisible, is also translated because it is the last one
    of the break alignment."

     
Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.