On 2020-10-04 2:17 pm, Matthew Fong wrote:
(I apologize if I've posted multiple times -- I am not seeing my post at
all.)

Three times, in fact. The mailing list server is not running as a top-priority service. Sometimes you can post something and get a copy back nearly right away; other times it can take the better part of a day. Patience is definitely a virtue here, especially considering folks on this list are not always able to respond the same day.


I am setting Gregorian chant in modern notation, using an example from the LilyPond online documentation on transcribing Gregorian chant located at

http://lilypond.org/doc/v2.20/Documentation/notation/working-with-ancient-music_002d_002dscenarios-and-solutions


I have two questions:

1/ For the two note neumes, it appears the not their spacing is dependent
upon the length of the lyric text below (easily seen in the tie length)

I disagree with the approach the NR demonstrates. The problem is that it subdivides each measure (read: melisma) equally for each pitch. This ultimately results in the spreading out of two-note melismata compared to three- or four-note versions.

Instead, one should be scaling notes so that the final pitch of the melisma is significantly longer than the leading notes. This asks the spacing engine to allocate more of the measure length toward that final note which results in the desired clumping of notes.

Consider:

%%%%
\version "2.20.0"

{ \time 1/4 \hide Staff.BarLine \omit Stem
  a'4*1/5 \melisma c'' b'4*3/5 \melismaEnd
  a'4*1/5 \melisma b'4*4/5 \melismaEnd
  a'4*1/5 \melisma c'' a' b'4*2/5 \melismaEnd
  b'4 }
\addlyrics { lor -- em i -- psum }
%%%%

By using quarter notes only, you don't have to mess about with \omitting Beams or Flags. And scaling notes rather than using \times or \tuplet obviates needing \omit TupletBrackets and TupletNumbers.

Explicit \melisma and \melismaEnd ensure that notes are grouped without needing to use Slurs. Lyrics then are much easier to enter as you likely will never need to use the "_" placeholder lyric syllable.

In the above example, I assume that no melismata will need more than five notes, so I am scaling all leading notes to be 1/5 of a quarter note. The final note is scaled to the remaining length.

You can wrap up much of this into a utility function:

%%%%
\version "2.20.0"

syllable =
#(define-music-function
  (pitches) (ly:music?)
  (let* ((pitches (music-pitches pitches))
         (count (length pitches)))
    (make-sequential-music
      (append-map
        (lambda (index pitch)
          (let* ((denom 5)
                 (initial? (= index 1))
                 (final? (= index count))
                 (numer (if final? (- denom (1- count)) 1))
                 (music '()))
            (set! music
              (list (make-music 'NoteEvent
                'pitch pitch
                'duration (ly:make-duration 2 0 numer denom))))
            (if initial? (set! music (append music (list melisma))))
            (if final? (set! music (append music (list melismaEnd))))
            music))
        (iota count 1)
        pitches))))

{ \time 1/4 \hide Staff.BarLine \omit Stem
  \syllable { a' c'' b' }
  \syllable { a' b' }
  \syllable { a' c'' a' b' }
  \syllable { b' } }
\addlyrics { lor -- em i -- psum }
%%%%


2/ For these multi-note (melismatic) neumes, is it possible to center the
lyric text below, like the single note neumes? \override
LyricText.self-alignment-X = #CENTER does not seem to do the trick.

For normal LyricTexts, that is how you would set the alignment. When multiple LyricTexts are part of a melisma, the alignment is changed to whatever lyricMelismaAlignment is \set to:

%%%%
% ...
\addlyrics {
  \set lyricMelismaAlignment = #CENTER
  lor -- em i -- psum
}
%%%%


---


Question 1:
a/ PDF: 1-With_neither_Lyrics.LyricText.X-extent_nor_BarLine.X-extent.pdf
b/ PDF: 2-With_only_Lyrics.LyricText.X-extent.pdf
c/ PDF: 3-With_both_Lyrics.LyricText.X-extent_and_BarLine.X-extent.pdf

Much of the issues above stem from lying about X-extent. I am unsure why the NR even offers this as a suggestion, as it almost inevitably results in collisions.

About the only thing you can safely do is expand the X-extent if you find it is too short:

%%%%
\version "2.20.0"

enforceMinimumLyricWidth =
#(define-music-function
  (width) (number?)
  (define (proc grob)
    (let* ((xext (ly:grob-property grob 'X-extent))
           (xlen (interval-length xext)))
      (if (< xlen width)
        (let ((offset (/ (- width xlen) 2)))
          (ly:grob-set-property! grob 'X-extent
            (cons (- (car xext) offset)
                  (+ (cdr xext) offset)))))))
  #{ \override LyricText.before-line-breaking = #proc #})

{ \time 7/8 a'8[ b' c'' a' b' g' a'] }
\addlyrics {
  \enforceMinimumLyricWidth #5
  la laa laaa laaaa laaa laa la
}
%%%%


-- Aaron Hill

Reply via email to