lilypond-user
[Top][All Lists]
Advanced

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

Re: Lyrics both above and below the staff with splits?


From: Avi Drissman
Subject: Re: Lyrics both above and below the staff with splits?
Date: Sun, 14 Apr 2013 13:02:19 -0400

I'm sorry; I was banging my head against this for so long that I just emailed out of frustration.

So that's how you re-use a Lyrics. That works, but is a bit ugly in that you have to create new voices over and over. So I tried re-using a voice using that \context trick:

\version "2.16.1"

altonotes = \relative c' {
  fis2\p e | d cis | d cis | b
  << \new Voice = "altoone" { \voiceOne fis'8( a) b4~ | b a( fis d) | fis1 }
    { \voiceTwo fis2~ | fis4 e( cis8 b a4) | a1 } >> \oneVoice
  r4 d\f d4. fis8 | fis1 | r1 |
  << \context Voice = "altoone" { \voiceOne d8[^\markup { \italic "cresc. poco a poco" } e] fis2.~( | fis2 e4.) }
    { \voiceTwo r1 | r2 cis8 d e } >> \oneVoice
  e8~ | e4
}

altowords = \lyricmode {
  cooled my head and warmed my heart
  doo __ doo __ on
  this road to -- night.
  Nev -- er run,
}
altoonewords = \lyricmode {
  doo __ doo __ doo __ on
  Car -- ry on, __
}

\score {
  \new ChoirStaff <<
    \new Staff = "alto" <<
      \new Voice = "alto" <<
        \altonotes
      >>
      \lyricsto "alto" \new Lyrics \altowords
      \lyricsto "altoone" \new Lyrics \with { alignAboveContext = alto } \altoonewords
      \set Staff.instrumentName = A
    >>
  >>
  \layout {}
}

But the words don't show up the second time. Must I create a new voice each time and put in a new new \lyricsto for each split?

Thanks,

Avi


On Sun, Apr 14, 2013 at 6:11 AM, Thomas Morley <address@hidden> wrote:
2013/4/14 Avi Drissman <address@hidden>:
> I'm trying to type up a vocal piece. At several places, the part splits
> (with completely different notes, rhythms, and lyrics), and returns to
> unison. During the splits, I'd like the lyrics to go above the staff for the
> high part, and below the staff for the low part.
>
> At first, I split using:
>
> << { ..notes.. } \\ { ..notes.. } >>
>
> When you do that, though, you get no lyrics. Bummer. So I started explicitly
> specifying the second voice:
>
>   ..notes.. << { \voiceOne ..high notes.. }
>     \new Voice { \voiceTwo ..low notes.. } >> \oneVoice ..notes..
>
> Better, as you get your lyrics, but not ideal: the lyrics are attached to
> high notes and are printed below the staff.
>
> Next attempt: explicitly name the voice. I went a little unorthodox here,
> making the upper voice the new voice and making the lower voice continue the
> original:
>
>   << \new Voice = "altoone" { \voiceOne ..notes.. }
>     { \voiceTwo ..notes.. } >> \oneVoice
>
> and added on the lyrics to that part:
>
>     \new Staff = "alto" <<
>       \new Voice = "alto" <<
>         \global
>         \altonotes
>       >>
>       \lyricsto "alto" \new Lyrics \altowords
>       \lyricsto "altoone" \new Lyrics \with { alignAboveContext = alto }
> \altoonewords
>       \set Staff.instrumentName = A
>     >>
>
> which worked well. Awesome! But doing it a second time didn't get me lyrics
> on the second split:
>
>   ..notes..
>   << \new Voice = "altoone" { \voiceOne ..notes.. }
>     { \voiceTwo ..notes.. } >> \oneVoice
>   ..notes..
>   << \new Voice = "altoone" { \voiceOne ..notes.. }
>     { \voiceTwo ..notes.. } >> \oneVoice
>   ..notes..
>
> The first instance of "altoone" was decorated with lyrics, but the second
> instance didn't get any. So I thought that perhaps I needed to name the
> voices differently:
>
>   ..notes..
>   << \new Voice = "altoonei" { \voiceOne ..notes.. }
>     { \voiceTwo ..notes.. } >> \oneVoice
>   ..notes..
>   << \new Voice = "altooneii" { \voiceOne ..notes.. }
>     { \voiceTwo ..notes.. } >> \oneVoice
>   ..notes..
>
>     \new Staff = "alto" <<
>       \new Voice = "alto" <<
>         \global
>         \altonotes
>       >>
>       \lyricsto "alto" \new Lyrics \altowords
>       \lyricsto "altoonei" \new Lyrics \with { alignAboveContext = alto }
> \altooneiwords
>       \lyricsto "altooneii" \new Lyrics \with { alignAboveContext = alto }
> \altooneiiwords
>       \set Staff.instrumentName = A
>     >>
>
> But that doesn't work, as "altoonei" and "altooneii" are positioned at
> different heights. I want one consistent position for all of the lyrics
> above the staff.
>
> I'm stuck at this point, and am out of ideas. Any suggestions?
>
> Thanks,
>
> Avi

Hi Avi,

_please_ post a _compilable_ example!!
I tend to ignore posts without compilable code. Or I have to make a guess:


\version "2.16.2"
mI = \relative c' { \repeat unfold 8 c'4 }
mII = \relative c' { \repeat unfold 4 d2 }

altowords = \lyricmode { \repeat unfold 10 foo }
altoonewords = \lyricmode { \repeat unfold 8 bar }

altonotes = \relative c' {
        <<
          \context Voice = "altoonex" { \voiceOne \mI }
          { \voiceTwo \mII }
        >>
        \oneVoice
        e1

        <<
          \context Voice = "altoone" { \voiceOne \mI }
          { \voiceTwo \mII }
        >>
        \oneVoice
        e1
}

    \new Staff = "alto" <<
      \new Voice = "alto" <<
        %\global
        \altonotes
      >>
      \lyricsto "alto" \new Lyrics \altowords
      \new Lyrics = "lyr" \with { alignAboveContext = alto } \lyricsto
"altoonex"  \altoonewords
      \context Lyrics = "lyr" \with { alignAboveContext = alto }
\lyricsto "altoone"  \altoonewords
      \set Staff.instrumentName = A
    >>

-Harm


reply via email to

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