lilypond-user
[Top][All Lists]
Advanced

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

Shifting rests breaks beaming


From: Peter Crighton
Subject: Shifting rests breaks beaming
Date: Tue, 6 Sep 2016 17:42:31 +0200

Hello all,

based on Paul Morris’ restShifter (https://lists.gnu.org/archive/html/lilypond-user/2013-06/msg00088.html), I wrote a function beautifying the vertical placement of rests in a TabStaff. Unfortunately, this does seem to break rests under beams – or rather the beams themselves, they now sort of appear in front of the stave.
This has to do with the use of Rest.before-line-breaking – if I use Rest.after-line-breaking it seems to work, but I don’t really understand what either of them do, and I don’t know if this could break something else. Is using Rest.after-line-breaking the correct way to do this?


\version "2.19.47"

tabRestFix =
#(lambda (grob)
   (let* (
           (dur-log (ly:grob-property grob 'duration-log))
           (dot (ly:grob-object grob 'dot))
           (y-off (ly:grob-property grob 'Y-offset))
           )

     (cond
      ((= dur-log 2)
       (ly:grob-set-property! grob 'Y-offset
         (+ y-off 0.1))
       ))

     (cond
      ((> dur-log 2)
       (ly:grob-set-property! grob 'Y-offset
         (+ y-off -0.25))
       ))

     (cond
      ((= dur-log 4)
       (ly:grob-set-property! grob 'Y-offset
         (+ y-off 0.75))
       ))

     (cond
      ((and (ly:grob? dot)
            (> dur-log 4))
       (ly:grob-set-property! dot 'extra-offset '(0 . -1))
       ))
     ))

\new TabStaff \with {
  \override Rest.before-line-breaking = \tabRestFix
  %\override Rest.after-line-breaking = \tabRestFix
} <<
  \tabFullNotation
  \relative c' {
    c8[ r16 c]
  }
>>


Cheers,
Peter

--
Peter Crighton | Musician & Music Engraver based in Mainz, Germany
http://www.petercrighton.de

reply via email to

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