lilypond-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Setting Gregorian chant: Note spacing for two note neumes seem to de


From: Aaron Hill
Subject: Re: Setting Gregorian chant: Note spacing for two note neumes seem to depend on length of lyric text
Date: Mon, 05 Oct 2020 11:32:51 -0700
User-agent: Roundcube Webmail/1.4.2

On 2020-10-05 10:35 am, Matthew Fong wrote:
Hello Aaron,

Thank you for your help. That does make sense to me and works out quite
well -- I don't yet have a grasp how various commands and settings are
actually working in LilyPond. I found another example in the LilyPond
documentation that shows the internal representation. Where do I find this
for input I want to inspect further?
http://lilypond.org/doc/v2.20/Documentation/extending/doubling-a-note-with-slurs-_0028example_0029

I tested your syllable function with tweaks (like changing a notehead to a quilisma), and expressive marks like a tenuto. It appears the current code
doesn't handle them (this is getting into advanced territory much more
quickly than I expected).

Argh... I feared you might want to go in that direction. Simple runs of pitches are rarely enough. :/

Here's a more generalized approach that modifies durations, preserving other events and properties:

%%%%
\version "2.20.0"

syllable =
#(define-music-function
  (notes)
  (ly:music?)
  ;; Adjust this number to support longer runs of notes.
  (define denominator 5)
  (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))

redNotes = \override NoteHead.color = #red
{ \time 1/4 \hide Staff.BarLine \omit Stem
  \syllable { a'\( \melisma c'' b'\tenuto \melismaEnd }
  \syllable { \redNotes a' b'\) \undo \redNotes }
  \syllable { \breathe \[ a' c''\accent a'_( b') \] }
  \syllable { b'\espressivo } }
\addlyrics {
  lor -- em _ i -- _ _ psum
}
%%%%

There is much more flexibility at the cost of no longer automatically adding \melisma/\melisaEnd nor Slurs. In fact, the example shows a PhrasingSlur starting in one "syllable" ending in the following.

NOTE: This function does not handle chords properly.


-- Aaron Hill



reply via email to

[Prev in Thread] Current Thread [Next in Thread]