[ < ] [ > ]   [ << ] [ Nach oben ] [ >> ]         [Anfang] [Inhalt] [Index] [ ? ]

2.6 Kontexte für Programmierer

@translationof Contexts for programmers


[ < ] [ > ]   [ << ] [ Nach oben ] [ >> ]         [Anfang] [Inhalt] [Index] [ ? ]

2.6.1 Kontextauswertung

@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] [ ? ]

2.6.2 Eine Funktion auf alle Layout-Objekte anwenden

@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:

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
}

[image of music]


[ < ] [ > ]   [ << ] [ 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.