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
>
>

Reply via email to