Post by Peter CrightonHello all,
I have the following (reduced) scenario where one voice has a chord
with a glissando in it and I want to tweak both glissandos
differently. Is it possible? The second (currently commented out)
tweak is never applied even if I comment out the first tweak.
\version "2.19.82"
one = \relative c'' {
 g2
 -\tweak Y-offset #0.25
 \glissando a
}
two = \relative c'' {
 \context Voice = "one" {
  c2
  % this tweak is never applied
  % -\tweak Y-offset #-0.25
  \glissando d
 }
}
\new Staff <<
 \new Voice = "one" \one
 \two
Thanks,
Peter
A while ago, there was a function created that allowed tweaks like
you're asking - I think this is what you are looking for :) It should
get you started.
http://lilypond.1069038.n5.nabble.com/How-to-tweak-override-the-individual-Glissando-objects-in-a-chord-td149575.html
(see attached)
\version "2.19.82"
#(define (radians->degree radians)
 (/ (* radians 180) PI))
#(define ((gliss-plus-text padding text) grob)
 (let* ((text-stencil (grob-interpret-markup grob text))
        (spanner-stencil (ly:line-spanner::print grob))
        (left-bound-info (ly:grob-property grob 'left-bound-info))
        (y-left (cdar left-bound-info))
        (right-bound-info (ly:grob-property grob 'right-bound-info))
        (y-right (cdar right-bound-info))
        (slant (if (> y-right y-left) 1 -1))
        (spanner-stencil-x-length
           (interval-length (ly:stencil-extent spanner-stencil X)))
        (spanner-stencil-y-length
           (interval-length (ly:stencil-extent spanner-stencil Y)))
        (alpha
           (radians->degree
             (atan (/ spanner-stencil-y-length
spanner-stencil-x-length))))
        (spanner-center-X
           (interval-center (ly:stencil-extent spanner-stencil X)))
        (label-center-X (interval-center (ly:stencil-extent
text-stencil X))))
 (ly:stencil-combine-at-edge
   spanner-stencil
   Y UP
   (ly:stencil-translate
     (ly:stencil-rotate text-stencil (* slant alpha) 0 0)
     (cons (- spanner-center-X label-center-X) 0))
   (+ (* -0.5 spanner-stencil-y-length) padding))))
glissTweak =
#(define-music-function (parser location lst)(pair?)
#{
      \once \override Glissando #'after-line-breaking =
         #(lambda (grob)
           (let ((gliss-count (ly:grob-property grob 'glissando-index)))
           (map (lambda (x)
             (let ((gliss-nmbr (car x))
                   (property-value-alist (cdr x)))
               (if (eq? gliss-nmbr gliss-count)
                 (map
                   (lambda (y) (ly:grob-set-property! grob (car y)
(cdr y)))
                   property-value-alist)
                 #f)))
;Â Â Â Â Â Â Â Â Â Â Â Â $lst))) % for Version "2.14.2"
             lst)))
      $(make-music 'EventChord 'elements (list (make-music
'GlissandoEvent)))
#})
tweakedGliss = {
       \once \override Glissando #'minimum-length = #8
       \once \override Glissando #'springs-and-rods =
         #ly:spanner::set-spacing-rods
}
\relative c' {
       \override TextScript #'font-size = #-2
       <c e g bes d>2\glissando^"\"no tweaks\""
       <d, a' fis' c' e'>
       \tweakedGliss
       \glissTweak
         #`((0 . ((color . ,red)
                  (normalized-endpoints . (0 . 0.8))
                  (stencil . ,(gliss-plus-text -1.8
                                (markup #:italic #:fontsize -8
"gliss.")))))
            (1 . ((style . zigzag)))
            (2 . ((style . trill)
                  (color . (0.5 0.5 0.5))))
            (3 . ((style . dashed-line)))
            (4 . ((stencil . ,(gliss-plus-text 0
                                (markup #:italic #:fontsize -8 "gliss.")))
                  (normalized-endpoints . (0 . 0.7))
                  (color . ,green))))
       <c' e g bes d>2^"\"some tweaks\""
       <d, a' fis' c' e'>
       \once \override Glissando #'(bound-details right arrow) = ##t
       \glissTweak
         #`((0 . ((style . dashed-line)
                  (normalized-endpoints . (0 . -2.1))))
            (1 . ((stencil . #f)))
            (2 . ((stencil . #f)))
            (3 . ((stencil . #f)))
            (4 . ((style . dashed-line)
                  (normalized-endpoints . (0 . -1.5)))))
       <c' e g bes d>2^"\"some other tweaks\""
       <d, a' fis' c' e'>
}