0

In Lilypond I am trying to add a mark into the lyrics that looks like a tie or a slur, to indicate that the singer should not take a breath at that point in the music. I believe the technical term is a "lyric liaison" but I could be mistaken. Here's an example that I photographed:

Lyric liaison example

In this example, the singer should not breathe in bar 2, indicated by a "slur" mark spanning from the end of the word "high" to the start of the word "in".

I found that you can use the "~" character to insert an elision into the lyrics, but this is primarily used to assign two words to the same note. I then tried to trick Lilypond into doing what I wanted by eliding the word "high" to a space, which is almost correct, but the alignment is off. The slur starts before the end of the word "high" and stops in the space between "high" and "in".

\relative {
  \key bes \major
  \time 2/2
  bes'4 bes c8 bes a g | f2. f4 | g bes bes a | bes2 bes
}
\addlyrics {Ding dong! mer -- ri -- ly on high~ in heav'n the bells are ring -- ing:}

Putting the space and the tilde the other way around produces a similar effect: just as wrong but in the opposite direction.

What am I doing wrong?

Update 01 March 23

I seem to be getting somewhere but now I'm getting thwarted and frustrated by a lack of understanding of Scheme syntax.

I've been able to kludge a curved path into the lyrics and then muck about with the alignment to realign the text syllable back up with the note.

\version "2.22.1"

#(define-markup-command (liaise layout props text) (markup?)
  "Put a liaison mark after syllable in lyric text"
  (interpret-markup layout props
    #{
      \markup {
        #text
        \override #'(filled . #t)
        \path #0.10 #'(
          (moveto 0 0)
          (curveto 2 -1 4 -1 6 0)
          (curveto 4 -0.9 2 -0.9 0 0)
        )
      }
    #}
  )
)

\relative c' { c4 d e f | g2 a}
\addlyrics { one two three four
             \once \override LyricText.self-alignment-X = #-0.8 
             \markup \liaise five
             six }

This achieves the following result: example lyric liaison

But there are still a few things that I can't quite work out.

  1. I would like to make the \once \override LyricText.self-alignment-X = #-0.8 bit adjustable in the markup function, but I can't figure out a) how to put this line into the function without throwing errors or b) how to make the #-0.8 bit a user-definable parameter or property.
  2. I would like to be able to have the user adjust the length of the curve manually, which means I also need to calculate 1/3 and 2/3 of the length in order to put in the control points in the curveto commands, but again, I haven't the foggiest how to do this and any attempt I make just results in syntax errors.

Any help?

mpgrayer
  • 33
  • 4
  • it would appear (based on this mailing list response from 2016) that the short answer is: "you can't". https://lists.gnu.org/archive/html/lilypond-user/2016-09/msg00347.html – mpgrayer Feb 09 '23 at 16:02

0 Answers0