| [ < ] | [ > ] | [ << ] | [ Nach oben ] | [ >> ] | [Anfang] | [Inhalt] | [Index] | [ ? ] |
@translationof Using music functions
Wenn Optimierungen von unterschiedlichen musikalischen Ausdrücken wiederverwendet werden sollen, bietet es sich oft an, den „Optimierungsanteil“ einer musikalischen Funktion zu erstellen. In diesem Abschnitt sollen nur Ersetzungen erklärt werden, wo es darum geht, eine Variable mit einem Stück LilyPond-Code zu ersetzen. Andere komplexere Funktionen werden beschrieben in (extending)Musikalische Funktionen in Abschnitt ‘Musikalische Funktionen’ in Extending.
| 5.6.1 Syntax der Ersetzungsfunktion | ||
| 5.6.2 Beispiele der Ersetzungsfunktionen |
| [ < ] | [ > ] | [ << ] | [ Nach oben ] | [ >> ] | [Anfang] | [Inhalt] | [Index] | [ ? ] |
@translationof Substitution function syntax
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
ArgN | ntes 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
(extending)Musikalische Funktionen in Abschnitt ‘Musikalische Funktionen’ in Extending). 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.
Notationsreferenz: Vordefinierte Typprädikate.
Erweitern: (extending)Musikalische Funktionen in Abschnitt ‘Musikalische Funktionen’ in Extending.
Installierte Dateien: ‘lily/music-scheme.cc’, ‘scm/c++.scm’, ‘scm/lily.scm’.
| [ < ] | [ > ] | [ << ] | [ Nach oben ] | [ >> ] | [Anfang] | [Inhalt] | [Index] | [ ? ] |
@translationof Substitution function examples
Dieser Abschnitt zeigt einige Beispiele von Ersetzungsfunktionen. Sie sind nicht vollständig, sondern sollen einige der Möglichkeiten von einfachen Ersetzungsfunktionen aufzeigen.
Im ersten Beispiel wird eine Funktione definiert, die
das Verschieben von TextScript erleichtert:
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 }
Neben Zahlen können auch musikalische Ausdrücke wie Noten als Argumente für musikalische Funktionen eingesetzt werden:
custosNote = #(define-music-function (note) (ly:music?) #{ \tweak NoteHead.stencil #ly:text-interface::print \tweak NoteHead.text \markup \musicglyph "custodes.mensural.u0" \tweak Stem.stencil ##f #note #}) \relative { c'4 d e f \custosNote g }
Ersetzungsfunktionen mit mehrfachen Argumenten können definiert werden:
tempoPadded = #(define-music-function (padding tempotext) (number? markup?) #{ \once \override Score.MetronomeMark.padding = #padding \tempo \markup { \bold #tempotext } #}) \relative { \tempo \markup { "Low tempo" } c''4 d e f g1 \tempoPadded #4.0 "High tempo" g4 f e d c1 }
| [ < ] | [ > ] | [ << ] | [ Nach oben ] | [ >> ] |
Dieses Dokument wurde erzeugt von gub am 13. Juli 2020 durch texi2html 1.82.
Andere Sprachen: English, català, español, français, italiano, 日本語.
Über die automatische Sprachauswahl.