lilypond-user
[Top][All Lists]
Advanced

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

Re: Flexible lyric alignment


From: Abraham Lee
Subject: Re: Flexible lyric alignment
Date: Tue, 15 Nov 2022 22:04:30 -0700

Ok, I realize this isn't really a MWE, but I needed a more real example of some of the issues I ran into. So, here we go. You'll find some of my favorite preferences for Lyrics in the extra global overrides. And, yes, I realize they are part of the problem, but even without them, the problems are still there. The main problematic measures are 5, 7, and 9/10.  My tweaks are good bandaids, but not ideal, nor perfect, but they get the job done.

Let me know what you think.

Best,
Abraham

%<----------------------------------

\version "2.23"
\language "english"

struct = {
  \numericTimeSignature
  \key bf \major
  \time 3/4
  s2.*5 \break
  s2.*5 \break
}

nb = \markup { \small \italic "n.b." }

melody = \relative {
  \clef treble
  \dynamicUp
  R2.*4 |
  d'8\mp ef f4. d8 |
 
  d4 \once \phrasingSlurDashed c2_\(^\nb |
  d8\) ef f4 bf, |
  c2. |
  d8\< ef f4. f8 |
  g8 a bf2\mf |
}

pianoRH = \relative {
  \clef treble
  d''8 ef f4 <f,c'>8 f' |
  << { g8 a bf2 } \\ { <bf, d>2. } >> |
  << { ef4 c8 d ef bf } \\ { g2 g4 } >> |
  << { d'4. ef8 c4 } \\ { <ef, gf>2. } >> |
  <c' f>4 <f, d'>2 |
 
  << { d'4 c } \\ { <ef, gf>2 } >>  ef'8 c' |
  <d, bf'>4 <bf f'>2 |
  <gf d'>4 c ef8 c' |
  <d, bf'>4 f c8 f, |
  << { d'2. } \\ { bf8 a g2 } >> |
}

pianoLH = \relative {
  \clef treble
  bf8 f' ~ f4 a, |
  g8 d' bf' a g d |
  \clef bass
  c,8 g' ef'2 |
  ef,8 bf' c2 |
  bf,8 f' bf4 d |
 
  ef,8 gf bf c ef4 |
  bf,8 f' d'4 f |
  ef,8 c' ef gf ~ gf4 |
  bf,,8 f' d'4 a |
  g8 d' bf a g d |
}

melodyWordsDefault = \lyricmode {
  Would I know my Sav -- ior Wrapped in swad -- dling bands,
  Ly -- ing in a man -- ger bed, Light of hea -- ven ’round His head?
}

melodyWordsTweaked = \lyricmode {
  \once \override LyricText.self-alignment-X = #0.3
  Would
    \once \override LyricText.self-alignment-X = #1
    I
    \once \override LyricText.self-alignment-X = #-0.3
    know my Sav -- ior
    \once \override LyricText.self-alignment-X = #0.3
    wrapped
    \once \override LyricText.self-alignment-X = #-2.5
    in
    \once \override LyricText.self-alignment-X = #-0.5
    swad --
    \once \override LyricText.self-alignment-X = #-0.5
    dling bands,
  Ly -- ing in
    \once \override LyricText.self-alignment-X = #-5
    a
    \once \override LyricText.self-alignment-X = #0.7
    man --
    \once \override LyricText.self-alignment-X = #-0.3
    ger
    \once \override LyricText.self-alignment-X = #-1
    bed,
}

#(set-global-staff-size 19)
\paper {
  ragged-last = ##f
  ragged-bottom = ##t
  ragged-right = ##f
  ragged-last-bottom = ##t
  tagline = ##f
}

\layout {
  \context {
    \Lyrics
    \override LyricText.font-size = #0
    \override LyricHyphen.font-size = #-0.5
    \override LyricHyphen.padding = #0.15
    \override LyricHyphen.length = #0.6  %#0.4
    \override LyricHyphen.minimum-length = #0.66
    \override LyricHyphen.minimum-distance = #1 %0.15
    \override LyricHyphen.thickness = 2.0
    \override LyricHyphen.dash-period = 8.0
    \override LyricExtender.minimum-length = #0
    \override LyricExtender.right-padding = #0.5
    \override LyricSpace.minimum-distance = #1
    \override VerticalAxisGroup.nonstaff-relatedstaff-spacing.padding = #1
  }
}

\score {
  \header {
    piece = "Tricky lyrics BEFORE adjustments"
  }
  <<
    \new Staff <<
      \struct
      \new Voice = "melody" \melody
    >>
    \new Lyrics \lyricsto melody \melodyWordsDefault
    \new PianoStaff <<
      \new Staff = "pianoRH" <<
        \struct
        \pianoRH
      >>
      \new Staff = "pianoLH" <<
        \struct
        \pianoLH
      >>
    >>
  >>
  \layout {}
}

\score {
  \header {
    piece = "Tricky lyrics AFTER adjustments"
  }
  <<
    \new Staff <<
      \struct
      \new Voice = "melody" \melody
    >>
    \new Lyrics \lyricsto melody \melodyWordsTweaked
    \new PianoStaff <<
      \new Staff = "pianoRH" <<
        \struct
        \pianoRH
      >>
      \new Staff = "pianoLH" <<
        \struct
        \pianoLH
      >>
    >>
  >>
  \layout {}
}


%<----------------------------

On Tue, Nov 15, 2022 at 8:19 AM Abraham Lee <tisimst.lilypond@gmail.com> wrote:
This looks awesome, Jean! Thanks so much for this great start! And thanks to everyone else who has chimes in on this. We may get to a great solution yet!

In my recent score, again, a single vocal staff with two piano staves below, I had instances where there were 2, 3, and 4-syllable clusters where I had to adjust almost all the syllables’ positions, sometimes on just one end, mostly on both ends, sometimes in the middle as well. I apologize that I haven’t had a chance to test your fix out yet (work is a bit too busy at the moment), but how well would you say it handles those kinds of groups?

I’ll post some more specific examples later demonstrating the issues before my manual tweaks versus after (not that they’re perfect).

Best,
Abraham

On Mon, Nov 14, 2022 at 11:40 AM Kieren MacMillan <kieren@kierenmacmillan.info> wrote:
Hi Jean,

> This just removes the lyric syllable's presence in horizontal
> spacing, then adjusts its placement if it collides with its
> right neighbor. It works in this case because there is nothing
> on the left that the lyric syllable in question could collide
> with. (It also does not handle collisions with other things
> than the next lyric syllable.)

Well, between the two hacks you just hacked, a huge percentage of my note-spacing tweaking effort has just been saved, so I thank you immensely!

Can't wait to unleash these on my scores and get back you/list with some real-world data. (I know one of the things I’ll run into almost immediately is that I will need the *LAST* syllable to be shifted to the *RIGHT*, but I’m going to take on that “upgrade” as a Scheme-ing challenge!)

Gratefully,
Kieren.

reply via email to

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