Am Fr., 7. Dez. 2018 um 06:08 Uhr schrieb Peter Crighton <petecrigh...@gmail.com>: > > On Fri, 7 Dec 2018 at 03:00, Ben <soundsfromso...@gmail.com> wrote: >> >> On 12/6/2018 7:49 PM, Peter Crighton wrote: >> >> Hello 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
This is one of my older codings. As far as adding text to glissandi is concerned, I use a better coding nowadays, I'll probably out it in LSR > > > Thanks, that helped a lot! I boiled it down to: > > \version "2.19.82" > 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))) You may replace the following line: > $(make-music 'EventChord 'elements (list (make-music 'GlissandoEvent))) with <>\glissando or delete it and put \glissando in \one below. Both works. > #}) > > one = \relative c'' { > \glissTweak #`((0 . ((Y-offset . 0.25))) > (1 . ((Y-offset . -0.25)))) > g2 a > } > two = \relative c'' { > \context Voice = "one" { > c2 d > } > } > \new Staff << > \new Voice = "one" \one > \two > >> > > This is lovely and very flexible and does what I need it to do (and more). > But I would also be interested in a more minimal version because I usually > only care about Y-offsets. Preferably something that wouldn’t remove the > \glissandos from the syntax, so I could have something like > > \once \override Glissando.Y-offset = > #(lambda (grob) (and > (if (= 0 (ly:grob-property grob 'glissando-index)) '0.25) > (if (= 1 (ly:grob-property grob 'glissando-index)) '-0.25))) > <g c>2\glissando <a d> > > if only that would work. It probably won’t be as easy as that. But my Scheme > is very modest, and I don’t even know where to begin with something like > that. Any ideas? It doesn't work because the return value is unspecified, if glissando-index is zero. Try: { \once \override Glissando.Y-offset = #(lambda (grob) (cond ((= 0 (ly:grob-property grob 'glissando-index)) 1.25) ((= 1 (ly:grob-property grob 'glissando-index)) -1.25) )) <g c>2\glissando <a d> } Ofcourse there is no coding yet, if glissando-index is greater than 1. Btw, there's no need to prepend numbers in guile with a '-sign Cheers, Harm _______________________________________________ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user