Hallo
Don!Ich weiss dass das langsam etwas nervig wird, tut mir auch echt leid, aber vielleicht könnte jemand die angehängte Datei kurz umstellen, danach hab ichs dann auch bestimmt kapiert.
Schon in Ordnung … Ich gebe mir immer Mühe, die Logik hinter Lily verständlich zu machen. Je nach Problem kann es unterschiedlich lange dauern, bis man das Grundsätzliche verstanden hat. Aber wenn dann das Prinzip klar ist, dürfte sich das Brett vorm Kopf von allein verabschieden
Ein entscheidender Grundsatz für dein Titelblatt-Problem ist die klare Trennung von Markup und Musik sowie die Unterteilung des Dokuments in buchähnliche Abschnitte. Ein Roman ist ja auch in mehrere Kapitel unterteilt. Dieses Prinzip greift Lily mit der book-bookpart-Möglichkeit auf, die an sich sehr einleuchtend ist, aber ich erkläre es gleich nochmal mit einigen Ergänzungen, da ich vermute, dass du organisatorisch mit verschiedenen Variablen und \score-Definitionen durcheinander kommst. (Ganz nebenbei hat mich das ebenfalls viele Stunden des Ausprobierens und Grübelns gekostet, aber es ist unerlässlich, wenn man mit umfangreichen Partituren arbeitet. Häufig hilft wiederholtes Lesen der entsprechenden NR-Kapitel und weniger wildes Code-kopieren. In der NR [engl. Originaldokument] habe ich bisher nichts falsches, höchstens schwierig formuliertes oder lückenhaftes gefunden.)
OKAY –
wie funktioniert das nun mit diesem buchähnlichen Aufbau, und wohin kommen welche Variablen und Blöcke?Als Beispiel soll eine komplette Notenausgabe incl. Titelei und zwei verschiedenen Klavierstücken dienen. Ein Inhaltsverzeichnis lasse ich vorerst bewusst weg. Da es um die Struktur geht, fehlen auch Noten etc.
-- Dateianfang --
\version "2.12.3" % Lily-Version
#(set-global-staff-size 20) % Die Zeilengröße für das Dokument angeben.
#(set-default-paper-size "a4") % Papierformat und -ausrichtung für das Dokument angeben.
% Jetzt Variablen definieren, die im gesamten Dokument verwendet werden sollen.
myTitle = "Zwei Etüden"
mySubtitle = "für das Pianoforte zu drei Händen"
myDedication = "Meiner Klavierlehrerin in tiefster Abneigung gewidmet."
myComposer = "Ano Nymus"
% Hier können auch schon die Variablen mit den Noten kommen;
% alternativ in Dateien auslagern und an dieser Stelle per \include einbinden.
EtuedeEinsGlobal = { Tonart, Takt, Taktstriche, Umbrüche etc. für erstes Stück }
EtuedeEinsNotenRH = { Noten für die rechte Hand bzw. obere Zeile des ersten Stücks }
EtuedeEinsNotenLH = { Noten für die linke Hand bzw. untere Zeile des ersten Stücks }
EtuedeZweiGlobal = { Tonart, Takt, Taktstriche, Umbrüche etc. für zweites Stück }
EtuedeZweiNotenRH = { Noten für die rechte Hand bzw. obere Zeile des zweiten Stücks }
EtuedeZweiNotenLH = { Noten für die linke Hand bzw. untere Zeile des zweiten Stücks }
% JETZT NEHMEN WIR DAS BUCH AUS DEM REGAL:
\book {
% Welche gemeinsamen Seiteneinstellungen hat das BUCH?
% (Format, Ausrichtung und staff size sind schon auf oberster Ebene definiert.)
\paper {
left-margin = 2\cm
line-width = 17\cm
ragged-last-bottom = ##f
first-page-number = #-1 % Titelblatt = -1, dann [leere] Rückseite = 0, dann erst Seite "1"
% optional globales even[/odd]Header[/Footer]Markup
% falls Fonts umdefiniert werden: hier! (myStaffSize = ... #(define fonts ...) etc.)
}
% Welche gemeinsamen Header-Optionen sollen für das BUCH gelten?
\header {
tagline = ##f
breakbefore = ##t % Titel auf einer neuen Seite beginnen
}
% JETZT BETRACHTEN WIR DIE VORDERSEITE DES BUCHES (1. BUCHTEIL: Titelblatt):
\bookpart {
\markup \abs-fontsize #20 \fill-line {
\center-column {
\myComposer
\myTitle
\mySubtitle
}
}
% abweichende Seiteneinstellungen für diesen bookpart:
\paper {
oddHeaderMarkup = \markup { \null }
evenHeaderMarkup = \markup { \null }
oddFooterMarkup = \markup { \null }
evenFooterMarkup = \markup { \null }
}
}
% JETZT SCHLAGEN WIR DAS BUCH AUF (2. BUCHTEIL: [leere] Titelblattrückseite):
\bookpart {
\markup { \null } % leeres Markup, sonst keine Ausgabe; kann stattdessen auch Herausgeberhinweise, Vorwort u.ä. enthalten
\paper {
oddHeaderMarkup = \markup { \null }
evenHeaderMarkup = \markup { \null }
oddFooterMarkup = \markup { \null }
evenFooterMarkup = \markup { \null }
}
}
% JETZT ENDLICH KOMMT DAS ERSTE MUSIKSTÜCK (3. BUCHTEIL: Etüde I):
\bookpart {
\paper {
% abweichende Seiteneinstellungen für aktuellen bookpart
}
\header { % Kopfdaten für aktuellen \bookpart-Block
dedication = \myDedication
title = "Etüde I"
subtitle = \markup { "aus" \myTitle \mySubtitle }
composer = \myComposer
}
\score { % Partiturdefinition
\context PianoStaff = "Klavier"
<<
\context Staff = "rechte Hand" << \EtuedeEinsGlobal \EtuedeEinsNotenRH >>
\context Staff = "linke Hand" << \EtuedeEinsGlobal \EtuedeEinsNotenLH >>
>>
\layout { % Notenlayout für aktuellen \score-Block; erzeugt Notenausgabe
indent = #0
}
}
}
% JETZT KOMMT NOCH DAS ZWEITE MUSIKSTÜCK (4. BUCHTEIL: Etüde II):
\bookpart {
\paper {
% abweichende Seiteneinstellungen für aktuellen bookpart
}
\header { % Kopfdaten für aktuellen \bookpart-Block
dedication = \myDedication
title = "Etüde II"
subtitle = \markup { "aus" \myTitle \mySubtitle }
composer = \myComposer
}
\score { % Partiturdefinition
\context PianoStaff = "Klavier"
<<
\context Staff = "rechte Hand" << \EtuedeZweiGlobal \EtuedeZweiNotenRH >>
\context Staff = "linke Hand" << \EtuedeZweiGlobal \EtuedeZweiNotenLH >>
>>
\layout { % Notenlayout für aktuellen \score-Block; erzeugt Notenausgabe
indent = #0
}
}
}
% MITTLERWEILE HABEN WIR (angenommen) 6 SEITEN UND BRAUCHEN NOCH 2 FÜR EINE 8-SEITEN-BROSCHÜRE (letzter BUCHTEIL: Blindseiten):
\bookpart {
\markup { \null } \pageBreak \markup { \null } % leeres Markup, sonst keine Ausgabe
\paper {
oddHeaderMarkup = \markup { \null }
evenHeaderMarkup = \markup { \null }
oddFooterMarkup = \markup { \null }
evenFooterMarkup = \markup { \null }
}
}
% MIDI-AUSGABE FEHLT NOCH!
% (benötigt keinen eigenen \bookpart, sollte aber innerhalb von \book stehen)
% 2 \score-Blöcke für je 1 MIDI-Datei pro Stück
\score { % definiert MIDI-Partitur #1
\context PianoStaff = "Klavier"
<<
\context Staff = "rechte Hand" << \EtuedeEinsGlobal \unfoldRepeats \EtuedeEinsNotenRH >>
\context Staff = "linke Hand" << \EtuedeEinsGlobal \unfoldRepeats \EtuedeEinsNotenLH >>
>>
\midi { } % erzeugt MIDI-Datei #1
}
\score { % definiert MIDI-Partitur #2
\context PianoStaff = "Klavier"
<<
\context Staff = "rechte Hand" << \EtuedeZweiGlobal \unfoldRepeats \EtuedeZweiNotenRH >>
\context Staff = "linke Hand" << \EtuedeZweiGlobal \unfoldRepeats \EtuedeZweiNotenLH >>
>>
\midi { } % erzeugt MIDI-Datei #2
}
}
-- Dateiende --
So – nach diesem Schema baue
ich meine Notenausgaben. Ich fahre damit ganz prima, zumal es auf meine Ansprüche maßgeschneidert ist. Die Struktur ist beliebig erweiterbar und kennt kaum Grenzen. Man muss nur den Überblick behalten, aufmerksam die Logausgabe beobachten und Ruhe bewahren, wenn Fehler auftreten, die erfahrungsgemäß
fast immer auf falsche bzw. unvollständige Klammerung (seltener Fehlposition bestimmter Blöcke) zurückzuführen sind! Eine umfangreiche Partitur ist nunmal ein großes Unterfangen – wo gehobelt wird, fallen Späne. Experimentieren erwünscht!
Ein Titelblatt ist also nichts weiter als ein separater \bookpart, der den anderen vorangestellt wird und lediglich \markup statt Noten enthält. Im Prinzip enthält die Datei jede Menge Noten (in eigenen Variablen), aber diese werden erst ganz woanders in den \score-Blöcken
abgerufen/aktiviert und durch \layout innerhalb des \score-Blocks
grafisch ausgegeben. Dieser wichtige Unterschied ist deutlich am Ende des Beispiels erkennbar, wenn zwar \score-Blöcke definiert, aber statt durch \layout mittels \midi verarbeitet werden!
Zwingend notwendig ist jedenfalls, dass wenn man schon mit \bookpart arbeitet, alles mit \book umschlossen werden und die Struktur von vorn bis hinten stimmen muss; selbst „Die unendliche Geschichte“ klappen wir irgendwann zu – und das Buch ist „abgeschlossen“: \book {}!
Würde es verwirren, wenn ich jetzt hinzufügte, man könne auch mehrere \book(s) in einer Datei definieren?

