Harm, ich habe versucht, deine geniale Lösung aus diesem Thread
https://liarchiv.joonet.de/index.php?topic=2274.0 abzuwandeln, bin jedoch grandios gescheitert, u.a. auch daran, dass ich 6 music-Variable brauche.
Daher habe ich es anders probiert. Grundsätzlich funktioniert es, allerdings kämpfe ich mit den vertikalen Abständen. Insbesonders die letzte Chordname-Zeile jeder 3er-Gruppe scheint irgendwie am darunter liegenden Notensystem zu hängen.
Warum ich alle Zeilen in eine StaffGroup zusammengefasst habe, ist leicht erklärt. Ich möchte, dass alle Takte ausgerichtet untereinander stehen, weil jede Zeile 7 Akkorde umfasst. Eine andere Möglichkeit dafür ist mir nicht eingefallen, vielleicht gibt es sie.
Ein weiteres Problem ist, dass \annotateKey eine Note verlangt. Füge ich bei den Akkorddefinitionen eine unsichtbare Note mit s1 hinzu, so entsteht ein unschöner Leerraum nach dem Notenschlüssel. Daher habe ich den Weg gewählt, die Beschriftung "Stufe I II" für den 1. und 2. Akkord zusammenzufassen, an den 2. Akkord anzuhängen und mithilfe von Leerzeichen einigermaßen auszurichten, ganz ist es mir nicht gelungen.
In meinem Code sind sicher überflüssige und einander widersprechende Definitionen von offset, padding etc. enthalten. Das liegt daran, dass ich das ganze System noch immer nicht ganz durchblicke. Ich habe deswegen den ganzen Code mit neun Notenzeilen drinnen gelassen, damit man sieht, wie eine komplette Seite gestaltet wird.
Ich hoffe, anhand des Screenshots ist meine Absicht klar.
Hier der Code (auch als Anhang):
\version "2.19.37"
\language "deutsch"
\include "myScheme.ily"
\paper {
left-margin = 25
right-margin = 25
indent = 0
}
\layout {
\context {
\Score
\omit SystemStartBar
\remove "Bar_number_engraver" % Taktnummerierung
\override RehearsalMark.self-alignment-X = #LEFT
\override NonMusicalPaperColumn.page-break-permission = ##f
proportionalNotationDuration = #(ly:make-moment 1/1)
\remove "Mark_engraver"
\remove "Staff_collecting_engraver"
}
\context {
\ChordNames
chordNameLowercaseMinor = ##f
\override ChordName.font-name = #"Monospac821 BT"
\override ChordName.font-series = #'bold
}
\context {
\Staff
\remove "Time_signature_engraver"
\remove "Bar_engraver"
explicitKeySignatureVisibility = ##(#f #f #t)
\consists "Mark_engraver"
\consists "Staff_collecting_engraver"
\override RehearsalMark.self-alignment-X = #LEFT
\override RehearsalMark.padding = #1
\override RehearsalMark.direction=#UP
\override RehearsalMark.outside-staff-priority = ##f
\override RehearsalMark.X-offset = #7
}
\context {
\Voice
\override TextScript.font-size = #3
\override TextScript.font-series = #'bold
}
\context {
\StaffGroup
\override SystemStartBracket.stencil = ##f
}
}
NewStaffWith= {
\override Clef.transparent=##t
\override KeySignature.transparent=##t
\override StaffSymbol.line-count=#1
\override StaffSymbol.transparent=##t
}
NewVoiceWith={
\override TextScript.direction = #DOWN
\override TextScript.font-size = #3.5
\override TextScript.font-series = #'bold
}
MeineFunktion=
#(define-music-function
(dur3 dur4 dur5 moll3 moll4 moll5)
(ly:music? ly:music? ly:music? ly:music? ly:music? ly:music?)
#{
\new StaffGroup
<<
\new Staff
\with \NewStaffWith
%% Staff mit Überschrift sowie Stufenbeschriftung
<<
\new Voice \with { \NewVoiceWith \consists #annotate-key-engraver }
{
\key c \major
\annotateKey
\markup #(format #f "Leitereigene Mehrklänge in " ) \markup "-Dur"
s1
\override TextScript.Y-offset = #-8
\override TextScript.font-size=#2
\override TextScript.self-alignment-X=#RIGHT
\override TextScript.font-series = #'normal
s1_" Stufe: I II"
\override TextScript.self-alignment-X=#CENTER
s1_"III"
s1_"IV"
s1_"V"
s1_"VI"
s1_"VII"
\pageBreak
}
>>
\new Staff
<<
\new Voice
\mark \markup "Dreiklänge"
$dur3
\new ChordNames $dur3
>>
\new Staff
<<
\new Voice
\mark \markup "Vierklänge"
$dur4
\new ChordNames $dur4
>>
\new Staff
<<
\new Voice
\mark \markup "Fünfklänge"
$dur5
\new ChordNames $dur5
>>
\new Staff \with \NewStaffWith
\new Voice \with { \NewVoiceWith \consists #annotate-key-engraver }
{
\key c \minor
\annotateKey
\markup #(format #f "Leitereigene Mehrklänge in " ) \markup "-Moll"
s1
}
\new Staff
<<
\new Voice
\key c \minor
\mark \markup "Dreiklänge"
$moll3
\new ChordNames $moll3
>>
\new Staff
<<
\new Voice
\key c \minor
\mark \markup "Vierklänge"
$moll4
\new ChordNames $moll4
>>
\new Staff
<<
\new Voice
\key c \minor
\mark \markup "Fünfklänge"
$moll5
\new ChordNames $moll5
>>
\new Staff \with \NewStaffWith
\new Voice \with { \NewVoiceWith \consists #annotate-key-engraver }
{
\key a \minor
\annotateKey
\markup #(format #f "Leitereigene Mehrklänge in " )\markup "-Moll"
s1
}
\new Staff
<<
\new Voice
\key a \minor
\mark \markup "Dreiklänge"
\transpose c a, $moll3
\new ChordNames \transpose c a, $moll3
>>
\new Staff
<<
\new Voice
\key a \minor
\mark \markup "Vierklänge"
\transpose c a, $moll4
\new ChordNames \transpose c a, $moll4
>>
\new Staff
<<
\new Voice
\key a \minor
\mark \markup "Fünfklänge"
$moll5
\new ChordNames \transpose c a, $moll5
>>
>>
#})
multipleTransposes =
#(define-music-function (m music)(ly:music? ly:music?)
(music-clone m
'elements
(map (lambda (pitch)
(ly:music-property #{ \transpose c $pitch $music #} 'element))
(event-chord-pitches m))))
DurDrei = \chordmode { c1 d:m e:m f g a:m h:dim }
DurVier = \chordmode { c1:maj7 d:m7 e:m7 f:maj7 g:7 a:m7 h:dim7.7 }
DurFuenf = \chordmode { c1:maj9 d:m9 e:m9.9- f:maj9 g:9 a:m9 h:dim7.7.9- }
MollDrei = \chordmode { c1:m d:dim es:aug f:m g as h:dim }
MollVier = \chordmode { \set majorSevenSymbol = \markup { j7 } c1:maj7.3- d:m7.5- es:maj7.5+ f:m7 g:7 as:maj7 h:dim7 }
MollFuenf = \chordmode { \set majorSevenSymbol = \markup { j7 } c1:m9.7+ d:dim7.7.9- es:maj9.5+ f:m9 g:9.9- as:maj9.9+ h:dim9.9- }
\multipleTransposes { c g h, }
{
\MeineFunktion \DurDrei \DurVier \DurFuenf \MollDrei \MollVier \MollFuenf
}