Dear Aaron, I hope you are well -- Resurrecting an old thread here. I have been using this function quite often for chant work. I've recently started looking at some custom lyrics placement using \tweak LyricText.self-alignment-X #<val>, but I've been unable to get it to work in the minimalist example in your email. I also tried \override LyricText.extra-offset = #'(<val> . 0), but in certain cases spacing between the previous lyrics is too large.
What modifications might be needed to get your code to work with LyricText.self-alignment-X? Many thanks, Matt On Mon, Oct 5, 2020 at 11:32 AM Aaron Hill <lilyp...@hillvisions.com> wrote: > 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 >