[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Tie settings question
From: |
David Nalesnik |
Subject: |
Re: Tie settings question |
Date: |
Tue, 25 Oct 2016 17:47:20 -0500 |
Hi Karol,
On Tue, Oct 25, 2016 at 5:15 PM, Karol Majewski <address@hidden> 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
- Re: Tie settings question, (continued)
- Re: Tie settings question, Karol Majewski, 2016/10/25
- Re: Tie settings question, Karol Majewski, 2016/10/25
- Re: Tie settings question, Karol Majewski, 2016/10/25
- Re: Tie settings question, Karol Majewski, 2016/10/25
- Re: Tie settings question, Karol Majewski, 2016/10/25
- Re: Tie settings question,
David Nalesnik <=
- Re: Tie settings question, Karol Majewski, 2016/10/26
- Re: Tie settings question, Karol Majewski, 2016/10/26
- Re: Tie settings question, David Nalesnik, 2016/10/26