Deutsches Lilypond Forum (Archiv)

Allgemein => Fragen zu Funktionen => Thema gestartet von: Jonathan am Freitag, 22. Februar 2013, 22:40

Titel: Zeilenumbruch Richtlinien
Beitrag von: Jonathan 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.
Titel: Re: Zeilenumbruch Richtlinien
Beitrag von: eluze 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
Titel: Re: Zeilenumbruch Richtlinien
Beitrag von: Jonathan 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.
Titel: Re: Zeilenumbruch Richtlinien
Beitrag von: Be-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.


\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...
Titel: Re: Zeilenumbruch Richtlinien
Beitrag von: Jonathan 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.
Titel: Re: Zeilenumbruch Richtlinien
Beitrag von: RobUr 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 (http://lilypond.org/doc/v2.16/Documentation/notation/horizontal-spacing) nachlesen.

Im Anhang meine Version des Liedes.

Gruß, Robert