Autor Thema: Zeilenumbruch Richtlinien  (Gelesen 4352 mal)

Jonathan

  • Member
Zeilenumbruch Richtlinien
« am: Freitag, 22. Februar 2013, 22:40 »
Nabend,

ich habe gerade einen einfachen Choral abgeschrieben. Soweit komme ich auch gut zurecht, bloß gefällt mir das Ergebnis noch nicht besonders. Beispielsweise endet die Strophe mit einer ganzen Note, danach geht der Refrain los. Lilypond hat jetzt aber den Zeilenumbruch genau vor diesem Abschlusstakt gemacht, die Zeile dahinter hat dann noch den letzten Takt aus der Strophe, darauf folgt der Refrain.

Nun gut, Lilypond kann natürlich nicht wissen, wie das Stück logisch aufgebaut ist, aber kann ich das irgendwie angeben? So dass es sich danach wenigstens ein bisschen richtet und versucht, dass Teile, die Zusammenhängen, auch in Zusammenhängenden Zeilen stehen?
Es geht mir dabei nicht nur um Strophe/Refrain, auch innerhalb einer Strophe kann es ja mehrere logische Abschnitte geben. Es erscheint mir jetzt aber auch irgendwie nicht richtig, einen harten Umbruch zu erzwingen, ich möchte wie gesagt eher Lilypond Hinweise geben, wo Umbrüche nach Möglichkeit hin sollten.

Bisher habe ich probiert, Strophe und Refrain durch einen doppelten Taktstrich zu trennen, aber das hat leider nichts geändert.

eluze

  • Member
Re: Zeilenumbruch Richtlinien
« Antwort #1 am: Freitag, 22. Februar 2013, 23:34 »
hallo jonathan

vielleicht kein rezept von dem man wunder erwarten kann, aber vielleicht hilft es ab und zu:
\newSpacingSectionhdh
Eluze

Jonathan

  • Member
Re: Zeilenumbruch Richtlinien
« Antwort #2 am: Samstag, 23. Februar 2013, 10:34 »
Ne, das hat nix geändert. Ich hab jetzt erstmal einen Zeilenumbruch von Hand gemacht, ist schonmal besser, fühlt sich aber nicht richtig an.

Be-3

  • Member
Re: Zeilenumbruch Richtlinien
« Antwort #3 am: Samstag, 23. Februar 2013, 12:31 »
Hallo Jonathan,

\newSpacingSection beeinflußt den Zeilenumbruch nicht, sonder soll nur ermöglichen, Bereiche mit unterschiedlichen Notenabständen zu setzen...

Es ist ein etwas heikles Problem: der Standard-Zeilenumbruch berücksichtigt keine "Meilensteine", aber einen hart erwzwungenen Umbruch mit \break möchte man auch nicht.

Eine Zwischenlösung muß her, also Unterscheidbarkeit zwischen mehr und weniger wünschenswerten Umbruchstellen. Intern gibt es line-break-penalty-Werte, also Straf- bzw. Bonuspunkte für jede Umbruchstelle, so daß Lilypond einen (aus seiner Sicht) guten Kompromiß finden kann.

Diese Strafpunkte lassen sich auch beeinflussen: Zuständig ist die NonMusicalPaperColumn (Taktstriche ...). Etwas unelegant ist, daß diese Sonder-Penalty vor der Umbruchstelle (z. B. vor der letzten Note im Takt) per \override gesetzt und danach mit \revert wieder rückgängig gemacht werden.
Sicher kann man das auch eleganter lösen, aber ich habe die Befehle hier direkt in den Notentext geschrieben - da sieht man deutlich, was passiert.

Ich habe ein Beispiel konstruiert, bei dem man das Verhalten beobachten kann. Ein Kinderlied, bestehend aus drei Teilen (der mittlere ist nur zwei Takte lang, damit man den Effekt sieht).
Seitenformat ist DIN A6 quer und jede Variante bekommt ihre eigene Seite.

  • 1. Standard: ist (wie zu erwarten) der "natürliche" Zeilenumbruch von Lilypond. Man sieht, daß der zweitaktige Mittelteil genau vom Zeilenumbruch geteilt wird - der zweite Takt ist in der nächsten Zeile.
  • 2. Mit Gewalt: eine harte \break-Anweisung führt dazu, daß beide wünschenswerten Umbruchstellen (vor und nach dem Mittelteil) brutal eingehalten werden - das ist zuviel des Guten!
  • 3. Mit Gewichtung: durch das Setzen einer Penalty von #-1 (also Bonuspunkte) wird der Zeilenumbruch vor und nach dem Mittelteil für Lilypond besonders attraktiv. Wenn aber andere Gründe dagegensprechen, etwa viele Strafpunkte für zu wenige bzw. zu breit gezogene Takte in einer Zeile, überwiegen doch die Nachteile und es erfolgt kein Zeilenumbruch. Ergebnis: Lilypond versucht, entweder vor oder nach dem Mittelteil umzubrechen - der Zeilenumbruch liegt also in diesem speziellen Fall an einer der beiden bevorzugten Stellen.

