GELÖST: Probleme mit \change Staff

Begonnen von gaerchle, Montag, 6. August 2018, 21:00

« vorheriges - nächstes »

gaerchle

Liebe Experten,

ich habe scheinbar ein Problem mit dem Befehl \change Staff
Hier mein stark vereinfachtes Beispiel:

\version "2.18.2"

voiceRight = \relative c'
{ d'2 \stemUp d4
       <<
         { e4 }
         \\
         { g,4 }
       >>
}

voiceLeft = \relative c {
\clef bass
<< { d'4 \change Staff= "right" \stemDown e4 f4 \change Staff = "left" \stemUp d4 }
   \\
   {  d,2 d4 e }
>>   
}

\score {
\new PianoStaff
    <<
      \new Staff = "right" \voiceRight
      \new Staff = "left" \voiceLeft
    >>
}


Wie ihr seht, ist das e'' aus dem rechten System ins linke gerutscht. Ich weiß nur nicht warum.
Natürlich ist das bei diesem Beispiel leicht anders zu lösen, aber es ist wie gesagt stark vereinfacht.
Danke für Eure Hilfe.

Gruß
Gärchle

harm6

Hallo,

Du verwendest sowohl in der linken als auch in der rechten Hand eine Zweistimmigkeit, die Du mittels << ... \\ ... >> initiierst.
Intern bekommt die obere Stimme den Namen "1", die untere den Namen "2". In beiden Händen! Es sind keine einzigartigen Namen!

Dein erster \change Befehlt führt Voice = "1" aus der linken Hand in die rechte Hand.
Zwei Viertel später kommt in der rechten Hand eine Voice = "1" hinzu. Das wird nun von LilyPond mitnichten als eine eigene unabhängige Voice betrachtet, sondern der Inhalt wird der Voice = "1", die eigentlich in der linken Hand initiiert wurde, zu geschlagen. Es entsteht eine Voice = "1" mit simultaner Musik. Wenn Du dann erneut \change veranlaßt um in die linke Hand zurückzukehren, so tut LilyPond das auch, aber eben die ganze Stimme mit simultaner Musik. Deshalb ist das eine e'' im ungewünschten Staff.

Ganz generell ist das << ... \\ ... >> -Konstrukt ein shortcut mit vielen Fallstricken. Obzwar dein Problem ein wirklich seltenes ist, so würde ich << ... \\ ... >> nur für allereinfachste Musik verwenden. Klaviermusik gehört mit Sicherheit von vorn herein nicht dazu.

Um das Problem hier zu lösen initiiere die Stimmen selber, geb ihnen eigene Namen, sowie \voiceXxxx.


\version "2.18.2"

voiceRight = \relative c' {
  d'2 \stemUp d4
  <<
    \new Voice = "rU" { \voiceOne e4 }
    \new Voice = "rD" { \voiceTwo g,4 }
  >>
}

voiceLeft = \relative c {
  \clef bass
  <<
  \new Voice = "lU" {
  \voiceOne
      d'4
      \change Staff= "right"
      \stemDown e4 f4
      \change Staff = "left"
      \stemUp d4
     }
     \new Voice = "lD"
     {  \voiceTwo d,2 d4 e }
  >>   
}


HTH,
  Harm

gaerchle

Merci vielmals.
Dann werde ich mich wohl disziplinieren müssen und die vereinfachte Version in den Keller packen.
:D