Hallo Jörg,
willkommen im Forum.
Für das was Dir vorschwebt ist LilyPond nicht unbedingt das beste tool.
LilyPond orientiert sich an den wunderschönen, handgefertigten Notendrucken des späten 19. und 20. Jahrhunderts.
Zu diesem Zweck wird ein sehr hoher Aufwand betrieben um das spacing diesen Vorbildern anzugleichen.
Dein Wunsch erfordert viele dieser Einstellungen abzuschalten bzw zu umgehen. Dies bringt durchaus einige Nachteile mit sich und ist auch nicht immer wirklich zufriedenstellend möglich.
Im einzelnen:
TaktstricheSo weit bin ich [...] mit unsichtbaren Takten am Zeilenende und manuell gesetzten Taktstrichen am nächsten Zeilenanfang schon gekommen:
...
Das schaut zwar schon passabel gut aus, aber der Code wird wahnsinnig unübersichtlich. Daher meine erste Frage: Wie kann ich Lilypond (bzw. den Bar_engraver) dazu bringen, am Anfang und am Ende jeder Zeile immer einenTaktstrich zu setzen, auch wenn dieser nur einfach ist und kein Wiederholungszeichen o. Ä.?
Der Bar_engraver schaut welches glyph er benutzen soll. Die möglichen glyphs (sowie deren Verhalten beim Zeilenumbruch) sind in `bar-glyph-alist' in /scm/bar-line.scm aufgelistet. (v2.16)
Allerdings gibt es
kein glyph welches einen einfachen Taktstrich am Zeilenende und am Zeilenanfang ausgibt. Für das Wiederholungszeichen gilt entsprechendes.
In 2.16 ein solches Verhalten zu programmieren ist ein Alptraum.
In 2.17.19 allerdings recht problemlos via
\defineBarLine ...
(Patch von Marc Hohl, meine Wenigkeit war auch nicht unbeteiligt

Tatsächlich ist das auch schon in früheren devel-Versionen erhältlich, ich hab' aber vergessen ab wann genau.)
Danach kann man diese neuen Taktstricharten als den default festlegen via:
defaultBarType = ...
endRepeatType = ...
Falls man so vorgeht entfällt das rumeiern mit
\set Score.automaticBars = ##t
und der workaround
\time 1/128
\once \override ChordName #'transparent = ##t c128
Man kann sich die Sache mit
\set Score.repeatCommands
sparen und das einfachere \repeat volta ... bzw \alternative ... benutzen.
Vertikale AusrichtungUnd meine zweite Frage: Welche Möglichkeit gibt es, wirklich alle Taktstriche und Akkorde in der Darstellung exakt übereinander zu bekommen?
Ich habe zusätzlich noch eingefügt:
\override NonMusicalPaperColumn #'padding = #1.5
\override ChordName #'X-extent = #'(0 . 0)
Darüberhinaus ist noch ein manueller Eingriff nötig beim startenden Wiederholungszeichen:
\once \override Score.BarLine.X-extent = #'(0 . 0.15)
Nichtdestotrotz stimmt die vertikale Ausrichtung nicht mehr, falls Du die Takte voller machst, also z.b. mehrere Achtel-Akkorde einfügst.
Vielleicht kann man da noch am SpacingSpanner rumschrauben. Ich bin mir jedoch nicht sicher, ob man zu einer Lösung kommen kann die in jedem Fall funktioniert.
Auch ist das Ganze jetzt wesentlich kollisionsanfälliger geworden.
EDIT:
Ich habe mir jetzt noch anderes von Ralph Patt angeschaut: Wenns komplizierter wird dann stimmt die vertikale Ausrichtung dort auch nicht mehr.
ZeilenabstandUnd noch eine dritte Frage: Wie kann ich den Zeilenabstand verändern? Ich habe schon mit der VerticalAxisGroup auf Staff-Ebene experimentiert, aber es nicht hinbekommen.
Das geht mit
system-system-spacing #'basic-distance = #10
in \paper
Code:\version "2.17.19"
\defineBarLine ":|.-cn" #'(":|." "|" " |.")
\defineBarLine "|-cn" #'("|" "|" "|")
\defineBarLine "||-cn" #'("||" "|" "||")
myChordNamesLayout =
\layout {
#(layout-set-staff-size 15)
ragged-right = ##t
%line-width = 16\cm
\context {
\Score
\remove "Bar_number_engraver"
proportionalNotationDuration = #(ly:make-moment 1/8)
defaultBarType = #"|-cn"
endRepeatType = #":|.-cn"
\override NonMusicalPaperColumn #'padding = #1.5
%\override NonMusicalPaperColumn #'line-break-permission = ##f
}
\context {
\ChordNames
\consists "Bar_engraver"
\override BarLine #'bar-extent = #'(-2 . 2.5)
\override ChordName #'font-size = #0
\override ChordName #'X-extent = #'(0 . 0)
}
}
\header {
tagline = ##f
}
\paper {
indent = 0\mm
top-margin= 20\mm
right-margin = 25\mm
left-margin = 25\mm
bottom-margin = 10\mm
system-system-spacing #'basic-distance = #10
}
chrds =
\chordmode {
\once \override Score.BarLine.X-extent = #'(0 . 0.15)
\bar ".|:"
\repeat volta 2 {
es2 e:dim f:m7 fis:dim
es g:7 | as as:m | \break
es2 c:7 | f:m7 bes:7 |
}
\alternative {
{ g:7 c:7 | f:7 f4:m7 bes:7 \break }
{ es2 as:m | es g:7 \bar "||-cn" \break }
}
c1:m | as1:7 | f:7 | c:7 | \bar "|."
}
\score {
\new ChordNames \chrds
\layout { \myChordNamesLayout }
}Bitte beachte: Ich habe 2.17.19 und die entsprechende Syntax benutzt.
Bild im Anhang.
HTH,
Harm