Weiter: Alte Dateien aktualisieren, Zurück: Tipparbeit sparen durch Bezeichner und Funktionen, Nach oben: An LilyPond-Projekten arbeiten
Die Ausgabe, die LilyPond erstellt, kann sehr start modifiziert werden, siehe Die Ausgabe verändern für Einzelheiten. Aber wie kann man diese Änderungen auf eine ganze Serie von Dateien anwenden? Oder die Einstellungen von den Noten trennen? Das Verfahren ist ziemlich einfach.
Hier ist ein Beispiel. Es ist nicht schlimm, wenn Sie nicht auf
Anhieb die Abschnitte mit den ganzen #() verstehen. Das
wird im Kapitel Fortgeschrittene Optimierungen mit Scheme erklärt.
mpdolce = #(make-dynamic-script (markup #:hspace 1 #:translate (cons 5 0)
#:line(#:dynamic "mp" #:text #:italic "dolce" )))
tempoMark = #(define-music-function (parser location markp) (string?)
#{
\once \override Score . RehearsalMark #'self-alignment-X = #left
\once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0)
\mark \markup { \bold $markp }
#})
\relative c'' {
\tempo 4=50
a4.\mpdolce d8 cis4--\glissando a | b4 bes a2
\tempoMark "Poco piu mosso"
cis4.\< d8 e4 fis | g8(\! fis)-. e( d)-. cis2
}
Es treten einige Probleme mit überlappenden Symbolen auf. Sie
werden beseitigt mit den Tricks aus dem Kapitel Verschieben von Objekten.
Aber auch die mpdolce und tempoMark-Defintiionen
können verbessert werden. Sie produzieren das Ergebnis, das
gewünscht ist, aber es wäre schön, sie auch in anderen Stücken
verwenden zu könen. Man könnte sie natürlich einfach kopieren
und in die anderen Dateien einfügen, aber das ist lästig. Die
Defintionen verbleiben auch in der Notendatei und diese #()
sehen nicht wirklich schön aus. Sie sollen in einer anderen
Datei versteckt werden:
%%% speichern in einer Datei "definitions.ly"
mpdolce = #(make-dynamic-script (markup #:hspace 1 #:translate (cons 5 0)
#:line(#:dynamic "mp" #:text #:italic "dolce" )))
tempoMark = #(define-music-function (parser location markp) (string?)
#{
\once \override Score . RehearsalMark #'self-alignment-X = #left
\once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0)
\mark \markup { \bold $markp }
#})
Jetzt muss natürlich noch die Notendatei angepasst werden (gespeichert unter dem Namen "music.ly").
\include "definitions.ly"
\relative c'' {
\tempo 4=50
a4.\mpdolce d8 cis4--\glissando a | b4 bes a2
\once \override Score.RehearsalMark #'padding = #2.0
\tempoMark "Poco piu mosso"
cis4.\< d8 e4 fis | g8(\! fis)-. e( d)-. cis2
}
Das sieht schon besser, aber es sind noch einige Verbesserungen möglich. Das Glissando ist schwer zu sehen, also soll es etwas dicker erscheinen und dichter an den Notenköpfen gesetzt werden. Das Metronom-Zeichen soll über dem Schlüssel erscheinen, nicht über der ersten Note. Und schließlich kann unser Kompositionsprofessor „C“-Taktangaben überhaupt nicht leiden, also müssen sie in „4/4“ verändert werden.
Diese Veränderungen sollten Sie aber nicht in der music.ly-Datei vornehmen. Ersetzen Sie die definitions.ly-Datei hiermit:
%%% definitions.ly
mpdolce = #(make-dynamic-script (markup #:hspace 1 #:translate (cons 5 0)
#:line( #:dynamic "mp" #:text #:italic "dolce" )))
tempoMark = #(define-music-function (parser location markp) (string?)
#{
\once \override Score . RehearsalMark #'self-alignment-X = #left
\once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0)
\mark \markup { \bold $markp }
#})
\layout{
\context { \Score
\override MetronomeMark #'extra-offset = #'(-9 . 0)
\override MetronomeMark #'padding = #'3
}
\context { \Staff
\override TimeSignature #'style = #'numbered
}
\context { \Voice
\override Glissando #'thickness = #3
\override Glissando #'gap = #0.1
}
}
Das sieht schon besser aus! Aber angenommen ich möchte dieses Stück jetzt veröffentlichen. Mein Kompositionsprofessor mag die „C“-Taktangaben nicht, aber ich finde sie irgendwie schöner. Also kopiere ich die Datei definitions.ly nach web-publish.ly und verändere diese. Weil die Noten in einem Pdf auf dem Bilschirm angezeigt werden sollen, bietet es sich auch an, die gesamte Ausgabe zu vergrößern.
%%% definitions.ly
mpdolce = #(make-dynamic-script (markup #:hspace 1 #:translate (cons 5 0)
#:line( #:dynamic "mp" #:text #:italic "dolce" )))
tempoMark = #(define-music-function (parser location markp) (string?)
#{
\once \override Score . RehearsalMark #'self-alignment-X = #left
\once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0)
\mark \markup { \bold $markp }
#})
#(set-global-staff-size 23)
\layout{
\context { \Score
\override MetronomeMark #'extra-offset = #'(-9 . 0)
\override MetronomeMark #'padding = #'3
}
\context { \Staff
}
\context { \Voice
\override Glissando #'thickness = #3
\override Glissando #'gap = #0.1
}
}
In der Notendatei muss jetzt nur noch \include "definitions.ly"
durch \include "web-publish.ly" ausgetauscht werden.
Das könnte man natürlich noch weiter vereinfachen. Also
eine Datei definitions.ly, die nur die Definitionen
von mpdolce und tempoMark enthält, eine Datei
web-publish.ly, die alle die Änderungen für den
\layout-Abschnitt enthält und eine Datei university.ly
für eine Ausgabe, die den Wünschen des Professors entspricht.
Der Anfang der music.ly-Datei würde dann so aussehen:
\include "definitions.ly" %%% Nur eine der beiden Zeilen auskommentieren! \include "web-publish.ly" %\include "university.ly"
Durch diese Herangehensweise kann auch bei der Erstellung
von nur einer Ausgabeversion Arbeit gespart werden. Ich
benutze ein halbes Dutzent verschidener Stilvorlagen
für meine Projekte. Jede Notationsdatei fängt an mit
\include "../global.ly", welches folgenden Inhalt hat:
%%% global.ly \version "2.11.15" #(ly:set-option 'point-and-click #f) \include "../init/init-defs.ly" \include "../init/init-layout.ly" \include "../init/init-headers.ly" \include "../init/init-paper.ly"
Weiter: Alte Dateien aktualisieren, Zurück: Tipparbeit sparen durch Bezeichner und Funktionen, Nach oben: An LilyPond-Projekten arbeiten
Diese Seite ist für LilyPond-2.11.31 (Entwicklungszweig).
Fehler bitte an http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.bugs melden.
Your suggestions for the documentation are welcome.