Change staff funktioniert nicht überall?

Begonnen von juppes, Donnerstag, 13. Oktober 2022, 12:46

« vorheriges - nächstes »

juppes

Liebe Forumsmitglieder,

Vielleicht kann mir hier jemand aus der Patsche helfen: ich schreibe ein Lied mit Klavierbegleitung ab, wo in der Klavierstimme mitten in einer Figur vom unteren System ins obere gewechselt werden soll. In der Dokumentation gibt es eine Anleitung dazu, in der \change Staff verwendet wird. Baue ich die so um, daß die von mir benötigten Noten eingetragen werden, funktioniert es prächtig, siehe unten:

\version "2.22.0"
\language "deutsch"
\score {
  \new PianoStaff <<
    \new Staff = "up" {
    s1
    }
    \new Staff = "down"
    <<
      \clef bass {  d'2.  ~ \tuplet 5/4 { d'16 ( cis' d' \change Staff = "up"  { h' gis')}} \change Staff = "down"}
    \\
    { \tupletSpan 4 \tuplet 3/2 { < f,! a,,>8 gis, f gis, a,, gis, a,, gis, a,, gis, a,, gis,}}
  >>
  >>
    }

In meinem Dokument nun aber arbeite ich mit Variablen für Gesang, rechte und linke Hand. Wenn ich nun in die Variable für die linke Hand eintrage, was in dem kleinen Codebeispiel oben zu sehen ist, wird das Dokument zwar kompiliert, aber es gibt eine Fehlermeldung:

ZitatWarnung: cannot find context to change to: Staff = up
  <<{ d''2.  ~ \tuplet 5/4 { d16 ( cis d
                                        \change Staff = "up"  { h' gis)} \change Staff = "down"}}
/home/falter/Dokumente/Notenabschriften_2viellneuer/KrenekNick/KrenekNick.ly:114:75: Warnung: cannot find context to change to: Staff = down
  <<{ d''2.  ~ \tuplet 5/4 { d16 ( cis d \change Staff = "up"  { h' gis)}
                                                                          \change Staff = "down"}}

Was mache ich falsch oder was scheine ich nicht verstanden zu haben? Ich hoffe, daß es hier jemanden gibt, der das besser versteht als ich. Oder funktioniert das so bei einem Dokumentenaufbau mit Variablen generell nicht, und ich müßte statt der Variablen deren Inhalt in den PianoStaff eintragen? Welchen Kontext meint Lilypond? Ich habe sogar einen Layout-Block erstellt, in dem steht:

\layout {
        \context {
          \PianoStaff
          \consists #Span_stem_engraver
        }
      }

Scheint aber nichts zu helfen...
Bin für Anregungen dankbar.

Habe zur Verdeutlichung noch eine .ly-Datei mit den beiden Code-Beispielen drin und das kompilierte Ergebnis angehängt.

harm6

Hallo,

egal welche Variablen ich wie verwende, es klappt bei mir immer.
Da ich das Problem also nicht nachstellen kann, solltest du posten was genau Du gemacht hast.

Gruß,
  Harm

juppes

Danke! Habe meinen Post aktualisiert und .ly und PDF angehängt.

harm6

Der Aufruf der Variablen erfolgt in Staffs mit den Namen "rh" bzw "lh".
In den Variablen stehen aber Befehle zu Staffs mit den Namen "up" bzw "down" zu wechseln.
Kann nicht funtionieren. Gleiche die Namen an und es wird klappen.
Z.B.
\score {
  \new PianoStaff
  <<
    \new Staff = "up" \rh
    \new Staff = "down" \lh
  >>
}

Gruß,
  Harm

juppes

Unglaublich, aber wahr! So geht's! Kommt sofort auf meinen Lilypond-Spickzettel. Man muß nur die richtigen Leute fragen! Habe noch nie "richtige" Klaviermusik mit solchen Spezialitäten abgeschrieben. Da stolpert man über eine Menge neuer Probleme, die gelöst werden müssen. Aber manchmal kommt man eben doch nicht allein weiter.

Ganz herzlichen Dank für die Pannenhilfe.