lilypond-user
[Top][All Lists]
Advanced

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

Re: Tie settings question


From: Karol Majewski
Subject: Re: Tie settings question
Date: Wed, 26 Oct 2016 13:20:58 +0200

OK, David, so let's move one square backward and try to use staff-position. The 
following code does compile but doesn't do what I want. Perhaps what I'm trying 
to achieve is just not possible.

%%%%%%%%%%%%%%%%%%%%%%

tweakTie =
#(lambda
  (grob)
  (let*
    ((ties
        (ly:grob-array->list
          (ly:grob-object grob 'ties)))
      (notehead
        (ly:spanner-bound
          (car ties) LEFT))
      (notehead-pos
        (ly:grob-property notehead 'staff-position))
      (stem
        (ly:grob-object notehead 'stem))
      (flag
        (ly:grob-object stem 'flag))
      (dot
        (ly:grob-object notehead 'dot))
      (dot-pos
        (if
          (ly:grob? dot)
          (ly:grob-property dot 'staff-position) #f)))
    (if
      (>
        (length ties) 1)
      (begin
        (if
          (ly:grob? flag)
          (ly:grob-set-property! flag 'Y-extent
            (cons 4 0)))
        (for-each
          (lambda
            (tie)
            (ly:grob-set-nested-property! tie '(details skyline-padding) 5)) 
ties)))
    (if
      (ly:grob? dot)
      (if
        (> dot-pos notehead-pos)
        (for-each
          (lambda
            (tie)
            (let
              ((tie-dir
                  (ly:grob-property tie 'direction)))
              (if
                (= tie-dir 1)
                (begin
                  (ly:grob-set-nested-property! tie '(details skyline-padding) 
5)
                  (ly:grob-set-property! tie 'Y-offset -0.25))))) ties)))
    (if
      (ly:grob? dot)
      (if
        (< dot-pos notehead-pos)
        (for-each
          (lambda
            (tie)
            (let
              ((tie-dir
                  (ly:grob-property tie 'direction)))
              (if
                (= tie-dir -1)
                (begin
                  (ly:grob-set-nested-property! tie '(details skyline-padding) 
5)
                  (ly:grob-set-property! tie 'Y-offset 0.25))))) ties)))))

\layout {
  \context {
    \Score
    \override TieColumn.before-line-breaking = #tweakTie
    \override Tie.details.height-limit = #1.25
    \override Tie.details.ratio = #0.25
    \override Tie.details.between-length-limit = #1
    \override Tie.details.wrong-direction-offset-penalty = #10
    \override Tie.details.min-length = #2
    \override Tie.details.min-length-penalty-factor = #30
    \override Tie.details.center-staff-line-clearance = #0.05
    \override Tie.details.tip-staff-line-clearance = #0.05
    \override Tie.details.staff-line-collision-penalty = #0
    \override Tie.details.dot-collision-clearance = #0
    \override Tie.details.dot-collision-penalty = #0
    \override Tie.details.note-head-gap = #0.15
    \override Tie.details.stem-gap = #0.15
    \override Tie.details.tie-column-monotonicity-penalty = #100
    \override Tie.details.tie-tie-collision-penalty = #25
    \override Tie.details.tie-tie-collision-distance = #0.5
    \override Tie.details.horizontal-distance-penalty-factor = #0
    \override Tie.details.same-dir-as-stem-penalty = #20
    \override Tie.details.vertical-distance-penalty-factor = #10
    \override Tie.details.intra-space-threshold = #0
    \override Tie.details.outer-tie-length-symmetry-penalty-factor = #0
    \override Tie.details.outer-tie-vertical-distance-symmetry-penalty-factor = 
#0
    \override Tie.details.outer-tie-vertical-gap = #0
    \override Tie.details.single-tie-region-size = #4
    \override Tie.details.skyline-padding = #0.05 % or #5
    \override Tie.details.multi-tie-region-size = #1
    \override Tie.line-thickness = #0.25
    \override Tie.thickness = #2
  }
}

{
 \time 3/8
  f''4~ f''8~ f''4.~ f''4~ f''8
}

%%%%%%%%%%%%%%%%%%%%%%%%





reply via email to

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