Zeilenende bei zusätzlichem Staff / gelöst

Begonnen von gaerchle, Sonntag, 13. August 2017, 15:13

« vorheriges - nächstes »

gaerchle

Liebe Experten,
ich erstelle gerade eine Klavierstimme und brauche zwischendurch immer mal wieder ein drittes System.
So habe ich das gemacht:
Zitat\version "2.18.2"

pianoRechts = \relative c''
{
  \repeat tremolo 8 { <ais' eis>32 ais, } \repeat tremolo 8 { <fis' d> fis, }
  \repeat tremolo 8 { <a' e>32 a, } \repeat tremolo 8 { <fis' d> fis, }
  \repeat tremolo 8 { <a' e>32 a, } \repeat tremolo 8 { <fis' d> fis, }
  \break
<< {
    << { \repeat tremolo 8 { <e' bes>32 f, } \repeat tremolo 8 { <cis' g>32 d, }
         \repeat tremolo 8 { <e' bes>32 f, } \repeat tremolo 8 { <cis' g>32 d, }  }
       \\
       { f2( d)
         f( d) }
    >>
    <b' f c>1 
   }
    \new Staff
    \with { alignAboveContext = #"left" \remove "Time_signature_engraver" }
    { \key des \major
      R1*2
      r4 e,^\markup { \italic cresc. } e d   
   }
   
>>
}

pianoLinks = \relative c'
{
  \clef treble
  d4..-> cis16-> e4..-> d16->
  f2.-> e4->
  g4..-> f16-> as4..-> g16->
  \clef bass
  << { d2( b)
       d( b) }
     \\
     { \repeat tremolo 8 { gis32 d' } \repeat tremolo 8 { f,32 b }
       \repeat tremolo 8 { gis32 d' } \repeat tremolo 8 { f,32 b } }
  >>
  << { as1 }
     \\
     { \repeat tremolo 8 { d,32 as' } \repeat tremolo 8 { <as d,>32 c } }
     \\ { }
     \\ { \override NoteColumn #'force-hshift = #-1.5 \acciaccatura { e,,8 } e1 }
  >>
}

\score
{
  \new PianoStaff
  <<
    \new Staff = "right"  { \pianoRechts }
    \new Staff = "left" { \pianoLinks }
  >>
}

Nun gefällt mir das Zeilenende der ersten Zeile nicht. Die Notenlinien gehen über den letzten Taktstrich hinaus. Wie kann ich das ändern?
Vielen Dank.

Gruß
Gärchle

Malte

#1
Hallo Gärchle,

bitte gib immer ein Minimalbeispiel an und pack das in code-Tags (statt quote-Tags). Ein Minimalbeispiel deines Codes könnte z. B. so aussehen:\version "2.18.2"

pianoRechts = \relative {
  c'1
  \break
  <<
    {
      c1
    }
    \new Staff \with {
      alignAboveContext = "left"
      \remove "Time_signature_engraver"
    } {
      \key des \major
      c1
    }
  >>
}

pianoLinks = \relative {
  c'1
  c
}

\new PianoStaff <<
  \new Staff = "right" \pianoRechts
  \new Staff = "left" \pianoLinks
>>


Es gibt zwei mögliche Lösungen für dein Problem:

1. Setze explicitKeySignatureVisibility, sodaß LilyPond nicht mehr vorm Zeilenumbruch einen Tonart-,,Wechsel" im da noch nicht sichtbaren mittleren System einplant:
\version "2.18.2"

pianoRechts = \relative {
  c'1
  \break
  <<
    {
      c1
    }
    \new Staff \with {
      alignAboveContext = "left"
      \remove "Time_signature_engraver"
    } {
      \once \set Staff.explicitKeySignatureVisibility = #end-of-line-invisible
      \key des \major
      c1
    }
  >>
}

pianoLinks = \relative {
  c'1
  c
}

\new PianoStaff <<
  \new Staff = "right" \pianoRechts
  \new Staff = "left" \pianoLinks
>>


2. Wenn du öfter ein drittes System brauchst, kannst du es durchgehend mitlaufen lassen und per \RemoveEmptyStaves und evtl. \override VerticalAxisGroup.remove-first = ##t verstecken, wenn es gerade keine Noten enthält:\version "2.18.2"

pianoRechts = \relative {
  c'1
  \break
  c
}

pianoMitte = \relative {
  \key des \major
  R1
  c'
}

pianoLinks = \relative {
  c'1
  c
}

\new PianoStaff \with {
  \remove Keep_alive_together_engraver
} <<
  \new Staff = "right" \pianoRechts
  \new Staff = "mid" \with {
    \RemoveEmptyStaves
    \override VerticalAxisGroup.remove-first = ##t
  } \pianoMitte
  \new Staff = "left" \pianoLinks
>>
Bei dieser Lösung tauchen allerdings im Moment Positionierungsbugs auf, ich schau mal, ob ich rausfinden kann, woran das liegt.

Aber eine Frage hätte ich noch: Wie kommts, daß das mittlere System Des-Dur als Tonart hat und die anderen keine Tonartvorzeichnung? Wirkt irgendwie merkwürdig, zumal du ja da nur Des-Dur-fremde Töne hast.

Edit: Das ist issue 4157..

gaerchle

#2
Hallo Malte,

erste Lösung geht. Super Danke!!
Und entschuldige den langen Code und das falsche Einfügen mit dem Zitat-Zeichen.
Ich versuche mich das nächste Mal kurz zu fassen und das "code" zu benutzen.
Die Vorzeichen der anderen Systeme habe ich bei dem Exzerpt einfach vergessen :-)

Gruß
Georg

Malte

D. h. die anderen Systeme haben eigentlich auch Des-Dur? Dann würd ich dir auf jeden Fall zur zweiten Lösung raten!

Das erwähnte Problem betrifft nur Stücke, in denen verschiedene Systeme verschiedene Tonarten haben. Die Vorteile gegenüber der ersten Lösung sind dann

• Weniger Aufwand als dauernd mit << >>, \new Staff und \omit TimeSignature zu hantieren.
• Kein Aufwand, solche Probleme bei Tonart-,,Wechseln" zu umgehen.
• und zuletzt, aber wohl am wichtigsten: Zeilenumbrüche kannst du LilyPond anvertrauen. Bei der ersten Lösung mußt du irgendwann die Zeilenumbrüche selbst festlegen und dann Pausen von Hand auffüllen, wenn du nicht Systeme mitten in der Zeile starten haben willst. Bei der zweiten wird ein System ganz oder gar nicht (wenn es nur Pausen enthielte) gezeigt.