[ << Základní pojmy ] | [Top][Contents][Index] | [ Ladění výstupu >> ] |
[ < Vytvoření notového zápisu od základu ] | [ Up : Rozšíření příkladů ] | [ Notové zápisy a hlasy > ] |
4.4.4 Úspora psaní na stroji pomocí proměnných a funkcí
Bis jetzt wurde immer derartige Notation vorgestellt:
hornNotes = \relative { c''4 b dis c } \score { { \hornNotes } }
Sie können sich vorstellen, dass das etwa für minimalistische Musik sehr nützlich sein könnte:
fragmentA = \relative { a'4 a8. b16 } fragmentB = \relative { a'8. gis16 ees4 } violin = \new Staff { \fragmentA \fragmentA | \fragmentB \fragmentA | } \score { { \violin } }
Diese Variablen (die man auch als Makros oder Benutzer-Befehl bezeichnet) können jedoch auch für eigene Anpassungen eingesetzt werden:
dolce = \markup { \italic \bold dolce } padText = { \once \override TextScript.padding = #5.0 } fthenp=_\markup { \dynamic f \italic \small { 2nd } \hspace #0.1 dynamic p } violin = \relative { \repeat volta 2 { c''4._\dolce b8 a8 g a b \padText c4.^"hi there!" d8 e' f g d c,4.\fthenp b8 c4 c-. } } \score { { \violin } \layout{ragged-right=##t} }
Derartige Variablen sind offensichtlich sehr nützlich, zu Tipparbeit zu ersparen. Aber es lohnt sich schon, sie zu benutzen, wenn man sie nur einmal benutzen will, denn sie vereinfachen die Struktur einer Datei sehr stark. Hier das vorige Beispiel ohne jede Benutzung von Variablen. Es ist sehr viel schwerer lesbar, besonders die letzte Zeile.
violin = \relative { \repeat volta 2 { c''4._\markup { \italic \bold dolce } b8 a8 g a b \once \override TextScript.padding = #5.0 c4.^"hi there!" d8 e' f g d c,4.\markup { \dynamic f \italic \small { 2nd } \hspace #0.1 \dynamic p } b8 c4 c-. | } }
Bisher haben wir vor allem statische Ersetzungen betrachtet:
wenn LilyPond etwa \padText
sieht, wird es ersetzt mit
all dem Code, mit dem wir es definiert haben (also alles,
was sich rechts von padtext=
befindet).
LilyPond kann auch nicht-statische Ersetzungen bewältigen. Man kann sie sich als Funktionen vorstellen.
padText = #(define-music-function (padding) (number?) #{ \once \override TextScript.padding = $padding #}) \relative { c'''4^"piu mosso" b a b | \padText #1.8 c4^"piu mosso" d e f | \padText #2.6 c4^"piu mosso" fis a g | }
Die Benutzung von Variablen ist auch eine gute Möglichkeit,
Arbeit zu vermeiden, wenn sich einmal die Syntax von LilyPond
ändern sollte (siehe auch
with convert-ly
Updating old input files with convert-ly).
Wenn man eine einzige Definition hat (wie etwa \dolce
),
die für alle Vorkommen in der Notation eingesetzt wird, muss
man auch nur einmal diese Definition aktualisieren, anstatt
dass man sie in jeder ‘.ly’-Datei einzeln ändern müsste.
[ << Základní pojmy ] | [Top][Contents][Index] | [ Ladění výstupu >> ] |
[ < Vytvoření notového zápisu od základu ] | [ Up : Rozšíření příkladů ] | [ Notové zápisy a hlasy > ] |