voriges: Vermeiden von Optimierungen durch langsamere Übersetzung, aufwärts: Weitere Optimierungen


4.7.5 Fortgeschrittene Optimierungen mit Scheme

Es wurde schon gezeigt, wie die LilyPond-Ausgabe sehr stark verändert werden kann, indem man Befehle wie \override TextScript #'extra-offset = ( 1 . -1) benutzt. Aber noch mehr Einfluss auf die Formatierung kann durch den Einsatz von Scheme genommen werden. Eine vollständige Erklärung findet sich in der Scheme-Übung und den Schnittstellen für Programmierer.

Scheme kann benutzt werden, um einfach nur Befehle zu „überschreiben“ (\override):

     
     AbstandText = #(define-music-function (parser location padding) (number?)
     #{
       \once \override TextScript #'padding = #$padding
     #})
     
     \relative c''' {
       c4^"piu mosso" b a b
       \AbstandText #1.8
       c4^"piu mosso" d e f
       \AbstandText #2.6
       c4^"piu mosso" fis a g
     }

[image of music]

Hiermit können aber auch neue Befehle erstellt werden:

     
     tempoZeichen = #(define-music-function (parser location padding marktext)
                                         (number? string?)
     #{
       \once \override Score . RehearsalMark #'padding = $padding
       \once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0)
       \mark \markup { \bold $marktext }
     #})
     
     \relative c'' {
       c2 e
       \tempoZeichen #3.0 #"Allegro"
       g c
     }

[image of music]

Sogar ganze musikalische Ausdrücke können eingefügt werden:

     
     Muster = #(define-music-function (parser location x y) (ly:music? ly:music?)
     #{
       $x e8 a b $y b a e
     #})
     
     \relative c''{
       \Muster c8 c8\f
       \Muster {d16 dis} { ais16-> b\p }
     }

[image of music]

Diese Seite ist für LilyPond-2.11.58 (Entwicklungszweig).

Fehler bitte an http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.bugs melden.

Ihre Vorschläge für die Dokumentation sind willkommen.

Andere Sprachen: English, français, español.