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