2.1.1 Syntax der musikalischen Funktionen
Die allgemeine Form von musikalischen Funktionen ist:
function =
#(define-music-function
(parser location Arg1 Arg2 …)
(Typ1? Typ2? …)
Noten)
wobei
| ArgN | das nte Argument |
| TypN? | ein Scheme-Typenprädikat (engl. type predicate), für welches
ArgN #t ausgeben muss. Einige dieser Prädikate
werden durch den Parser gesondert erkannt, sodass die entsprechenden
Werte als LilyPond-Syntx gelesen werden und nicht als Scheme-Syntax.
Diese Prädikate sind gegenwärtig ly:music?, markup?, ly:pitch?
und ly:duration?. Nicht alle Kombinationen sind erlaubt:
man kann z. B. nicht eine Dauer nach den Noten suchen, denn Noten
können optional mit einer Dauer enden.
Wenn Sie wirklich einige dieser Elemente als Scheme- und nicht als
LilyPond-Ausdruck einsetzen wollen, können Sie sie in einen Aufruf
von ly:export einfügen. |
| ...Noten... | ein musikalischer Ausdruck, optional in Scheme geschrieben, mit allem
LilyPond-Code in Raute/geschweifte Klammer eingeschlossen
( #{…#} ). Innerhalb der LilyPond-Codeumgebungen
wird $ eingesetzt, um auf Funktionsargumente zu verweisen (etwa
‘$Arg1’), oder ein neuer Scheme-Ausdruck muss begonnen werden,
der die Funktionsargumente enthält (etwa ‘$(cons Arg1 Arg2)’). |
Eine Liste der möglichen Typenprädikate findet sich in Vordefinierte Typenprädikate. Durch den Benutzer definierte Typenprädikate sind auch erlaubt.
Siehe auch
Notationsreferenz: Vordefinierte Typenprädikate.
Installierte Dateien: ‘lily/music-scheme.cc’, ‘scm/c++.scm’, ‘scm/lily.scm’.
Andere Sprachen: English, español.
About automatic language selection.