Hi David (et al.),

>> Is the built-in** lyric tie/elision tweakable?

> There's no LyricTie grob, so no convenient way to tweak it.   You
> could modify "tied-lyric" in scm/define-markup-commands.scm, since
> that's what's engaged with the tilde.

I manually tweaked that function (see snippet, below), by adding an #:hspace 
-1.25 and #:hspace -1 as “[negative] padding”. The default gives


while the tweaked version gives the far more pleasing


But I can’t seem to figure out how to add left-pad and right-pad as properties 
(with default 0) — I keep getting “unbound variable” errors. If anyone could 
help, I’d appreciate it.

Thanks,
Kieren.

%%%  SNIPPET BEGINS
(define-markup-command (tied-lyric layout props str)
  (string?)
  #:category music
  #:properties ((word-space))
  "
@cindex simple text strings with tie characters

Like simple-markup, but use tie characters for @q{~} tilde symbols.

@lilypond[verbatim,quote]
\\markup \\column {
  \\tied-lyric #\"Siam navi~all'onde~algenti Lasciate~in abbandono\"
  \\tied-lyric #\"Impetuosi venti I nostri~affetti sono\"
  \\tied-lyric #\"Ogni diletto~e scoglio Tutta la vita~e~un mar.\"
}
@end lilypond"
  (define (replace-ties tie str)
    (if (string-contains str "~")
        (let*
            ((half-space (/ word-space 2))
             (parts (string-split str #\~))
             (tie-str (markup #:hspace half-space #:hspace -1.25
                              #:musicglyph tie
                              #:hspace half-space #:hspace -1))
             (joined  (list-join parts tie-str)))
          (make-concat-markup joined))
        str))

  (define short-tie-regexp (make-regexp "~[^.]~"))
  (define (match-short str) (regexp-exec short-tie-regexp str))

  (define (replace-short str mkp)
    (let ((match (match-short str)))
      (if (not match)
          (make-concat-markup (list
                               mkp
                               (replace-ties "ties.lyric.default" str)))
          (let ((new-str (match:suffix match))
                (new-mkp (make-concat-markup (list
                                              mkp
                                              (replace-ties "ties.lyric.default"
                                                            (match:prefix 
match))
                                              (replace-ties "ties.lyric.short"
                                                            (match:substring 
match))))))
            (replace-short new-str new-mkp)))))

  (interpret-markup layout
                    props
                    (replace-short str (markup))))
%%%%  SNIPPET ENDS
________________________________

Kieren MacMillan, composer
‣ website: www.kierenmacmillan.info <http://www.kierenmacmillan.info/>
‣ email: i...@kierenmacmillan.info <mailto:i...@kierenmacmillan.info>
_______________________________________________
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user

Reply via email to