I use Lilypond 2.20.0. I have music and lyrics with a melisma defined like this:

music = {
    \time 4/4
    c'4 e g a
  \addlyrics {
    foo __ _ _! foo

I get this:

enter image description here

But I want the melisma extender line to go all the way up to the exclamation mark.

The behaviour is the same for any punctuation mark (! , . ?).

I tried disconnecting the ! from the melisma and connecting it to the next syllable, like so:

\addlyrics { foo __ _ _ !~foo }

but then I get this arc I do not want:

enter image description here

I consider this an ugly hack. If there's a way to make the arc invisible, I will consider this hack as a solution, if no other can be found.

But I prefer a solution where the punctuation mark just stays part of the melisma, only that the line is drawn up to the punctuation mark, leaving no space in between.

Any ideas?

  • 8
    Standard practice is for the punctuation to come immediately after the word, before the extension line.
    – phoog
    Sep 20 at 20:33
  • 1
    Is there a specific musical goal by straying from standard practice? As a singer, I would find this quite confusing unless the notation was explained elsewhere in the score. But if there's a particular musical intention, there may be more straightforward ways to communicate it.
    – Aaron
    Sep 20 at 21:44

Since you've indicated in a comment that you aren't in fact seeking to do something nonstandard, I'll add this as an answer:

Standard practice is for the punctuation to come immediately after the word, before the extension line.

This is of course easy to achieve in lilypond by including the punctuation with the syllable, thus: foo!.

It is also standard to use a slur to indicate the distribution of a single syllable over several notes. Some (including me) prefer the practice that prevailed until the late 20th century where slurs are used only with quarter notes or longer, that is, notes that don't have flags; with flagged notes, syllable distribution is indicated through beaming. The modern practice is to beam those notes according to the meter and to use slurs for syllable distribution as with flagless notes.

  • I sing a lot of music in the style you describe, using beams instead of slurs to indicate syllables. And I hate it!! It's far harder to read at speed — especially when you have long bars filled with individual quavers and semiquavers and not a beam in sight to give any structure to it! (I've never understood the attraction; after all, ink's not that expensive. And you don't find piano scores or instrumental parts written that way.) You can always tell my copy of the music: it's the one with slurs and beams all written in by hand…
    – gidds
    Sep 21 at 16:28
  • @gidds I know other people who feel the way you do; I can only say that I grew up singing from scores engraved in the more traditional way, and I find all the extraneous beams and especially slurs to be distracting. The metrical organization in a properly engraved score can be seen in the spacing. Instrumental scores have no words. But the worst thing about the slurs in my estimation is the frequency with which people misapprehend them as phrasing marks.
    – phoog
    Sep 21 at 17:17

A short answer is that your last version almost works; you can hide the arc by using a _ (which is displayed as a space) in place of the ~.

However, I'd also suggest that you slur the first three notes. That tells Lilypond that they take only one syllable, and so you only need a single melisma. And a slur would make it easier for singers to read.

There might be another option, if you specify the length of the syllable manually as per this question.

But I'd agree with phoog that it's rare to shift the punctuation this way; I'd recommend avoiding the whole issue and having it immediately follow the word.


I found this. I'll copy the content here just in case that page goes missing.

Adding punctuation to the end of an extender in melismata Punctuation can be added to the end of an extender in melismata by overriding the default stencil for LyricExtender.

For convenience, this snippet applies the stencil override as a tweak to the extender event.

enter image description here

%% http://lsr.di.unimi.it/LSR/Item?id=643
%% see also http://lilypond.org/doc/v2.18/Documentation/notation/common-notation-for-vocal-music

%LSR contributed by Neil Puttock

#(define (extend text . padding)
   (let ((extender (make-music 'ExtenderEvent))
   ;; optional padding
   (padding (if (pair? padding)
            (car padding)
         #(lambda (grob)
           (let* ((orig (ly:grob-original grob))
                  (siblings (ly:spanner-broken-into orig)))
             (if (or (null? siblings)
                 (and (>= (length siblings) 2)
                      (eq? (car (last-pair siblings)) grob)))
               (ly:lyric-extender::print grob)
               X RIGHT
               (grob-interpret-markup grob text)

%Define custom extenders, first with extra padding
extendComma = #(extend "," 0.2)
extendExclaim = #(extend "!")

\score {  
    \new Staff \new Voice = melody \relative c' {
      c4( d e f)
      g4( f e2)
    \new Lyrics \lyricsto melody {
      Aah \extendComma
      Ooh \extendExclaim
  \layout {
    \context {
      \consists "Tweak_engraver"

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.