| [ < ] | [ > ] | [ << ] | [ Nach oben ] | [ >> ] | [Anfang] | [Inhalt] | [Index] | [ ? ] |
@translationof Contexts for programmers
| 2.6.1 Kontextauswertung | ||
| 2.6.2 Eine Funktion auf alle Layout-Objekte anwenden |
| [ < ] | [ > ] | [ << ] | [ Nach oben ] | [ >> ] | [Anfang] | [Inhalt] | [Index] | [ ? ] |
@translationof Context evaluation
Kontexte können während ihrer Interpretation mit Scheme-Code modifiziert werden. Die Syntax hierfür ist
\applyContext function |
function sollte eine Scheme-Funktion sein, die ein einziges Argument braucht, welches der Kontext ist, auf den sie ausgeführt werden soll. Der folgende Code schreibt die aktuelle Taktzahl in die Standardausgabe während der Kompilation.
\applyContext
#(lambda (x)
(format #t "\nWe were called in barnumber ~a.\n"
(ly:context-property x 'currentBarNumber)))
|
| [ < ] | [ > ] | [ << ] | [ Nach oben ] | [ >> ] | [Anfang] | [Inhalt] | [Index] | [ ? ] |
@translationof Running a function on all layout objects
Der vielfältigste Weg, ein Objekt zu beeinflussen, ist
\applyOutput. Das funktioniert, indem ein musikalisches
Ereignis in den angegebenen Kontext eingefügt wird
(
(internals)ApplyOutputEvent in Abschnitt ‘ApplyOutputEvent’ in Referenz der Interna). Die Syntax lautet:
\applyOutput Kontext proc |
wobei proc eine Scheme-Funktion ist, die drei Argumente benötigt.
Während der Interpretation wird die Funktion proc für
jedes Layoutobjekt aufgerufen, dass im Kontext Kontext
vorgefunden wird, und zwar mit folgenden Argumenten:
\applyOutput bearbeitet wird.
Zusätzlich findet sich der Grund für das Layoutobjekt, etwa
der musikalische Ausdruck oder das Objekt, das für seine Erstellung
verantwortlich war, in der Objekteigenschaft cause.
Für einen Notenkopf beispielsweise ist das ein
(internals)NoteHead in Abschnitt ‘NoteHead’ in Referenz der Interna-Ereignis, und für einen Notenhals ist es
ein
(internals)Stem in Abschnitt ‘Stem’ in Referenz der Interna-Objekt.
Hier ist eine Funktion, die mit \applyOutput benutzt
werden kann; sie macht Notenköpfe auf und neben der Mittellinie unsichtbar:
#(define (blanker grob grob-origin context) (if (and (memq 'note-head-interface (ly:grob-interfaces grob)) (< (abs (ly:grob-property grob 'staff-position)) 2)) (set! (ly:grob-property grob 'transparent) #t))) \relative { a'4 e8 <<\applyOutput Voice #blanker a c d>> b2 }
| [ < ] | [ > ] | [ << ] | [ Nach oben ] | [ >> ] |
Dieses Dokument wurde erzeugt von gub am 13. Juli 2020 durch texi2html 1.82.
Andere Sprachen: English, español, français.
Über die automatische Sprachauswahl.