\set associatedVoice funktioniert nicht in anderem Staff

Begonnen von Multimax, Freitag, 3. April 2020, 11:48

« vorheriges - nächstes »

Multimax

Hallo, ich verzweifele hier gerade an einer Fehlersuche.

Es ist mir nicht möglich, mit dem Liedtext aus dem Sopran in den Bass zu wechseln.


\version "2.20.0"

soprano = \relative c'' {c d r2}
alto = \relative c' {f4 g a b}
bass = \relative c {c4 d e f}

verseOne = \lyricmode { Ein \set associatedVoice = "bass" Jahr ist schnell }
verseBass = \lyricmode{ Ein Jahr }

\score {
  \new ChoirStaff <<
    \new Staff \with {
     instrumentName = \markup \center-column { "Sopran" "Alt" }
    } <<
      \new Voice = "soprano" { \voiceOne \soprano }
      \new Voice = "alto" { \voiceTwo \alto }
    >>
    \new Lyrics \with {
      \override VerticalAxisGroup #'staff-affinity = #CENTER
    } \lyricsto "soprano" \verseOne
    \new Staff = "basses" \with {
      midiInstrument = "choir aahs"
      instrumentName = "Bass"
    } {   
      \clef bass
      \new Voice = "bass" { \bass }   
      }
\new Lyrics  \lyricsto "bass" \verseBass   
  >>

}


In den Alt funktionert es Problem los. Was muss ich im Choirstaff ändern, damit es auch für den Bass funktioinert? Ich steh gerade total auf dem Schlauch.

harm6

Hallo,

das Problem scheint zu sein, daß zu dem Zeitpunkt zu dem associatedVoice = "bass" wirken soll, die entsprechende "bass"-Voice noch nicht (vollständig) verarbeitet ist. Die Lyrics müssen also in den score eingefügt werden, nachdem die Voices vollständig "da" sind.
Deshalb klappt es auch mit "alto" aber nicht mit "bass".
Die Struktur sollte also so aussehen (pseudo-code):

ChoirStaff
<<
  Staff1
  Staff2
  Lyrics1
  Lyrics2
>>

Um zu gewährleisten, das die Lyrics in der Chorpartitur an die richtige Stelle gedruckt werden, sollte man dann die context-properties alignAboveContext bzw alignBelowContex setzen.
Führt zu:


\version "2.20.0"

soprano = \relative c'' {c d r2}
alto = \relative c' {f4 g a b}
bass = \relative c {c4 d e f}

verseOne = \lyricmode { Ein \set associatedVoice = "bass" Jahr ist schnell }
verseBass = \lyricmode{ Ein Jahr }

\score {
  \new ChoirStaff <<
    \new Staff \with {
     instrumentName = \markup \center-column { "Sopran" "Alt" }
    } <<
      \new Voice = "soprano" { \voiceOne \soprano }
      \new Voice = "alto" { \voiceTwo \alto }
    >>
    \new Staff = "basses" \with {
      midiInstrument = "choir aahs"
      instrumentName = "Bass"
    } {   
      \clef bass
      \new Voice = "bass" { \bass }   
      }
    \new Lyrics \with {
      \override VerticalAxisGroup #'staff-affinity = #CENTER
      alignAboveContext = "basses"
    } \lyricsto "soprano" \verseOne
    \new Lyrics  \lyricsto "bass" \verseBass   
  >>
}


HTH,
  Harm

Multimax

Danke.

Die Begründung klingt einleuchtend.
Der Score stammt aus dem Assistenten von Frescobaldi. Dort werden die Lyrics nach den einzelnen Staffs aufgerufen.

Sollte ich die Tatsache, dass ein Änderung der associatedVoice nur dann wirksam ist, wenn die Ziel-Voice, auf die gewechechselt werden soll, bereits im Score definiert wurde, vielleicht irgendwo melden, damit in der Dokumentation ein entsprechender Hinweis auf diesen möglichen Fehler eingefügt wird?

Viele Grüße

EDIT:
Ich meine bei Lilypond melden, nicht bei Frescobaldi.