Was ich eigentlich machen will, ist eine Liedersammlung.
Was ich bis jetzt habe ist auf GitHub, ich weiß nicht, ob da jeder darauf zugreifen kann. Ich wollte es so eingestellt haben.
https://github.com/MonikaLobinger/LiederbuchDie Liedersammlung soll "wohl strukturiert" sein.
Die Eingabedateien sollen so einfach wie es nur geht sein, damit auch Leute mit sehr wenig Erfahrung in Lilypond Lieder hinzufügen können. Diesen Punkt habe ich meines Erachtens erfüllt. Die Eingabedatei muss kompilierbar sein, es soll eine Testausgabe erzeugt werden, so daß man sehen kann, welche Noten man eingegeben hat und ob die Lyric dazupasst. Weiterhin soll es für jede Strophe Lyrics und Stanza (unterhalb des Liedes geschrieben) geben. So daß die Produktionsroutine die Wahl hat, ob und wieviel Lyrics und was dann entsprechend als Verse druntersteht. Auch das funktioniert alles.
\version "2.19.63"
\include "begin.ily"
§§Title = "Es klappert die Mühle"
§§Subtitle = "am rauschenden Bach"
§§ScoreKey = { \key g \major }
§§ScoreMeter = { \time 6/8 }
§§ScoreTempo = { \tempo 4 = 100 }
§§HiddenVoice = {
\partial 8 s8 | s2 s8 \breathe s8 | s2. | s |
s | s | s2 s8 \breathe s8 |
s2. | s | s | s2 s8 \breathe s8 | | s | s2 s8 |
}
§§NotesSopranoI = \relative c' {
\partial 8 d8 | d8 g8 g8 g8 a8 b8 | b8 a8 a8 a4 d8 | b8 r2 d,8 |
d8 g8 g8 g8 a8 b8 | b8 a8 a8 a4 d8 | b8 r2 b16 ([c16]) |
d8. d16 d8 d8 e8 d8 | d8 c8 c8 c4 \breathe c8 | b8. b16 b8 d8 c8 b8 |
b8 a8 a8 a4 \breathe d8 | b8 r8 b8 a8 r8 a8 | g4 r8 r4
\bar "|."
}
% §§NotesSopranoII = \relative c' {
% r1 | r1 |
% }
§§Chords = \chordmode {
\partial 8
s8 g2. c g8 s8 s2 g2. c g8 s8 s2 g2. c g c g8 s4 c8 s4 g4
}
§§VerseOneSI = \lyricmode {
\set stanza = "1."
Es | klap -- pert die Müh -- le am | rau -- schen -- den Bach, | klipp, klapp!
Bei | Tag und bei Nacht ist der | Mül -- ler stets wach, klipp, | klapp!
Er | mah -- let uns Korn zu dem | kräf -- ti -- gen Brot, und | ha -- ben wir sol -- ches,
dann | hat's kei -- ne Not. Klipp, | klapp, klipp, klapp, klipp, | klapp!
}
§§StanzaOne =
"1. Es klappert die Mühle
am rauschenden Bach,
klipp, klapp!
Bei Tag und bei Nacht
ist der Müller stehts wach,
klipp, klapp!
Er mahlet uns Korn zu
dem kräftigen Brot,
und haben wir solches,
dann hats keine Not.
Klipp, klapp, klipp,
klapp, klipp, klapp!"
§§VerseTwoSI = \lyricmode {
\set stanza = "2."
Flink | lau -- fen die Rä -- der und | dre -- hen den Stein, | klipp, klapp!
und | mah -- len den Wei -- zen zu | Mehl uns so fein klipp | klapp!
Der | Bäk -- ker dann Zwie -- back und | Ku -- chen d'raus bäckt, | der im -- mer den Kin -- dern
be -- | son -- ders gut schmeckt, Klipp, | klapp, klipp, klapp, klipp, | klapp!
}
§§StanzaTwo =
"2. Flink laufen die Räder
und drehen den Stein,
klipp, klapp!
und mahlen den Weizen
zu Mehl uns so fein,
klipp, klapp!
Der Bäcker dann Zwieback
und Kuchen d'raus bäckt,
der immer den Kindern
besonders gut schmeckt.
Klipp, klapp, klipp,
klapp, klipp, klapp!"
§§VerseThrSI = \lyricmode {
\set stanza = "3."
Wenn | reich -- lich -- e Kör -- ner das | Ak -- ker -- feld trägt, | klipp, klapp!
Die | Mü -- le dann flink ih -- re | Rä -- der be -- wegt, klipp | klapp!
Und schenkt uns der Him -- mel nur | im -- mer -- dar Brot, so | sind wir ge -- bor --gen
und | lei -- den nicht Not! Klipp, | klapp, klipp, klapp, klipp, | klapp!
}
§§StanzaThr =
"3. Wenn reichliche Körner
das Ackerfeld trägt,
klipp, klapp!
Die Mühle dann flink
ihre Räder bewegt,
klipp, klapp!
Und schenkt uns der Himmel
nur immerdar Brot,
so sind wir geborgen
und leiden nicht Not!
Klipp, klapp, klipp,
klapp, klipp, klapp!"
\include "end.ily"
Am "anderen Ende" sind die Ausgabeproduktionsdateien, im Moment einfach für ein Buch und einzelBlätter - für jedes Lied muß es ein Einzelblatt geben, wenn man Einzelblätter will, logisch. Im Buch werden mehrere Lieder zusammengefasst. Alle Ausgaben greifen auf die selben Eingaben zu. Das funktioniert auch soweit, ist ja auch nicht schwierig, weil der "Hauptcode" liegt in der Mitte.
Eine Produktionsdatei für "Es klappert die Mühle" ist hier:
\version "2.19.63"
\include "../layout/midi.ily"
\include "../layout/sheetA4.ily"
ShowTempo = ##t
ShowChords = ##t
\include "../scores/Score Es klappert die Muehle.ily"
\layout {
\bookOutputName "../_out/Es klappert die Muehle"
}
\ScoreSheetEsKlappertDieMuehle
\StanzaTrailingEsKlappertDieMuehleII
\pieceseparator
Die "Mitte" ist so gestaltet, daß ein "Block" das Layout (Schrift, Papiergröße, Ränder, Zweiseitig, Notengröße, ...) bereitstellt, dieser Block ist nur abhängig von der Produktionsdatei und einer den Score und die angehängten Strophen als Markup erzeugt. Mit dem Score bin ich zufrieden.
Die Strophen machen mich verrückt. Also nicht die Lyrics (die unter die Stimme kommt), nein die Markup Strophen, die unter das gesamte Lied kommen.
Ich habe mich inzwischen dafür entschieden, daß jede Strophe als String eingegeben wird. Ich hab ne Scheme Routine "str2mlist ", die mir aus diesem String Markups erzeugt.
(define (str2mlist argIn)
(define resultMarkupList (list))
(define arg (string))
(define lineList (list))
(set! arg argIn)
(set! lineList (string-split arg #\newline))
(for-each
(lambda (line)
(set! resultMarkupList
(append resultMarkupList (list (make-simple-markup line)))))
lineList)
resultMarkupList)
Ich hätte auch eine andere, die mir jedes Newline verdoppelt, aber mit \wordwrap-string war ich nicht zufrieden. Im Prinzip bin ich mit den Möglichkeiten von jeglichem Markup nicht zufrieden.
Ich sehe daß man damit richtig gute Sachen machen kann, wenn man sich auf konkrete Eingabe bezieht.
Ich will aber bei unbekannter Eingabe eine Ausgabe erreichen, die Rahmenbedingungen erfüllt. Und da auch noch je nach Produktionszweig verschiedene.
Konkrete Fragen werde ich in nachfolgenden Postings stellen.