Kein Scherz, sondern sogar äußerst praktisch, da jeder weitere \book-Block auch eine weitere, separate Datei erzeugt! Im vorliegenden Beispiel, das eine „Gesamtausgabe“ erzeugt, könnte man noch einen \book-Block nur mit der ersten Etüde und einen weiteren nur mit der zweiten Etüde anlegen, dann erhielte man mit einem einzigen Lily-Durchlauf 3 PDFs: Gesamtausgabe, Etüde I, Etüde II

Als Anhang gibt’s noch deine überarbeitete Datei. Ein paar Tipps: Wenn du schon
compers „Vorschub“-Funktion einbindest, benutze sie doch auch! Dann hat das ewige „ge
\nulle“ ein Ende … Ein weiterer wäre der oft gesehene exzessive Einsatz von
\fill-line, um jede Zeile einzeln zu zentrieren: das geht doch prima mit
\center-column { "Zeile 1" "Zeile 2" ... }! Um die Spalte mit zentriertem Inhalt zentriert auszurichten, nimmt man
\fill-line { \center-column { ... } } – spart ’nen Haufen Tippen. Was uns NoteEdit aber in jedem Fall antut, sind dessen maschinell vergebene Bezeichner:
\context Staff = cTrumpetXEIA liest sich doch wesentlich schlechter als
\context Staff = "Trumpet 4". Dass dieser Editor die Contexte explizit bis hinunter zum Voice-Context anlegt, kann man ihm ja verzeihen (Lily legt diese im Hintergrund selbst an). Es ist nur sehr unübersichtlich dadurch.
achtung auf die version, es hat sich einiges geändert (seit 2.8...)
Es ist ja eben nicht
Lily 2.8.1, sondern
NoteEdit 2.8.1. Der Code läuft gut durch – bis auf die Warnungen wegen der fehlerhaften
instrument[Name]-Definitionen: die müssen natürlich korrigiert werden! Ich habe das in der angehängten Datei getan. Jetzt würde mich interessieren, ob NoteEdit das wieder rückgängig machen würde.
Don: bitte Feedback nach Probelauf!
Ansonsten hoffe ich, dass jetzt vieles klar(er) ist und die beigefügte Datei als gute Vorlage dienen kann.
Beste Grüße, Robert