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: Thomas Morley
Subject: Re: Lyrics both above and below the staff with splits?
Date: Sun, 14 Apr 2013 12:11:05 +0200

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]