Autor Thema: zusätzlicher Zeilenabstand  (Gelesen 4608 mal)

nepf

  • Member
zusätzlicher Zeilenabstand
« am: Freitag, 1. Oktober 2010, 15:34 »
Ich habe ein Lied gesetzt. Erst kommen die Notenzeilen mit den Strophen, dann kommen die Zeilen mit dem Refrain.

Es würde wirklich besser aussehen, wenn ich vor der ersten Zeile des Refrains einen größeren Abstand hätte. Wie mach ich das?

RobUr

  • Member
Re:zusätzlicher Zeilenabstand
« Antwort #1 am: Sonntag, 3. Oktober 2010, 12:48 »
Hallo nepf,

herzlich willkommen im Forum!

Es gibt verschiedene, konventionelle Möglichkeiten, aber derzeit keine mir bekannte „handliche“ Lösung, den Abstand punktuell zu beeinflussen.

Am überschaubarsten ist für mich immer noch folgender Trick: Am Zeilenbeginn eine leere (oder auch nicht) \mark setzen (weil RehearsalMarks per default an oberster Stelle im Score stehen) und diese \mark zusätzlich mit Ausdehnung nach oben versehen. Das sieht im Code folgendermaßen aus:
\version "2.13.35"

#(ly:set-option 'debug-skylines #t)

\relative c' {
\repeat unfold 3 { c c d d e e d d } \break
\repeat unfold 3 { c c d d e e d d } \break

\mark \markup \with-dimensions #'(0 . 1) #'(0 . 10) { \null }

\repeat unfold 3 { c c d d e e d d }
\bar "|."
}

Wir erzeugen also eine leere Marke per \mark \markup { \null } und weisen ihr per \with-dimensions #'(0 . 1) #'(0 . 10) eine horizontale Ausdehnung von 1 staff-space (0→1) und vor allem eine vertikale Ausdehnung von 10 staff-spaces (0→10) zu. Werte >0 sind nötig, damit die Ausdehnung überhaupt berücksichtigt wird.

Mit der Anzeige der Skylines (#(ly:set-option 'debug-skylines #t)) lässt sich der Effekt genau verfolgen.

Viele Grüße, Robert

nepf

  • Member
Re:zusätzlicher Zeilenabstand
« Antwort #2 am: Sonntag, 3. Oktober 2010, 15:26 »
vielen Dank für deine gut verständliche Hilfe.
Bei aller Begeisterung über Lilypond stochere ich doch noch oft ziemlich im Nebel trotz Doku und trotz Suchfunktion hier im Forum.
Andererseits war es natürlich auch gut, mich ein wenig warten zu lassen. So war ich inzwischen auf folgenden "Trick" verfallen, ich habe der ersten Note einen leeren Textstring und entsprechende Abstände zugeordnet.

a'2^\markup { \vspace #2 \raise #6 " " }funktionierte auch, ist aber vermutlich etwas gezwungen, oder?

RobUr

  • Member
Re:zusätzlicher Zeilenabstand
« Antwort #3 am: Sonntag, 3. Oktober 2010, 17:32 »
Hallo nepf,

du bist schon auf dem richtigen Weg :) Deine Lösung ist eine von vielen und ebenso „gültig“ wie mein Vorschlag. Es braucht eben ein Minimum an Kreativität bei Lily, dann kommt man auch auf solche „Tricks“. Dein Trick hat nur einen einzigen, klitzekleinen Haken, und der ist das \vspace. Dieses Makro steht noch nicht in der aktuell stabilen Version (2.12.3) zur Verfügung, sondern erst seit den Entwicklerversionen 2.13.x. Ich weise immer vorsorglich darauf hin, die Versionsnummer bitte mit anzugeben, um Antworten à la „es funktioniert aber trotzdem nicht bei mir“ vorzubeugen. Etwa die Hälfte hier im Forum arbeitet mit der stabilen, die andere Hälfte mit der Entwicklerversion. Letztere macht große Fortschritte und implementiert ständig neue Befehle, die bisher nicht verfügbar waren. Außerdem gibt es grundlegende Änderungen vor allem in den spacing engines, die sich ganz anders verhalten und Lily 2.12 auf den Kopf stellen.
Deinen bisherigen Posts entnahm ich, dass du eine 2.13er Version im Einsatz hast; deshalb habe ich meine Lösung auch mit einer Entwicklerversion überprüft, die aber auch in 2.12.3 noch funktioniert.

Zitat von: nepf
a'2^\markup { \vspace #2 \raise #6 " " }funktionierte auch, ist aber vermutlich etwas gezwungen, oder?
Nö. Alles, was funktioniert und sauber aussieht, ist okay. „Zwingen“ müssen wir Lily zu einigem ;)
Mein Ansatz für dein Problem war, dass in einem Lied auch Akkorde vorkommen könnten (oder auch andere Objekte, die über der Zeile stehen). Deshalb muss ein Objekt gefunden werden, dem nichts mehr übergeordnet ist! Probier einmal deine Lösungsversion, sobald Akkorde in’s Spiel kommen:
\version "2.13.35"

#(ly:set-option 'debug-skylines #t)

Akkorde = \chordmode {
\repeat unfold 9 { c2 g c g }
}

Stimme = \relative c' {
\repeat unfold 3 { c4 c d d e e d d } \break
\repeat unfold 3 { c c d d e e d d } \break

%\mark \markup \with-dimensions #'(0 . 1) #'(0 . 10) { \null }

c^\markup { \vspace #2 \raise #6 " " } c d d e e d d
\repeat unfold 2 { c c d d e e d d }
\bar "|."
}

\score {
<<
\new ChordNames { \Akkorde }
\new Staff { \Stimme }
>>
}
Wie du siehst, schiebt sich das Markup zwischen Zeile und Akkordbezeichner. Eine Viertel später würde es klappen, weil dort eine Lücke in der Skyline ist. Eine RehearsalMark steht halt an oberster Stelle und lässt sich von ChordNames nicht beeindrucken (außer wir ändern das).

Zitat von: nepf
Bei aller Begeisterung über Lilypond stochere ich doch noch oft ziemlich im Nebel trotz Doku und trotz Suchfunktion hier im Forum.
Nur Mut, der Einstieg ist nicht der allerleichteste und schnellste! Zur Doku muss man wissen, dass auch diese – genau wie die Entwicklerversion selbst – steten Änderungen unterworfen und die deutsche Übersetzung zwar fast vollständig, aber eben noch nicht komplett übersetzt ist. Das Referenzdokument bleibt die englische Dokumentation, die ich als „big page“ aufrufen würde, um sie besser durchsuchen zu können (direkt im Browser). Achtung bei der automatischen Sprachauswahl! Am besten die Doku ebenfalls runterladen und offline lesen.

Beste Grüße, Robert

nepf

  • Member
Re:zusätzlicher Zeilenabstand
« Antwort #4 am: Sonntag, 3. Oktober 2010, 17:45 »
Danke, danke Robert.
Genau, das Problem mit den Akkordbezeichnungen hatte ich schon  :)

Nun hast Du mir also auch die Lösung für ein Problem geliefert, nach dem ich noch gar nicht gefragt hatte, und das obwohl ich Dir auch noch die Detektiv-Arbeit nach der von mir verwendeten Version aufgebürdet habe.

So ein freundlicher Umgang mit NewBees ist nicht überall zu finden.
Vielen Dank - und bestimmt bis bald  ;)