Lyrics both above and below the staff with splits?

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

Lyrics both above and below the staff with splits?

Avi Drissman
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

_______________________________________________
lilypond-user mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/lilypond-user
Reply | Threaded
Open this post in threaded view
|

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

Thomas Morley
2013/4/14 Avi Drissman <[hidden email]>:

> 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

_______________________________________________
lilypond-user mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/lilypond-user
Reply | Threaded
Open this post in threaded view
|

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

Phil Holmes
In reply to this post by Avi Drissman

How about something like:
 
\version "2.16.0"
{
  <<
    \new Staff = "Song"
    <<
      \new Voice = "Soprano" { s1 | \voiceOne  a'4 b'4 c''4 d''4 | \oneVoice  s1 }
      \new Lyrics \with { alignAboveContext = Song } \lyricsto "Soprano" {  A -- bove the stave }
      \new Voice = "Alto" {  a'4 b'4 c''4 d''4  | \voiceTwo  c'4 d'4 e'4 f'4  | \oneVoice  a'4 b'4 c''4 d''4 }
      \new Lyrics \lyricsto "Alto" { U -- ni -- son words Be -- low the stave U -- ni -- son words }
    >> % Staff end
  >>  % Group end
}

--
Phil Holmes
 
 
----- Original Message -----
Sent: Sunday, April 14, 2013 9:46 AM
Subject: Lyrics both above and below the staff with splits?

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


_______________________________________________
lilypond-user mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/lilypond-user

_______________________________________________
lilypond-user mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/lilypond-user

LyricArrangement.png (8K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

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

Avi Drissman
In reply to this post by Thomas Morley
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 <[hidden email]> wrote:
2013/4/14 Avi Drissman <[hidden email]>:
> 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


_______________________________________________
lilypond-user mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/lilypond-user
Reply | Threaded
Open this post in threaded view
|

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

Thomas Morley-2
2013/4/14 Avi Drissman <[hidden email]>:

> 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

How about using separate voices:

\version "2.16.1"

altonotesUp =
\relative c' {
  s1*3 s2
  \voiceOne
  fis8( a) b4~ | b a( fis d) | fis1
  \oneVoice
  s1*3
  \voiceOne d8[^\markup { \italic "cresc. poco a poco" } e] fis2.~( | fis2 e4.)
  \oneVoice
  s4
}

altonotesDown =
\relative c' {
  fis2\p e |
  d cis |
  d cis |
  b \voiceTwo fis'2~ |
  fis4 e( cis8 b a4) |
  a1 |
  \oneVoice
  r4 d\f d4. fis8 |
  fis1 |
  r1 |
  \voiceTwo r1 |
  r2 cis8 d e \oneVoice e8~ |
  e4
}

altowordsUp =
\lyricmode {
  doo __ doo __ doo __ on
  Car -- ry on, __
}

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

\score {
  \new ChoirStaff <<
    \new Staff = "alto" \with { instrumentName = A } <<
      \new Voice = "altoUp"
      \altonotesUp
      \new Voice = "altoDown"
      \altonotesDown
      >>
    \new Lyrics \with { alignAboveContext = alto }
      \lyricsto "altoUp" \altowordsUp
    \new Lyrics
      \lyricsto "altoDown" \altowordsDown
  >>
  \layout {}
}


Cheers,
  Harm

_______________________________________________
lilypond-user mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/lilypond-user
Reply | Threaded
Open this post in threaded view
|

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

Karl Hammar
In reply to this post by Avi Drissman
Avi Drissman:
> 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.. } >>
...

Avoid that one when working with vocals.

Try something like attached file.

Note:
 you have to name your \context Lyrics else
 they tend to be on the same line

 you have to make sure you don't create new voices, things like
  \new Voice { }
  << { } { } >>
  << { } \\ { } >>
 create new voices, so you have to tell lilypond every voice it's name

Regards,
/Karl Hammar

-----------------------------------------------------------------------
Aspö Data
Lilla Aspö 148
S-742 94 Östhammar
Sweden
+46 173 140 57


_______________________________________________
lilypond-user mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/lilypond-user

a.ly (570 bytes) Download Attachment