Dear Lilyponders,

Many years ago, Aaron Hall wrote a function that would allow a cluster of
notes to be grouped together like a chant neume in modern notation, and
effectively represent a single note. In essence, a melisma.

However, I've noticed that I'm unable to use LyricText.self-alignment-X to
shift these notes/melismas relative to the Lyrics when I add a bit of
rubric notation, like a dagger. The preference is that the notes/melisma
start at the center of the text. There is no problem when it's just a
single note. Only when using this function.

Any idea what I might be missing, or other things to try?


Many thanks,
Matt

*Sort of MWE:*

\version "2.24.4"
\language "english"

%
% multiNoteNeume: Solution to note spacing issue (authored by Aaron Hall)
% [LINK]
https://lists.gnu.org/archive/html/lilypond-user/2020-10/msg00083.html
%
multiNoteNeume =
#(define-music-function
    (notes)
    (ly:music?)
    ;; Adjust this number to support longer runs of notes.
    (define denominator 11)
    (let ((dur (ly:make-duration 2 0 1 denominator))
            (count 0)
            (last '()))
        (for-some-music
            (lambda (m)
                (if (music-is-of-type? m 'rhythmic-event)
                    (begin
                        (set! count (1+ count))
                        (set! last m)
                        (ly:music-set-property! m 'duration dur)
                    #t)
                #f))
            notes)
        (if (ly:music? last)
            (ly:music-set-property! last
            'duration
                (ly:make-duration 2 0
                (- denominator (1- count))
                denominator)))
        notes))

redDagger = \markup {
    \with-color #red
    †
}

daggerAndGo = \markup { \override #'(word-space . 0.5) \line { { \redDagger
} Go } }

customLayout = \layout {
    ragged-last = ##t

    \context {
        \Staff
        \override TimeSignature.stencil = ##f
        \override BarLine.extra-spacing-width = #'(0 . 2)
    }

    \context {
        \Voice
        \override Stem.stencil = ##f
    }

    \context {
        \Lyrics
        lyricMelismaAlignment = #CENTER
    }
} % end layout

\score {
    \new Staff
    <<
        \new Voice = "Cantus"
        <<
            \relative c' {
                \multiNoteNeume {c'4 (b)} \bar "||"
                \multiNoteNeume {c4 (b)} \bar "||"
                c \bar "||"
            }
        >>
        \new Lyrics \lyricsto "Cantus" {
            Go % This is the model
            \tweak LyricText.self-alignment-X #1 \daggerAndGo % No shifting
of lyrics at all
            \tweak LyricText.self-alignment-X #0.47 \daggerAndGo % Single
note works
        }
    >>
    \customLayout
} % end score

% Paper settings
#(set! paper-alist (cons '("content-size" . (cons (* 3.25 in) (* 7 in)))
paper-alist))

zerospacing = #'((basic-distance . 0) (minimum-distance . 0) (padding . 0)
(stretchability . 0))

\paper {
    tagline = ##f
    #(include-special-characters)

    page-breaking = #ly:one-page-breaking

    #(set-paper-size "content-size")

    left-margin = 0.0\in
    top-margin = 0.0\in
    right-margin = 0.0\in
    bottom-margin = 0.0\in

    system-system-spacing =
        #'((basic-distance . 11) (minimum-distance . 11) (padding . 0)
(stretchability . 0))

    score-system-spacing =
        #'((basic-distance . 11) (minimum-distance . 11) (padding . 0)
(stretchability . 0))

    score-markup-spacing = \zerospacing
    markup-system-spacing = \zerospacing
    markup-markup-spacing = \zerospacing
    top-system-spacing = \zerospacing
    top-markup-spacing = \zerospacing
    last-bottom-spacing = \zerospacing
}

Reply via email to