LilyPond Handbuch zum Lernen: 4.6.3 Globale Formatierung

### 4.6.3 Globale Formatierung

Die Ausgabe von LilyPond kann sehr stark verändert werden, siehe zu Einzelheiten Die Ausgabe verändern. Aber was ist, wenn man mehrere Eingabedateien hat, die die gleichen Anpassungen erfahren sollen? Oder wenn Sie einfach nur die Anpassungen von der eigentlichen Musik trennen wollen? Das lässt sich recht einfach erreichen.

Schauen wir uns ein Beispiel an. Sorgen Sie sich nicht, wenn Sie den Abschnitt mit den vielen `#()` nicht verstehen. Das wird erklärt in Fortgeschrittene Optimierungen mit Scheme.

>     mpdolce =
>     #(make-dynamic-script
>       (markup #:hspace 0
>               #:translate '(5 . 0)
>               #:line (#:dynamic "mp"
>                       #:text #:italic "dolce")))

>     inst =
>     #(define-music-function
>          (parser location string)
>          (string?)
>        (make-music
>         'TextScriptEvent
>         'direction UP
>         'text (markup #:bold (#:box string))))

>     \relative c'' {
>       \tempo 4=50
>       a4.\mpdolce d8 cis4--\glissando a |
>       b4 bes a2 |
>       \inst "Clarinet"
>       cis4.\< d8 e4 fis |
>       g8(\! fis)-. e( d)-. cis2 |
>     }

Es gibt einige Probleme mit sich überschneidender Ausgabe, die wird zurechtgerückt mit den Techniken von Verschieben von Objekten. Aber jetzt zu den Definitionen von `mpdolce` und `inst`. Sie erstellen die gewünschte Ausgabe, aber wir wollen sie vielleicht auch in einem anderen Stück verwenden. Wir könnten sie immer wieder kopieren und oben in jedes Stück einfügen, aber das ist sehr aufwändig. Dadurch werden die Definitionen auch in der Eingabedatei belassen, und ich finde diese `#()` irgendwie hässlich. Verstecken wir sie also:

>     %%% in Datei "definitions.ily" speichern
>     mpdolce =
>     #(make-dynamic-script
>       (markup #:hspace 0
>               #:translate '(5 . 0)
>               #:line (#:dynamic "mp"
>                       #:text #:italic "dolce")))

>     inst =
>     #(define-music-function
>          (parser location string)
>          (string?)
>        (make-music
>         'TextScriptEvent
>         'direction UP
>         'text (markup #:bold (#:box string))))

Diese Datei wir mit dem `\include`-Befehl ziemlich weit oben in der Datei eingefügt. (Die Erweiterung ‘`.ily`’ wird benutzt, um diese Datei als eine eingefügte, inkludierte zu kennzeichnen, die man nicht alleinstehend kompilieren kann.) Jetzt ändern wir die Noten (in der Datei ‘`music.ly`’).

>     \include "definitions.ily"

>     \relative c'' {
>       \tempo 4=50
>       a4.\mpdolce d8 cis4--\glissando a |
>       b4 bes a2 |
>       \inst "Clarinet"
>       cis4.\< d8 e4 fis |
>       g8(\! fis)-. e( d)-. cis2 |
>     }

Das sieht schon besser aus, aber einige Änderungen könnten wir noch vornehmen. Das Glissando ist kaum sichtbar, machen wir es also etwas dicker und näher an den Notenkopf. Die Metronombezeichnung soll über dem Schlüssel stehen, anstatt über der ersten Note. Und schließlich mag mein Kompositionsprofessor keine „C“-Taktangaben, das ändern wir also in „4/4“.

Ändern Sie jetzt jedoch nicht ‘`music.ly`’. Ändern Sie die ‘`definitions.ily`’ mit dem Folgenden:

>     %%%  definitions.ily
>     mpdolce =
>     #(make-dynamic-script
>       (markup #:hspace 0
>               #:translate '(5 . 0)
>               #:line (#:dynamic "mp"
>                       #:text #:italic "dolce")))

>     inst =
>     #(define-music-function
>          (parser location string)
>          (string?)
>        (make-music
>         'TextScriptEvent
>         'direction UP
>         'text (markup #:bold (#:box string))))

>     \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 besser aus! Aber nehmen wir an, Ich will dieses Stück publizieren. Mein Professor mag die „C“-Taktangabe nicht, mir gefällt sie aber sehr gut. Kopieren wir also die Datei ‘`definitions.ily`’ nach ‘`web-publish.ily`’ und verändern diese. Weil die Noten als PDF auf dem Monitor dargestellt werden sollen, wird auch die Notengröße global geändert.

>     %%%  definitions.ily
>     mpdolce =
>     #(make-dynamic-script
>       (markup #:hspace 0
>               #:translate '(5 . 0)
>               #:line (#:dynamic "mp"
>                       #:text #:italic "dolce")))

>     inst =
>     #(define-music-function
>          (parser location string)
>          (string?)
>        (make-music
>         'TextScriptEvent
>         'direction UP
>         'text (markup #:bold (#:box string))))

>     #(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 Eingabedatei muss jetzt nur noch die Zeile `\include "definitions.ily"` mit `\include "web-publish.ily"` ersetzt werden. Das könnte man natürlich noch besser machen. Es könnte eine Datei ‘`definitions.ily`’ mit allen Definitionen (also `mpdolce` und `inst`) geben, eine Datei ‘`web-publish.ily`’, die nur die `\layout`-Veränderung enthält und eine Datei ‘`university.ily`’, die nur die Prozedur enthält, die Ausgabe meinem Professor angenehm zu machen. Der Anfang von ‘`music.ly`’ würde dann folgendermaßen aussehen:

>     \include "definitions.ily"

>     %%%  nur eine der zwei Zeilen auskommentieren!
>     \include "web-publish.ily"
>     %\include "university.ily"

Diese Herangehensweise kann auch schon nützlich sein, wenn man nur ein paar Stimmen schreiben will. Ich habe eine ganze Anzahl an „Stylesheets“ für meine Projekte. Ich fange jede Datei mit der Zeile `\include "../global.ily"` an, die etwa folgendes einbindet:

>     %%%   global.ily
>     \version "2.14.2"

>     #(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"

Andere Sprachen: English, česky, español, français, italiano, 日本語, nederlands.

#### LilyPond – Learning Manual