Hello Aaron, Many thanks for bearing with my error. I do see in the list archives that I have sent out my question three times -- I will certainly apply patience here. This has been a tremendously useful group.
I will implement the your suggestions and feedback. There seem to be many ways to accomplish the same thing in LilyPond, but understanding the internals sees to be key. I just have to start loving to write some scheme! Many thanks, mattfong On Sun, Oct 4, 2020 at 5:13 PM Aaron Hill <lilyp...@hillvisions.com> wrote: > 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 > >