Hi Karol, On Tue, Oct 25, 2016 at 9:35 AM, Karol Majewski <karo...@wp.pl> wrote: > OK, I'm trying to write something like this in scheme: > > if (stem-direction == UP && tie-direction == UP && note-has-a-dot == true) > { > \once \override Tie.details.skyline-padding = #5 > \once \override Tie.Y-offset = #-0.25 > } > > Please, David or Harm, correct my mistakes. So far I've got this: > > raiseTie = > #(lambda > (grob) > (let* > ((ties > (ly:grob-array->list > (ly:grob-object grob 'ties)))
"tie" is not a defined variable. When you bind "tie-dir" to a procedure, it will be evaluated, so "tie" has to be defined. > (tie-dir > (ly:grob-property tie 'direction)) > (notehead > (ly:spanner-bound > (car ties) LEFT)) > (stem > (ly:grob-object notehead 'stem)) > (stem-dir > (ly:grob-property stem 'direction)) > (flag > (ly:grob-object stem 'flag)) grob = TieColumn. TieColumn grobs store no reference to augmentation dots. 'dot is a part of the rhythmic-head-interface (http://lilypond.org/doc/v2.19/Documentation/internals/rhythmic_002dhead_002dinterface) which is supported by NoteHead. > (dot (ly:grob-object grob 'dot))) > (if Again, "tie" is not defined. > (and (= stem-dir 1) (= tie-dir 1) (ly:grob? dot)) > (begin "tie" is bound locally here. It is only usable within the lambda expression. > (for-each > (lambda > (tie) > (ly:grob-set-nested-property! tie '(details skyline-padding) 5)) > ties) > (for-each > (lambda > (tie) > (ly:grob-set-property! tie 'Y-offset -0.25)) ties))))) > > \layout { > \context { > \Score > \override TieColumn.before-line-breaking = #raiseTie > } > } > > Try this: raiseTie = #(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)) (stem-dir (ly:grob-property stem 'direction)) (flag (ly:grob-object stem 'flag)) (dot (ly:grob-object notehead 'dot))) (if (and (= stem-dir 1)(ly:grob? dot)) (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 = #raiseTie } } { \time 3/8 \voiceOne g'4~ g'8~ g'4~ g'8~ g'4.~ g'4~ g'8 } %%%% I hope this helps. You'll probably need to retool it to incorporate the features you began the thread with, but this should give you an idea of the principles involved. David _______________________________________________ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user