Hi Karol,
On Tue, Oct 25, 2016 at 5:15 PM, Karol Majewski <karo...@wp.pl> wrote: > Here's full code. It's important to applay my tie settings. OK, thank you. That helps enormously. Above, I mentioned moving the check for dot direction, and refactoring the two if-statements for more compact and maintainable code. This is what I meant: tweakTie = #(lambda (grob) (let* ((ties (ly:grob-array->list (ly:grob-object grob 'ties))) (notehead (ly:spanner-bound (car ties) LEFT)) (stem (ly:grob-object notehead 'stem)) (flag (ly:grob-object stem 'flag)) (dots (ly:grob-object notehead 'dot))) (if (> (length ties) 1) (begin (if (ly:grob? flag) (ly:grob-set-property! flag 'Y-extent (cons 4 0))) ; you set this below, at least partly... (for-each (lambda (tie) (ly:grob-set-nested-property! tie '(details skyline-padding) 5)) ties))) (if (ly:grob? dots) (let ((dot-dir (ly:grob-property dots 'direction))) (for-each (lambda (tie) (let ((tie-dir (ly:grob-property tie 'direction))) (ly:grob-set-nested-property! tie '(details skyline-padding) 5) (ly:grob-set-property! tie 'Y-offset (* -0.25 dot-dir)))) ties))))) %%%%% There seems to be some redundancy above. skyline-padding is set twice for at least some of the ties. Refactoring further... tweakTie = #(lambda (grob) (let* ((ties (ly:grob-array->list (ly:grob-object grob 'ties))) (notehead (ly:spanner-bound (car ties) LEFT)) (stem (ly:grob-object notehead 'stem)) (flag (ly:grob-object stem 'flag)) (dots (ly:grob-object notehead 'dot)) (dot-dir (if (ly:grob? dots) (ly:grob-property dots 'direction) #f))) (for-each (lambda (tie) ;; display line discussed below... (display dot-dir) (newline) (ly:grob-set-nested-property! tie '(details skyline-padding) 5) (if (ly:dir? dot-dir) (ly:grob-set-property! tie 'Y-offset (* -0.25 dot-dir)))) ties) (if (and (> (length ties) 1) (ly:grob? flag)) (ly:grob-set-property! flag 'Y-extent (cons 4 0))))) \layout { \context { \Score \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 \override TieColumn.before-line-breaking = #tweakTie } } { \time 3/8 f''4~ f''8~ f''4.~ f''4~ f''8 } > In the following example the third tie should be lowered by 0.25. It isn't, because apparently Dots don't have a direction set. I added a display line so you can see that the third tie has its direction set to '(). I think you discarded the right method of determining direction. In any case, hopefully my refactoring is of some use. David _______________________________________________ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user