5.6.1 Syntax der Ersetzungsfunktion

Es ist einfach eine Funktion zu erstellen, die eine Variable in LilyPond-Code umwandelt. Die generelle Form dieser Funktionen ist:

Funktion =
#(define-music-function
     (Arg1 Arg2 …)
     (Typ1? Typ2? …)
   #{
     …Noten…
   #})

wobei

ArgNntes Argument
TypN?ein Scheme Typenprädikat, für das ArgN den Wert #t ausgibt.
…Noten…normale LilyPond-Eingabe, wobei $ (wenn nur LilyPond-Konstruktionen erlaubt sind) oder # (um es als Scheme-Wert oder Argument einer musikalischen Funktionen oder als Noten innerhalb von Notenlisten einzusetzen) benutzt wird, um Argumente zu referenzieren (etwa ‘$Arg1’).

Die parser und location-Argumente sind zwingend und werden in einigen fortgeschrittenen Situationen benutzt, wie sie im „Erweitern“-Handbuch beschrieben werden (siehe Musikalische Funktionen). In Ersetzungsfunktionen gehen Sie einfach sicher, dass sie die beiden Wörter auch mit aufnehmen.

Die Liste der Typenprädikate ist auch notwendig. Einige der häufigsten Typenprädikate, die in musikalischen Funktionen benutzt werden, sind:

boolean?
cheap-list?  (benutze anstelle von ‚list?‘ für schnelleres Kompilieren)
ly:duration?
ly:music?
ly:pitch?
markup?
number?
pair?
string?
symbol?

Eine Liste aller Typprädikate findet sich unter Vordefinierte Typprädikate. Eigene Typprädikate sind auch erlaubt.

Siehe auch

Notationsreferenz: Vordefinierte Typprädikate.

Erweitern: Musikalische Funktionen.

Installierte Dateien: ‘lily/music-scheme.cc’, ‘scm/c++.scm’, ‘scm/lily.scm’.


LilyPond – Notationsreferenz v2.23.82 (Entwicklungszweig).