Kaj,

On Thu, May 21, 2015 at 2:05 AM, Kaj [via Lilypond] <
[email protected]> wrote:

> I am working on a piece of choir music. It consists of two parts, the
> first of which is written on one staff, and the second two staves. The
> upper staff in part two is a continuation of the staff in part one. All the
> staves are accompanied with lyrics. My wish is that this lyrics should be
> written below its respective staff. However, whatever I do, the lyrics for
> the lower staff in part two, which I denote C, is written above the staff,
> hence directly below the lyrics for the upper staff (B). I suspect there
> should be a simple solution for this, and in the handbook they say that the
> lyrics is normally written below the staff. To get it above the staff you
> would have to do some overrides.
>
> In the code you can see the commented lines, which are part of all the
> tries I have done, but nothing seems to help. To me it almost looks as if
> the behaviour is hard coded, just because of putting the lyrics between the
> staves is the normal. After an experience like this I feel strengthened in
> a thought, grown in my head, that LilyPond will never ever be a tool for
> everybody. It is too complicated and inconsistent to be used by anybody
> else than the absolute top expert. Which is a pity, as it produces an
> excellent result.
>
> This is the result of my efforts so far:
>
> \version "2.18.2"
>
> \paper { ragged-right = ##t }
>
> mA = \relative c' { c4 d e f }
> mB = \relative c'' { g4 a b c }
> mC = \relative c' { c'4 b a8 g f4 }
> mAB = \relative c' { c4 d e f g4 a b c }
>
> tA = \lyricmode { A B C D }
> tB = \lyricmode { E F G H }
> tC = \lyricmode { i j k l m }
> tAB = \lyricmode { A B C D E F G H }
>
> xA = { s1*1 \break }
> xB = { s1*1 }
> xC = { s1*1 }
>
> \score {
>   \new ChoirStaff
>   <<
>     \new Staff = "sAB" {
>       <<
>         \new Voice = "vAB" { \mAB }
>         {
>           \new Voice = "vA" { \xA }
>           <<
>             \new Voice = "vB" { \xB }
>             \new Staff = "sC" {
>               \new Voice = "vC" { \mC }
>             }
>           >>
>         }
>       >>
>     }
>     \new Lyrics = "lAB" \lyricsto "vAB" { \tAB }
>     \new Lyrics = "lC" \with {
> %     alignBelowContext = #"sC"
> %     \override VerticalAxisGroup #'staff-affinity = #UP
>     }
>     { \lyricsto "vC" { \tC } }
>   >>
>
>   \layout { indent = #0 }
> }
>
> *which produces this:*
> [image: --- (Image from LilyPond) ---]
> /Kaj
>

I think LilyPond is just getting confused by all the nested voices/staves.
As Phil suggested, a little restructuring of your example score can bring a
nice solution to light:

\version "2.18.2"

mA = \relative c' {
  c4 d e f | \break
  g a b c
}
mB = \relative c'' {
  s1 |
  c4 b a8 g f4
}
tA = \lyricmode { A B C D E F G H }
tB = \lyricmode { i j k l m }

\score {
  \new ChoirStaff <<
    \new Staff {
      \new Voice = "vA" \mA
    }
    \new Lyrics \lyricsto "vA" \tA
    \new Staff \with {
      \RemoveEmptyStaves
      \override VerticalAxisGroup.remove-first = ##t
    }{
      \new Voice = "vB" \mB
    }
    \new Lyrics \lyricsto "vB" \tB
  >>
  \layout {
    indent = 0
  }
}

There are a few things I'd point out:

   1. All \new Staff declarations are only within the ChoirStaff
   2. Each staff gets its own voice and the second voice gets a spacer rest
   before its notes.
   3. The second staff's empty measures are removed via two overrides
   \RemoveEmptyStaves and \override VerticalAxisGroup.remove-first = ##t
   4. Each set of Lyrics is placed immediately after its staff so there is
   no need to direct it above or below anything

I hope that this provides a clearer logic to how to construct a score that
is quite obvious to what's happening (to the user) and relatively
mistake-proof in interpretation (for LilyPond).

Regards,
Abraham




--
View this message in context: 
http://lilypond.1069038.n5.nabble.com/Putting-lyrics-below-its-staff-tp176837p176853.html
Sent from the User mailing list archive at Nabble.com.
_______________________________________________
lilypond-user mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/lilypond-user

Reply via email to