\version "2.16.1"

#(set-default-paper-size "a6" 'landscape)
\paper {
  indent = #0
}


% Standard
notenA = \relative c'' {
  g4 e e2 f4 d d2 c4 d e f g g g2 g4 e e2 f4 d d2 c4 e g g c,1 \bar ".|."
  d8 d d d d e f4 e8 e e e e f g4 \bar ".|."
  g4 e e2 f4 d d2 c4 e g g c1 \bar "|."
}

% Mit Gewalt - harter \break-Befehl
notenB = \relative c'' {
  g4 e e2 f4 d d2 c4 d e f g g g2 g4 e e2 f4 d d2 c4 e g g c,1 \bar ".|." \break
  d8 d d d d e f4 e8 e e e e f g4 \bar ".|." \break
  g4 e e2 f4 d d2 c4 e g g c1 \bar "|."
}

% Mit Gewichtung
notenC = \relative c'' {
  g4 e e2 f4 d d2 c4 d e f g g g2 g4 e e2 f4 d d2 c4 e g g
  \override Score.NonMusicalPaperColumn #'line-break-penalty = #-1
  c,1 \bar ".|."
  \revert Score.NonMusicalPaperColumn #'line-break-penalty
  d8 d d d d e f4 e8 e e e e f
  \override Score.NonMusicalPaperColumn #'line-break-penalty = #-1
  g4 \bar ".|."
  \revert Score.NonMusicalPaperColumn #'line-break-penalty
  g4 e e2 f4 d d2 c4 e g g c1 \bar "|."
}

\bookpart {
  \score {
    \new Staff \notenA
    \header { piece = "Standard" }
  }
}

\bookpart {
  \score {
    \new Staff \notenB
    \header { piece = "Mit Gewalt" }
  }
}

\bookpart {
  \score {
    \new Staff \notenC
    \header { piece = "Mit Gewichtung" }
  }
}

Viele Grüße
Torsten

PS: Bei Deinem Beispiel ("Dein Wort...") muß man die Bonuspunkte schon höher setzen, um einen Effekt zu sehen, aber andererseits habe ich keine Konstellation gefunden (Zeilenanzahl, Zeilenbreite...), in der ein Umbruch an anderer Stelle als dem Doppelstrich wünschenswert gewesen wäre.
Grund: Zwei Abschnitte, der eine 8 Takte, der andere auch - es spricht eigentlich nichts dagegen, in diesem Fall einen harten Umbruch mit \break zu verlangen, denn es ist kaum zu befürchten, daß Lilypond es nicht schafft, zwei ausreichend lange und sogar gleich lange Teile so zu setzen, daß dieser Umbruch ästhetisch aussieht...
« Letzte Änderung: Samstag, 23. Februar 2013, 12:51 von Be-3 »

Jonathan

  • Member
Re: Zeilenumbruch Richtlinien
« Antwort #4 am: Samstag, 23. Februar 2013, 13:10 »
Cool, danke. Das Ergebnis sieht auf jeden Fall cool aus, auch wenn es ein bisschen hässlich zu schreiben ist.

RobUr

  • Member
Re: Zeilenumbruch Richtlinien
« Antwort #5 am: Sonntag, 24. Februar 2013, 19:08 »
Hallo alle,

bei solch kurzen Stücken kann man doch getrost mit \break arbeiten. Für längere Stücke (12 Seiten aufwärts) ist das Vorgehen mit Gewichtung sinnvoll.

Wenn man \newSpacingSection ansetzt, muss man auch die gewünschte Laufweite angeben! Beispiel:
\newSpacingSection
\override SpacingSpanner #'base-shortest-duration = #(ly:make-moment 1 8)
Hierzu bitte in der NR 4.5 Horizontal spacing nachlesen.

Im Anhang meine Version des Liedes.

Gruß, Robert