Lyrics verrutschen bei zweiter Wiederholung

Begonnen von Chris, Freitag, 8. November 2024, 17:25

« vorheriges - nächstes »

Chris

Hallo zusammen,

ich möchte ein mehrstimmiges Musikstück setzen, das aus zwei Abschnitten besteht, in dem jeweils zweimal Text auf eine sich wiederholende Melodie gesungen wird. Mein Problem: Bei der zweiten Wiederholung rutscht der Text unter die Zeile der ersten Wiederholung, weil Lilypond anscheinen denkt, es handele sich um eine weitere Strophe (siehe Bild). Ich hätte aber gerne, dass auch der Text der zweiten Wiederholung auf derselben Höhe wie der Text der ersten Wiederholung steht.

Ich habe schon viel probiert und gesucht (so bin ich auf das alignBelowContext gekommen), stehe aber anscheinend auf dem Schlauch. Kann mir hier jemand helfen? Danke im Voraus!

\version "2.24.2"

global = {
  \key c \major
  \time 4/4
}

soprano = \relative c'' {
  \global
  g4 g g g
  \bar ":|."
  \bar ".|:"
  g g g g
  \bar ":|."
}

alto = \relative c' {
  \global
  c4 d e f
  f e d c
}

tenor = \relative c' {
  \global
  c c c c
  \bar ":|."
  \bar ".|:"
  c c c c
  \bar ":|."
 
}

bass = \relative c' {
  \global
  g f e d d e f g
}

verseOne = \lyricmode {
<< { la la la la }
   \new Lyrics \new Lyrics = "lineone" {
  \set associatedVoice = "soprano"
  la la la la
}
>>

<< \new Lyrics = "linetwo" \with { alignBelowContext = "lineone" } {
  \set associatedVoice = "soprano" la la la la }
   \new Lyrics \with { alignBelowContext = "linetwo" } {
  \set associatedVoice = "soprano"
  la la la la
}
>>
 
}


\score {
  \new ChoirStaff <<
   
    \new Staff
    <<
      \new NullVoice = "hidden" { \soprano }
      \new Voice { \partCombine \soprano \alto }
    >>
   
    \new Lyrics \lyricsto "hidden" \verseOne

    \new Staff
    <<
      \clef bass
      \new Voice { \partCombine \tenor \bass }
    >>
   
  >>
}


amateur

Hallo,

würde dir das helfen?

\version "2.25.19"


global = {
  \key c \major
  \time 4/4
}

soprano = \relative c'' {
  \global
  g4 g g g
  \bar ":|."
  \bar ".|:"
  g g g g
  \bar ":|."
}

alto = \relative c' {
  \global
  c4 d e f
  f e d c
}

tenor = \relative c' {
  \global
  \clef tenor
  c c c c
  \bar ":|."
  \bar ".|:"
  c c c c
  \bar ":|."

}

Bass = \relative c' {
  \global
  \clef bass
  g f e d d e f g
}

verseOne = \lyricmode {
  la la la la le le le le
}

verseTwo = \lyricmode {
  li li li li lo lo lo lo
}

\score {
  \new ChoirStaff <<

    \new Staff
    <<
      \new Voice = "Sopran" { \voiceOne \soprano }
      \new Voice = "Alt" { \voiceTwo \alto }
    >>
    \new Lyrics \lyricsto "Sopran" \verseOne
    \new Lyrics \lyricsto "Sopran" \verseTwo

    \new Staff
    <<
      \new Voice = "Tenor" { \voiceOne \tenor }
      \new Voice = "Bass" { \voiceTwo \Bass }
    >>

  >>
}

mfg

Chris

Vielen Dank, es hat funktioniert! Auf mich wirkt das allerdings ein wenig wie ein unschöner Workaround, da es die Logik des Stückes verändert - der erste Teil wird ja auch wiederholt und der Text der Wiederholung steht nun in einem zweiten Teil, nur um in die zweite Zeile zu rutschen.

Vielleicht erfindet ja ein fähiger Programmierer eines Tages hierfür eine schönere Lösung.

harm6

ZitatAuf mich wirkt das allerdings ein wenig wie ein unschöner Workaround, da es die Logik des Stückes verändert - der erste Teil wird ja auch wiederholt und der Text der Wiederholung steht nun in einem zweiten Teil, nur um in die zweite Zeile zu rutschen.

Ich teile diese Bedenken nicht, sondern finde amateuers Vorschlag gut. Er ist auch am einfachsten zu schreiben und zu verstehen.

Aber wenn du unbedingt willst:
\version "2.24.2"

global = {
  \key c \major
  \time 4/4
}

soprano = \relative c'' {
  \global
  g4 g g g
  \bar ":|."
  \bar ".|:"
  g g g g
  \bar ":|."
}

alto = \relative c' {
  \global
  c4 d e f
  f e d c
}

tenor = \relative c' {
  \global
  c c c c
  \bar ":|."
  \bar ".|:"
  c c c c
  \bar ":|."
 
}

bass = \relative c' {
  \global
  g f e d d e f g
}

verseOne = \lyricmode {
  <<
    \new Lyrics = "first" { la la la la }
    \new Lyrics = "second" { le le le le }
  >>
  <<
    \context Lyrics = "first" { li li li li }
    \context Lyrics = "second" { lo lo lo lo }
  >>
}


\score {
  \new ChoirStaff <<
   
    \new Staff
    <<
      \new NullVoice = "hidden" { \soprano }
      \new Voice { \partCombine \soprano \alto }
    >>
   
    \new Lyrics \lyricsto "hidden" \verseOne

    \new Staff
    <<
      \clef bass
      \new Voice { \partCombine \tenor \bass }
    >>
   
  >>
}

Gruß,
  Harm

P.S. Ich rate von expliziten Wiederholungszeichen ab. \unfoldRepeats funktioniert dann nicht.
Nehm doch \repeat volta ...

amateur

der erste Teil wird ja auch wiederholt
bei dir wird der erste Takt nicht wiederholt. Dafür gibt es die Taktstrichversion \bar ":..:" oder \bar ":|.|:"

ich benutze allerdings immer \repat volta, wie harm schon erwähnt hat:
\version "2.25.19"


global = {
  \key c \major
  \time 4/4
}

soprano = \relative c'' {
  \global
  \repeat volta 2 {
  g4 g g g
  }
  \repeat volta 2 {
    g g g g
    }
}

alto = \relative c' {
  \global
  c4 d e f
  f e d c
}

tenor = \relative c' {
  \global
  \clef tenor
  c c c c
   c c c c
 }

Bass = \relative c' {
  \global
  \clef bass
  g f e d d e f g
}

verseOne = \lyricmode {
  la la la la le le le le
}

verseTwo = \lyricmode {
  li li li li lo lo lo lo
}

\score {
  \new ChoirStaff <<
    \new Staff
    <<
      \new Voice = "Sopran" { \voiceOne \soprano }
      \new Voice = "Alt" { \voiceTwo \alto }
    >>
    \new Lyrics \lyricsto "Sopran" \verseOne
    \new Lyrics \lyricsto "Sopran" \verseTwo
    \new Staff
    <<
      \new Voice = "Tenor" { \voiceOne \tenor }
      \new Voice = "Bass" { \voiceTwo \Bass }
    >>
  >>
}

Grüße
Richard