Autor Thema: durchgehender Taktstrich am Ende eines jeden Systems (ChoirStaff)  (Gelesen 2136 mal)

Lilysetter

  • Member
Hallo zusammen,
bis jetzt schaffe ich das nur, in dem ich eine StaffGroup verwende, die durchgezogenen Linie mit

\override Staff.BarLine.allow-span-bar = ##f

ausschalte und im jeweils letzten Takt der Zeile manuell mit

\once\override Staff.BarLine.allow-span-bar = ##t

die Verbindungslinie einmalig einschalte.
Wenn sich jetzt der Zeilenumbruch ändert, muss ich das jedes mal wieder anpassen.
Das muss doch automatisch gehen. Ich tüftle jetzt schon den ganzen Tag herum, komme aber auf keinen grünen Zweig.
Brauche ich dafür zwei Engraver, der eine für die nicht-durchgezogenen und der andere für die durchgezogenen?
Vielen Dank!

harm6

  • Member
Re: durchgehender Taktstrich am Ende eines jeden Systems (ChoirStaff)
« Antwort #1 am: Montag, 6. April 2015, 23:49 »
Hallo Lilysetter,

willkommen im Forum!

Bitte gib immer Deine LilyPond-Version an, sowie ein kompilierbares kurzes Beispiel.

Zum Thema:
Du mußt die StaffGroup verwenden, denn ChoirStaff hat keinen engraver für die SpanBars.
Kann man natürlich reintun, aber dann kann man auch gleich StaffGroup verwenden, da die Unterschiede dann nur noch marginal sind.

Schau mal, ob Du mit folgendem klarkommst:

\version "2.19.17"

\layout {
  \context {
    \Staff
    \override BarLine.allow-span-bar = ##f
    \override BarLine.after-line-breaking =
    #(lambda (grob)
       (if (not (= 0 (ly:item-break-dir grob)))
           (ly:grob-set-property! grob 'allow-span-bar #t)))
  }
}
   
I = {
  e''1 \break
  \repeat unfold 2 e''1 \break
  \repeat unfold 97 e''1
}

II = \repeat unfold 100 c''1

III = {
  \repeat unfold 100 g''1
  \bar "|."
  }

\new StaffGroup <<
  \new Staff \I
  \new Staff \II
  \new Staff \III
>>

HTH,
  Harm

Lilysetter

  • Member
Re: durchgehender Taktstrich am Ende eines jeden Systems (ChoirStaff)
« Antwort #2 am: Donnerstag, 9. April 2015, 19:57 »
Oh Harm, Du bist ein Schatz, was täten wir nur ohne Dich!
Ich wäre da nie draufgekommen. Was ich gesucht habe, war ein "Schalter", mit dem man wie bei den Taktnummern auswählen kann, ob sie am Anfang, mitten drin oder am Ende gedruckt werden. Analog zu
\override Score.BarNumber  #'break-visibility = #'#(#f #t #t)
\override Score.BarLineSpan#'break-visibility = #'#(#t #f #f)

Deine Lösung klappt prima, aber was mich am Beispiel wundert, dass in V.2.18.2 die 100 Takte so ungleichmäßig auf die Systeme verteilt werden:
1+2+4+7+10+12 + 12+13+13+13+13 = 100     warum nicht:
1+2+12+12+12 + 12+12+12+12+13 = 100   oder
1+2+10+10+11+11 + 11+11+11+11+11 = 100   oder
1+2+9+9+9+10 + 10+10+10+10+10+10 = 100 ?

fugenkomponist

  • Member
Re: durchgehender Taktstrich am Ende eines jeden Systems (ChoirStaff)
« Antwort #3 am: Samstag, 11. April 2015, 18:44 »
Ohne zu wissen, ob LilyPond das tatsächlich so macht, kann ich aber folgendes vermuten:

Gleichlange Noten in aufeinanderfolgenden Takten und Zeilen sollen ähnlich viel horizontalen Platz kriegen, um die Lesbarkeit zu erleichtern (und für nen halbwegs gleichmäßigen Grauwert). Der TeX-Zeilenumbruchalgorithmus macht das z. B. mit Wortabständen ähnlich: Da wird auch darauf geachtet, dass die Leerzeichen von einer Zeile zur nächsten ähnlich breit sind.