[ << Trucar la salida ] | [Arriba][Índice general][Índice][ ? ] | [ Plantillas >> ] | ||
[ < Otras fuentes de información ] | [ Subir : Trucajes adicionales ] | [ Plantillas > ] |
4.7.5 Trucos avanzados con Scheme
Aunque es posible hacer muchas cosas con las instrucciones
\override
y \tweak
, tenemos una forma incluso más
poderosa de modificar el funcionamiento de LilyPond, a través de un
interface programable hacia las operaciones internas de LilyPond. Se
puede incorporar código escrito en el lenguaje de programación Scheme,
directamente en el mecanismo de funcionamiento de LilyPond. Por
supuesto, para hacer esto se necesitan al menos unos conocimientos
básicos de programación en Scheme, y damos una introducción en el
Tutorial de Scheme.
Como ejemplo que ilustra una de las muchas posibilidades, en lugar de dar a una propiedad un valor constante, se puede establecer al resultado de un procedimiento de Scheme que se invoca cada vez que LilyPond accede a esta propiedad. La propiedad se puede establecer dinámicamente a un valor determinado por el procedimiento en el momento en que se invoca. En este ejemplo damos a las cabezas de las notas un color que depende de su posición dentro del pentagrama.
#(define (color-notehead grob) "Color the notehead according to its position on the staff." (let ((mod-position (modulo (ly:grob-property grob 'staff-position) 7))) (case mod-position ;; Return rainbow colors ((1) (x11-color 'red )) ; for C ((2) (x11-color 'orange )) ; for D ((3) (x11-color 'yellow )) ; for E ((4) (x11-color 'green )) ; for F ((5) (x11-color 'blue )) ; for G ((6) (x11-color 'purple )) ; for A ((0) (x11-color 'violet )) ; for B ))) \relative c' { % Arrange to obtain color from color-notehead procedure \override NoteHead.color = #color-notehead a2 b | c2 d | e2 f | g2 a | }
Se pueden encontrar ejemplos adicionales que muestran la utilización de estos interfaces programables, en Funciones de callback.
[ << Trucar la salida ] | [Arriba][Índice general][Índice][ ? ] | [ Plantillas >> ] | ||
[ < Otras fuentes de información ] | [ Subir : Trucajes adicionales ] | [ Plantillas > ] |
Otros idiomas: English, česky, deutsch, français, italiano, 日本語, nederlands.
Acerca de la selección automática del idioma.